Chain Engine Execution
The Chain Engine is a particular IXM Engine designed to run many IXM engines in series. For example, a client may wish to create a Forecast, generate Order Forecasts from that demand, and then convert the Order Forecasts at the earliest order point to Orders. One could expect a user to run these engines individually or expect the project team to build a custom process to combine these three engines. But fortunately, the Platform supports a generic way to tie these engine executions together.
See Platform documentation for more details…
https://docs.onenetwork.com/devnet/latest/platform-user-s-guide/planning/chain-engine
The Chain Engine uses a Chain Engine Configuration and Chain Engine Configuration Line to describe a particular chain. The Chain Engine Configuration defines the chain to be executed. The Chain Engine Configuration Line describes an individual engine to execute. The Chain Engine Line describes the engine with the full engine tuple (Module Prefix, Engine Name, and IXM Engine Config Name) as well as the parameters the user would enter on the Run Engine UI (plan start date, scenario name, etc.).
The parameters are described via a JSON String, so it’s a little bit of a trick to derive the proper string. The easiest way to do this is to place a break point on the Task Generator or Writer (some engines may process parameters in the Factory so you may need to move a step back) and see the values passed in from the UI.
It’s easiest to express the parameters as a set of strings or values similar to if it was called from JMX Console. Earlier in this document, the issue is described in more detail. But basically, model links like Item will pass an ID and Display Name if called from the Run Engine UI. This is difficult to use because the person writing the configuration must know the item’s ID. This also means it's difficult to transfer the config to different instances - those IDs will change. If the Engine supports being called from the JMX Console, then it only passes String names – the name of the item. The engine must find the ID of the Item before it can use it in earnest. The writer for the config only passes the name.
The ChainEngineConfig model is used to capture the information about the IXM engines which need to be executed. ChainEngineConfig is a two-level model, with parent ChainEnginConfig and child ChainEngineConfigLine.
Table 18.1. ChainEngineConfig Fields
Field |
Description |
Enterprise |
Enterprise that owns the engine chain configuration. (KEY field) |
Name |
Name of the engine chain. (KEY field) |
Table 18.2. ChainEngineConfigLine Fields
Field |
Description |
ModulePrefix |
Used as part of identification key for the engine (e.g. RPL, SCC, OMS). (KEY field) |
EngineName |
Engine Name used as part of identification for the engine. (KEY field) |
ConfigName |
Configuration Name used as part of identification for the engine. Identifies the configuration in IXM_ENGINE_CONFIG. (KEY field) |
EngineRunOrder |
Lowest number runs first. Do not leave gaps, and do not reuse the same number. (KEY field) |
ConfigParams |
Engine-specific configuration parameters for the engine. |
EngineConfigDisplayName |
User-defined name for an engine for UI display purposes. |
You can populate ChainEngineConfig by using inbound interface PLT.ChainEngineConfig (v1.0), or by using the administrative UI. The admin UI can be plugged in UI Metamodel as follows:
<
WebActionRef
name
=
"ChainEngineConfigReport"
module
=
"PLT"
/>
Chain Engine Config Report
Chain Engine Config Detail
Edit Chain Engine Config Line