How to Avoid Syndication Of Records Which Are In Workflow
This blog explains the step by step procedure of excluding the records which are in a workflow from being syndicated when the processing type of an outbound port is set to Automatic
Remote systems need to be fed with fresh master data to keep them up to date. This means New/Modified records need to be syndicated to the system from time to time. In order to achieve this requirement an automatic port can be configured which will syndicate the data to the concerned remote system and keep them populated with fresh data.
When the port’s processing type property is set to automatic and the processing interval is set to any of the following Continuous/Hourly/Daily/Weekly the port triggers the syndication as per the processing interval and syndicates the records to the remote systems, these syndicated records also might also include those records which were under process i.e. which were in a workflow. These records which are in workflow should be excluded during data syndication as this may lead to incomplete/incorrect data being fed to the remote systems as these records are still under process.
There are two cases which we need to consider
- When the record is in a Workflow and is checked out (The start step of the workflow has the checkout option set to “Yes”)
- When the record is in a Workflow but is not checked out (The start step of the workflow has the checkout option set to “No”).
Case 1: When the Record is in a workflow and is checked out
- Consider we have a workflow design as below
- The Step property of the Start step for the above workflow design has the “Check out records” option set to “Yes” as shown below.
- Login to syndicator.
- In the search parameter pane drill down to Free-Form Search.
- In the expressions property in free-form search write an expression as below. This will exclude the records which are checkout and will prevent them from being syndicated.
- In the Map Properties Tab select the “Suppress Unchanged Records” property. Save the map and assign it in the Outbound Port.
Now each time the syndication is Triggered the records which are in Workflow and checked out will be excluded from syndication based on our expression in Map.
Case 2: When the record is in a Workflow but is NOT checked out
Consider a scenario in which you are not checking out the records in the start step of the workflow. In this case we cannot use the expression as in case 1 because the record is not checked out.
- Login to console.
- Create a sub table of type Flat (In this case I have used the existing sub-table “Yes/No Indicator” as shown below).
- In the Main Table create a field called “Workflow Status” of type Lookup [Flat]. This field looks up into sub-table “Yes/No Indicator” as shown below.
- Load the repository with update indices
Data Manager Steps
- Login to the data manager
- Go to assignments tab and create two assignments on “Workflow Status” field as shown below.
- Assignment expressions.
- Select the current table as Workflow and create a workflow called Syndication and select any of the following Trigger Action’s Record Import/Record Update/Record Add (In this case I have selected all three trigger actions) and set the Autolaunch property as “Immediate” as shown below.
- Design the workflow in Ms Visio.
Workflow Steps in detail
- Start step of the workflow does not check out the record (Check out record option set to “No”).
- Assign step which is right after the start step has the Assignment “In Workflow” we created earlier. This will update the Workflow status Field value to “Yes”
- The second Assign step which is just before the Stop step has the Assignment “Out Of Workflow” we created earlier. This will update the Workflow status Field values to “No”
- Stop step has the Record Checkout option set to “None” since we did not check out records in start step.
- Login to syndicator
- In the search parameter pane, Free-form search write the expression in expressions property as show E
- In the Map Properties tab check the “Suppress Unchanged Records” property. Save the Map and assign it in the Outbound Port.
- Workflow is triggered when you add update or modify a record
- As soon as the workflow is triggered the Workflow Status field in the record is assigned the value “Yes” as per the Assign step and the step moves to process step.
- If a syndication event is triggered during the period when the record is still in process step, then syndicator will ignore the records whose workflow status field value is yes, as we have an expression written in the syndicators Map.
- Now once the process is complete and the record is sent to stop step the Workflow status field value changes to No because we have another assign step right before the Stop step.