Creating Scripts for Custom Application in Process Flow
Using Process Flow in a Template
While creating a Process Flow, in the Process Designer, write the following script in the Service exception field under the OnException Scripts tab.
-f880dfc176a11f7c17c03ad5d8dde8e6.png)
| import org.apache.commons.lang.exception.ExceptionUtils; Throwable rootCause = ExceptionUtils.getRootCause(exception); String exceptionMessage = null; if(rootCause == null) exceptionMessage = exception.getMessage(); else exceptionMessage = rootCause.getMessage(); context.put("subprocess_code", "ERROR_IN_CHILD_FLOW"); context.put("subprocess_text", exceptionMessage); |
|---|
Process Flow Calling Another Process Flow
If the Process Flow is further calling another Process Flow, you must create a custom plugin using the below JavaScript. After you have created a custom plugin, use it in the Process Flow just before a Call or Spawn activity. In case there are multiple Call or Spawn activities in a Process Flow, you need to add a Custom Plugin before every Call or Spawn activity.
JavaScript for Custom Plugin to set child context Param and other required information to call another process flow:
- When streaming is passed to child flow in File Mode: Code
import com.adeptia.connect2.runtime.RuntimeUtils;RuntimeUtils.setChildContextForCustomFlow(inputStream, context, service.getLogger(), "<<ACTION_NAME>>");
where,
ACTION_NAME is the name of the call or spawn.
for example,
| Copy Code Code |
|---|
RuntimeUtils.setChildContextForCustomFlow(inputStream, context, service.getLogger(), "Action_Name");
|
| Ensure that the source activity is File Source when streaming is passed in File Mode and eventContextEnable is true. Ensure that you have provided the < |
|---|
| When data encryption at rest (EAR) is enabled, the data that the child Process Flow receives is encrypted. To decrypt this data, add a variable in the following format, setting its value to true in the child Process Flow. TX.SourceEncryptedAtRest_<SOURCE_ENTITY_NAME> |
|---|
-
When streaming is passed to child flow in Memory Mode:
Copy Code
Code
import com.adeptia.connect2.runtime.RuntimeUtils;RuntimeUtils.setChildContextForCustomFlow(inputStream, context, service.getLogger(), "<<ACTION_NAME>>", true, "<<contextVarName>>");
|
where,
ACTION_NAME is the name of the call or spawn.
context VarName is the name of the context variable that will be used as Key to put stream data on context.
| In Memory mode, it is mandatory to use Context Source in child flow, and eventContextEnable must be false. Ensure that you have provided the < |
|---|
-
When no Stream is passed to child flow:
Copy Code
Code
import com.adeptia.connect2.runtime.RuntimeUtils;RuntimeUtils.setChildContextForCustomFlow(context, service.getLogger(), "<<ACTION_NAME>>");
|
where,
ACTION_NAME is the name of the call or spawn.
| Ensure that you have provided the < |
|---|
JavaScript to check if child flow is Aborted or not:
| Copy Code Code |
|---|
import com.adeptia.connect2.runtime.RuntimeUtils;
return RuntimeUtils.isChildFlowAborted(context, "<<resultCtxVarName>>");
|
where,
resultCtxVarName is the name of the context variable that contains the status of the sub-flow.
JavaScript for Custom plugin to abort parent flow:
Code
import com.adeptia.connect2.runtime.RuntimeUtils;
RuntimeUtils.abortParentFlow(context,"<<ACTION_NAME>>","<<resultCtxVarName>>");
Process Flow Design
Following are the sample designs of the Process Flow, calling a Transaction through Call or Spawn action:
Using Single Call

Using Multiple Call

Using Single Spawn

Using Multiple Spawn
