处理公开功能的变化
重用元素的好处之一是能够在一个地方(生产者模块)更改它们的实现和签名,并使其所有消费者模块从新实现中受益。
虽然在生产者模块中所做的一些更改会在运行时对消费者模块产生直接影响,但在其他情况下,消费者模块需要重新发布才能使用其依赖项的最新实现。
更改生产者模块中的功能
当您更改在生产者模块中公开的功能并发布更改时,OutSystems 会对所有消费者模块中的这些更改执行影响分析。
这些更改在运行时对消费者模块的影响取决于您执行的更改类型以及生产者模块和消费者之间的依赖类型。
当您更改生产者中的功能并发布更改后的模块时,运行时消费者模块中可能会发生以下情况之一:
-
对消费者没有影响:您在生产者中执行的更改不会在运行时对消费者模块产生影响,并且消费者会立即开始使用您的最新实现。示例:更改 Screen 的内容(弱依赖性)而不更改其签名。
-
过时的消费者:您在生产者模块中执行的更改与消费者兼容,这意味着消费者无需手动修复,但消费者现在运行的是生产者的过时版本。示例:更改公开的服务器操作(强依赖性)的逻辑而不更改其签名。
在这种情况下,运行时的消费者模块会继续使用生产者模块的先前逻辑,直到重新发布。消费者模块需要重新发布才能开始使用生产者模块的最新实现。不需要刷新生产者依赖,因为签名没有改变。
-
潜在不兼容的消费者:您对可能与消费者模块不兼容并导致运行时错误的公开元素的签名进行了更改。示例:将可选输入参数添加到公开的服务器操作或屏幕。
在这种情况下,需要重新发布消费者模块以验证所执行更改的兼容性。如果更改是兼容的,则消费者模块无需刷新生产者依赖项。
-
不兼容的消费者:您对与消费者模块不兼容的公开元素的签名进行了更改,可能会导致运行时错误。示例:暴露的元素不再设置为公共。
在这种情况下,消费者模块需要在 Service Studio 中刷新其生产者依赖项,必要时处理逻辑更改,然后重新发布。
处理消费者模块中的依赖关系
当您重用另一个模块的功能时,您的消费者模块依赖于该生产者模块。每次生产者模块更改公开元素的签名(例如元素名称、描述或输入/输出参数)时,您的模块都可能会受到这些更改的影响。刷新消费者模块中的依赖项将更新生产者公共元素的签名。
在“管理依赖项” 窗口中,您可以查看是否有任何依赖项更改了其公开元素的签名,并刷新依赖项以获取更新后的签名。
公开元素的签名可以通过以下方式之一更改:
- 元素的签名已修改,但更改与消费者模块已知的信息兼容。
- 元素的签名与消费者模块已知的信息不兼容。
- 缺少元素。
修改后的签名
公开元素的签名已更改,但对您的消费者模块没有影响,这意味着您不需要刷新依赖项。示例:将可选输入参数添加到服务器操作。已更改的元素在“管理依赖项”窗口中标有蓝色信息符号。
在这种情况下,您不需要刷新依赖项。如果您想在逻辑中使用最新版本的生产者签名,例如将值传递给新添加的可选输入参数,则只需刷新依赖项。
在生产者中进行的以下更改不会影响消费者模块:
| 设想 | 元素 |
|---|---|
| 添加可选输入参数 将强制输入参数更改为可选 删除输入参数 重新排序输入参数 | 服务器操作、服务操作、Web 阻止(仅限传统 Web)、Web 屏幕(仅限传统 Web)。 注意: 此场景不适用于移动和响应式 Web 应用程序中的块和屏幕。在移动或响应式 Web 应用程序中对块或屏幕的输入参数执行列出的操作之一时,元素的签名与消费者模块已知的信息不兼容。 |
| 添加输出参数 删除未使用的输出参数 | 服务器操作,服务操作 |
| 将强制属性更改为可选 删除未使用的属性 重新排序属性 | 实体(数据库和本地存储)、静态实体、结构 |
| 添加可选属性(任何数据类型) | 实体(数据库和本地存储)、静态实体 |
| 添加可选属性(仅限基本数据类型) | 结构 |
| 添加记录 删除未使用的记录 | 静态实体 |
| 改名 | 所有元素,实体属性、资源和脚本除外 |
| 变更说明 | 所有元素 |
不兼容的签名
公开元素的签名已更改,更改会影响您的消费者模块。示例:将强制输入参数添加到服务器操作。已更改的元素在“管理依赖项”窗口中标记为不兼容。
此更改对您的消费者模块的影响取决于对生产者的依赖类型:
在这两种情况下,您都需要刷新依赖项,使您的逻辑适应生产者的最新版本,并重新发布您的消费者模块。
缺少签名
先前公开的元素不再可用,这对您的消费者模块有影响。示例:从生产者模块中删除服务器操作。该元素在“管理依赖项”窗口中标记为缺失。
此更改对您的消费者模块的影响取决于对生产者的依赖类型:
在这两种情况下,您都需要刷新依赖项,从模块中删除元素,调整逻辑以适应生产者的最新版本,然后重新发布消费者模块。
此行为可能由以下情况之一引起:
- 该元素已从生产者模块中删除。
- 该元素不再设置为公共。
- 您连接到的 OutSystems 环境中不存在生产者模块。
- 您无权重用公开的元素。
刷新依赖
要刷新消费者模块中的依赖项,请执行以下操作:
-
打开“管理依赖项”窗口。
-
单击生产者名称附近的刷新图标以刷新单个依赖项,或使用 REFRESH ALL 按钮刷新所有依赖项。
-
如果生产者模块中的更改对您的模块造成了影响,您需要相应地调整您的逻辑,TrueChange 选项卡将突出显示您需要更新逻辑的情况。