General requirements and considerations

Data generation

Flows with activity nodes that produce or create output data must ensure that the same data is always accepted by the consumer of that data. For example:
  • The destination, such as FileStorage or FTP site should always enable the same file with same content to be created or overwritten.
  • The target of the WebService or WebCall, should always accept the same data being sent, possibly multiple times.
If the requirements are not met, the flow performs one of these actions prior to re-running the activity node:
  • Undo approach
    Undo the previous node execution:
    • Delete or remove the file created by the previous work unit execution.
    • Delete or cancel the transaction created by the previous execution.
  • Bypass approach

    You can put in place a flow logic to bypass the activity node that already generated data in the previous work unit execution.

Data consumption

Flows with activity nodes that consume, read, or get input data must ensure that the same data can always be generated by the producer of that data. For example:
  • Source file, such as FileStorage or FTP site should be persistent and unmodified. If the work unit is restarted, the file must still be available and have the same content.
  • Source data, such as the result of Landmark query or WebService call, must be the same for every call. Given the same query parameter or filter, the same data must be returned.

If the above requirements are not met, the flow performs this after the activity node finishes:

Save data approach: If the data volume is small, save a copy of the data that was retrieved in PfiWorkunitVariable as needed. Upon workunit restart, flow logic can be put in place to use the saved data and bypass the activity node.

If the incoming data is too large to store and the query cannot be re-run to retrieve the same data, the flow becomes non-restartable.

Miscellaneous

  • Capture restart number attempts (0 == first run, anything greater indicates it is in a restart run). Doing this would allow logic in branch nodes to check to see if there are existing records.
  • Create PfiWorkunitVariable variables for anything that needs to be persisted related to what the flow is doing. For example, request IDs made to third party vendor for background check data.

Situation that causes a flow to not be restartable

  • ION Inbound BOD processing
    • For example, processing message 1 fails due to a ZDT update. When the system comes back up, message 2 is processed successfully because it is next in queue, then IPA processes message 1, possibly overwriting subsequent changes from message 2.