Process Design Conventions

A process flow is a set of activities arranged in a sequence to perform a specific task(s). You must be well aware of designing Adeptia Processes using Process Designer.

A process flow design looks better and manageable when it is well documented and easy to understand. Adeptia recommends few easy steps to achieve this.

Process Designer

Activity Naming Conventions

When an activity is selected from the Repository View and dropped into the Graph Canvas area, you can change the default text displayed in the activity icon by double-clicking on it and going to its Properties panel and editing the label. A more descriptive label of activities helps in understanding the overall context of the process flow.

Do not change the name of any BPMN activity. It will help you to refer the activity attached to the activity.

There are pre-defined activities and actions in the Process Designer Repository and Actions category that can be used in the process flow design. The labels of these entities can be edited by going to its Properties panel.

List of predefined activities with name/label automatically set.

  • Compression
  • Decompression
  • RecordQueueProducer
  • RecordQueueReceiver
  • RepeaterService
  • StreamSelectorService

List of predefined actions with name/label automatically set.

  • Call
  • CheckPoint
  • Delay
  • JTA-Begin
  • JTA-End
  • JTA-Rollback
  • Put-Context-Var
  • Set-Child-Context
  • Set-Parent-Context
  • Spawn
  • Synch
  • Trace
  • Wait


Design Conventions

  • Design of the process flow requires a logical sequence of activities from Start to End node. For example, by placing a Schema activity prior to Source is not logically correct since we need the data first before parsing it through the related schema activity.
  • Fewer activities (steps) in the flow result in more in-memory processing which leads to faster performance.
  • While designing a process flow try using Text Annotation from Palette toolbar describing the purpose and functionality of activities you are using. Text Annotation will be helpful for users to understand the functioning of Process Flow very easily.



  • If your process flow execution time is comparatively slow, you can try combining multiple activities using Custom Plugin Activity. 

  • Use Database loader programs for faster loading of bulk data into databases rather than using Adeptia JDBC connectors.

  • Use “Delete on Success” option in the process flow for the processes you do not want repositories. This could save a lot of your disk space.

  • To reduce the amount of log generated, keep the Logging level for the process flow as “Error”.
  • If you are creating parent-child flows and want to use JTA blocks in both the flows, please call Sub-Process Flow using Spawn action instead of Call action in Parent process flow. If it is mandatory to use Call action in Parent process flow (in order to execute Sub-Process Flow in the main thread), then you need to replace Call action with a combination of “Spawn - Synch” action (of course with the same signal name). Latter combination shall provide you with the same functionality of Call action with minimal overhead.

 

Q: Why it doesn’t work with Call action?

A: It is so because whenever JTA Begin action is executed, it creates a new user transaction boundary and associates it with current process flow thread. In our case, JTA Begin is executed in Parent Process Flow and a new user transaction boundary is associated with Parent Process Flow thread. Now, if you call Sub-Process Flow (having its own JTA Begin – JTA End) using Call action in Parent Process Flow, then it will try to associate a new user transaction boundary (for Sub-Process Flow) with Parent Process Flow thread (as Call action executes Sub-Process Flow in same thread where Parent Process Flow executes). This operation of associating two user transactions to a single thread (a.k.a. nested transactions) is not supported by JOTM (Transaction Manager implementation used by Adeptia). To resolve this, you need to call Sub-Process Flow using Spawn action in Parent Process Flow as they both work in a separate thread and it works like a charm.

See also

Process Flow Settings