Splitting of Applications - Xyna-Factory/xyna GitHub Wiki

Application splitting scenarios

At specific points in a projects life-cycle, the splitting of an application into multiple applications (= modules) might become necessary. Usually, large projects perform splitting due to one of the following reasons.

  • Reducing project complexity: Functional separation, splitting of independent or hierarchical components
  • Independent versioning: Parts of the project should be upgraded/versioned separately
  • Separation of responsibility: Definition of clear responsibilities within multiple teams working on the project e.g. joint modeling approach between customer and supplier
In general, a good starting point for splitting an application is to look at
  • Generated XMOM data types from XSD
  • Interface definitions
  • Functional components (e.g. protocol implementations)

Splitting procedure

A typical splitting procedure: (c.f. figure 1) The example starts with a monolytic application My Application in version 1.0 and assumes, that it contains objects representing an interface that should be separated into the dedicated application My Interface given the version number 0.9.

However, the first two steps are optional, since the starting point might also be an existing workspace.

  1. Import the external application into Xyna Factory via the Factory Manager by clicking Import Application in the Applications section.
  2. Click Load Application into Workspace in the Workspaces section. Preferably use a newly created Workspace in order to avoid any conflicts with existing objects.
  3. Create a new Application Definition My Interface in the workspace. The workspace now contains two Application Definitions: My Application and My Interface. Add all entities (e.g. workflows, datatypes, trigger, filter, etc.) that should be separated from the original application.
  4. Build the new Application Version My Interface 0.9.
  5. Link the new Application My Interface Version 0.9 to the workspace as a required application by managing the workspace's Required Contexts.
  6. Conflicts will be reported since objects are now duplicated in the workspace and in the linked Application. Remove conflicts by using the delete option in the conflict report. Simultaneously, the original application definition of My Application has also changed, since the objects are no longer part of the workspace. Finally, the My Interface Application needs to be linked to the Application Definition of My Application as well.
After the procedure, the interface is separated as the Application My Interface. Work can continue within the workspace.

Delivery of projects consisting of multiple applications

To create a delivery item of a project, Applications can be exported to a delivery item. It is important to notice, that dependent applications need to be exported separately. They will not be automatically included in the exported Application. It is possible to update only parts of the project by updating specific Applications. In this case, the dependency on the target Xyna Factoy machine needs to be manually relinked to the new Application in order to switch to the upgraded version.

⚠️ **GitHub.com Fallback** ⚠️