Functional Coordination Helper Product
Certain situations require activity for the functional product during the fulfillment of the technical product rather than after fulfillment activities for the child products are complete. To allow the process components to run in parallel, you can create a functional coordinator helper product to perform activities related to the functional product.
Pattern Rationale
In an ideal situation, process components for a product action should not assume anything about the parent product that they are comprising. However, some fulfillment scenarios, such as provisioning an access connection, require some activity at the functional product level during fulfillment of a lengthy technical product.
These activities may include sending an intermediate status message to the submitting party which can only occur at the functional product level or updating inventory associated with the functional product.
Activities related to the parent product normally occur after the fulfillment activities (process components) for all of the child products are complete. However, in this case we need an activity for the functional product during the execution of fulfillment of the technical product. This means that the process components must run in parallel.
Pattern Realization
To address this situation, you can create a functional coordinator helper product to perform any activity related to the functional product during the fulfillment of technical products. The sequence number of the functional coordinator must be the same for all technical products so they can run in parallel.
To define relationships between functional and technical product process components, you can use intermediate milestones in the catalogue. In this way, communication between functional and technical products is brokered through the TIBCO Fulfillment Orchestration Suite rather than using direct communication.
Technical products simply trigger milestones when defined events occur (for example, receiving a planned message from the south) with no knowledge of any required functional product activity, such as sending a notification to the sending party.