Skip to main content

In developer studio when we have used @DynamicComponentDependency XXX in a .projection or .client file, from where does it finds out that the given component is installed or not.

In .plsvc and .plsql files, when you have @DynamicComponentDependency XXX it adds the condition $IF Component_XXX_SYS.INSTALLED $THEN to the code.

But how does this work for .client and .projection file? Does the Developer Studio looks at somewhere like solutionSet.yaml and decide whether to add that code during the Code Generation step? Or does it look up somewhere else?

My understanding:  Within the FNDBAS folder is the SolutionSet.Yaml.  Then there is the deploy.ini in each component folder that sets up either STATIC or DYNAMIC  relations to other components.  

If its fully set up in there, it might still be good to have the call outs.  The components  are deployed in a certain order, and items withing the dynamic dependency are pulled out and redeployed after everything else has been done.


Hi ​@MadurangaJ 

 

Solution Set is a concept introduced in IFS Cloud being a simple configuration which defines what components should be enabled or disabled from the whole IFS component suite. Any active Solution Set configuration will simply act as a filter and, show and/or Code Generate the enabled components and remove and/or not Code Generate the disabled components

The whole impact of a Solution Set definition is seen first when we start to code generate IFS Cloud. Components that are disabled (false) will not be shown in the Projects Navigator and therefore not being possible to code generate. For components that are enabled (true), there will also be a noticeable change during the code generation as the model files containing items marked with the DynamicComponentDependency attribute will check the component availability using the Solution Set definition. If the dependent component is disabled (or not listed in the SolutionSet), the result will be same as if the mentioned component was not physically available on disk. That means that the entire section below each DynamicComponentDependency annotation will be removed, not being part of the code generation.

 

Whereas the Deploy.ini file is used to specify dependencies among components. These dependencies can be either static or dynamic. 

Static Dependency

When there is a Static Dependency between two components

ExampleComponent 1 has a Static Dependency with Component 2.

Then Component 1 cannot function without the purchasing / installation of Component 2.

Dynamic Dependency

When there is a Dynamic Dependency between two components

Please refer to the following links to get more understanding on the connection between DynamicDependency and SolutionSets

 

https://docs.ifs.com/techdocs/25r1/060_development/050_development_tools/002_developer_studio/030_reference/950_dcd_and_conditional_compilation/?h=dynamiccomponentdependency#solution_sets_and_dynamic_dependency

 

https://docs.ifs.com/techdocs/25r1/060_development/050_development_tools/002_developer_studio/030_reference/900_solution_set/?h=#code_generation


Thank you Harshini for the comprehensive explanation.  This solves my issue! :)