Piper Push Cache Documentation Download Samples Contact  

Flows

Process flows or just flows for short are a set of tasks linked together to process a record in Piper. Each flow has an entry point or entry task that is called with the JSON record to be processed. As each task processes the JSON a link is selected to move to the next task. The task also determines what JSON document is passed to the next task. This continues until a task is called with no transitions.

Some of the terminology used besides flows, tasks, and links are boxes and actors. A box is synonym for a JSON document. It also has another JSON element that identifies where the record is from. The box also contains a tracking identifier for following a record as it moves through a flow. Much of this is transparent but some error messages may refer to those elements. A task receives boxes and ships boxes to the next task according to the link selected. Actors are the components of a task that performs the processing specific to the task.

In Piper flows are associated with a group. Once a record is added to a group the flow for the group is started with the record.

There are some built in flows. They are:

cache_only Places record in the cache only. (see: help cache_only)
chglog_only Write record to the change long only. (see: help chglog_only)
chglog_cache Writes record to the change log and addes it to the cache. (see help chglog_cache)
ignore Ignores the record and does nothing with it.

The flows are defined by JSON files. These files are placed in a separate directory and the name of the flow is used to determine the file path to follow to load the flow file. The file names used for attempting a load are first the name of the flow then the name with a .flow suffix and finally the flow name with a .json suffix. More details on the flow file format are available at the flow_config help topic.

There are a number of built in actors. These define how a task behaves. The built in task actors are:

async Adds a thread to the flow. (see help actor_async)
cache Places a record in the cache. (see help actor_cache)
chglog Writes a record to the change log. (see help actor_chglog)
nats_publish Publishes a NATS message. (see help actor_nats)
split Allows parallel asynchronous paths. (see help actor_split)
join Joins parallel paths back into one. (see help actor_join)
switch Evaluates expressions on each brach until one match and then follows that link. (see help actor_switch)
spawn Spawns a new process if needed and sends the JSON box to the new process. Replies are used to select a transition to the next task.. (see help actor_spawn)
remote Sends the JSON box to the remote process. Replies are used to select a transition to the next. (see help actor_remote)
http Available in a future release. (see help actor_http)
transform Available in a future release. (see help actor_transform)