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

images/download/attachments/144836368/chain_engine_config_report-version-1-modificationdate-1645138844000-api-v2.png

Chain Engine Config Detail

images/download/attachments/144836368/chain_engine_config_detail-version-1-modificationdate-1645138852000-api-v2.png

Edit Chain Engine Config Line

images/download/attachments/144836368/chain_engine_config_detail1-version-1-modificationdate-1645138859000-api-v2.png