When developing your OutSystems applications, elements are implemented and reused anywhere inside the same module. However, you can expose some elements in your module to be reused by other modules.
The module that implements and exposes functionality is the producer module. On the other hand, the module that reuses the exposed functionality is the consumer module. The functionality exposed by a producer module is considered as dependencies in the consumers.
Changes made in the producer module to the signature or implementation of the exposed elements may have impact in the consumer module. Check this topic to learn how the changes made in the producer in the exposed elements will impact the consumer modules.
Expose functionality to other modules
When you expose functionality to other modules of the environment, your module is the producer module. Most of the elements you create in the module, such as actions or entities, are not exposed by default. You have to make them Public in order to expose them to other modules.
To expose an element to other modules, do the following:
Set the element’s Public property to ‘Yes’:
Publish your module. After publishing your module, the public elements can be reused by other modules in the environment.
By definition, Service Actions will always be public to other modules, so you don’t need to set them public. This also happens for the elements exposed by Extensions.
Depending on the type of elements that you expose, OutSystems will generate a strong dependency or a weak dependency between your module and the consumer modules. Check this topic to understand the differences between strong and weak dependencies and how each element is exposed.
Reuse functionality from other modules
When you reuse functionality from other modules of the environment, your module is the consumer module.
To reuse elements from other modules, do the following:
Open the Manage Dependencies window.
Select the producer module and then select the element you want to use.
Press OK to make the element available in your module.
Use the element exposed by the producer as any other element in your module.
In the consumer module, you will see all the details you need to reuse the exposed element, such as the element name, the description or the input/output parameters - this is called the element’s signature. You will not be able to modify the exposed elements.