The following chapter will show you how the default process looks like and which workflows are involved. How does Workflows need to be configured and which parts needs or can be customized.
The default has 4 Workflows
Transform
The Transform recevies Events from Workers or other workflows. It prepares the Event and Fetches additional Data if needed. It also defines to which Targets-Systems the Object has to be delivered.
Process
This is the Dispatcher of the Events. It will Queue the given Object into the Target-Systems Queue. It will Requeue the Object for a single Target, if there is any problem. The Prozess is the Main Workflow, it is generic and is used system-wide.
Client
The Client gets Objects from the Queue and prepares them to be written to the Target-System. It will also create References in the Queue, if needed.
References
If an Object needs to Reference others, like Groupmemberships or Member of Roles.
The Transform Workflow is for each source different. It uses includes of “custom data fetch” and “validate data” to be generic. If this does not fit your needs feel free to change the Workflow itself.
The Transform receives a “Trigger” from a Queue or any other Workflow / Worker. It will then:
The Object can be added to the Requeue, if there is a problem. The Object can be ignored, if there is no need to sync it. You have to add “target” values for the process, or we will add the targets defined as env “TARGET”. Targets have to be comma delimited in the env. e.G: “ads1,txtout,others”
The Transform will add a Source State if States are enabled by env “STATES” set to true.
Controls:
Class: Class should be set to the Objectclass which is processed. E.G: user / group
Result.Data: The State Object of the Current Event, if State is used
The Process “dispatches” the current object to all the targets. the Targets should be queues. The channels are in the form of “ingrid.TARGET.queue”
If the Process is unable to reach a Target queue, it will requeue the object for the specific target only.
If a Queue is not available the Process will open an incident is env “INCIDENTS” is set to true.
The Process can be used Ingrid Wide. If you like you can also run multiple Processes. If you need to may start specific Processes for a Flow. Set the env “DEPLOYNAME” and configure a different input channel.
Controls:
Class: Class should be set to the Objectclass which is processed. E.G: user / group
Result.Data: The State Object of the Current Event, if State is used
Data: Copy from Request.Data
Controls:
Result: Copy from Request.Result
The Process has a Timeout of 5 Seconds for sending each Event. Queues should be used as Targets
Target Channel: The Channel used to send the Event for each Target is “ingrid.TARGET.queue”
The Client is Target System specific. It defines some generic implementation, but must be adepted for each Target System. Use includes where prossible. The Version 1 will have the generic part in it and “includes” every where, where system specific logic will be needed.
It features Audit if env “AUDIT” is set to true.
If the env “INCIDENTS” is set to true, it will open incidents, if it fails to perform operations on the target system.
If “STATE” env is true, it will maintain a state for the Target System.
Data: The Data to process
Controls:
Result: (States) State Object opf the Current Object
Class: Objectclass for Current Request e.G: user / group
TODO (This is a Mockup WF)
At the moment its custom implementation
Requeue a References for several time by return error.
You can add a deadletter channel to the queue to handle references, that could not be done.