Adding elements to gateway branches

You add elements to a branch by drawing routes from an operation, event, or activity to the gateway or existing branch elements. Use the tools and methods you use for other parts of the process diagram to add, remove, and change the sequence of branch elements as required. (See Drawing routes to link operations .) You can add any number of elements to a branch.

You can drag one end of the gateway element to increase the distance between the two ends. Increasing the distance creates space for multiple branches and elements.

You can modify the routes connected to the start and end of the gateway using the methods used for regular routes. For example, you can change which operation is executed first by dragging the anchor for the first route in the branch to a different operation. However, when you connect an element to the end of the gateway, if no route connects the branch elements to the start of the gateway, one is added automatically.

If you do not provide a final route to connect the branch to the end of the gateway, one is added automatically the next time you open the process.

To change which operation is executed first:

In the branch, right-click the operation to execute first and select Set Start Activity.

Validating routes used by gateway branches

When you add routes to gateway branches, an error icon appears when you attempt to draw invalid routes. For example, you cannot create a route that connects a branch activity to an element outside its branch. Routes that connect elements in different branches are also invalid.

Additional route validation information appears in the Validation Report view. For example, a message appears in the Validation Report view if a branch within a gateway is incomplete. (See Validation reports ).

Operation and branch compatibility

Not all operations are compatible with all branch types. Operation and branch compatibility may help you to decide the type of branch that you should use in your process.

Note: You use gateways to add additional branches to a process.

Branch type

Compatible operations

Asynchronous

All operations

Synchronous

All operations

Transactional

Set Value, Stall, and Execute Script service operations

Note: The operations of the User, Wait Point, and Execute Script services, as well as gateway elements, cause synchronous branches to behave as asynchronous branches.

Transactions

A transaction is a context in which one or more operations are executed. Generally, the operations that are executed within a transaction are not committed until all of the operations are executed successfully. If one operation in a transaction fails to execute successfully, the transaction is rolled back and the effects of any operations that were already executed in that transaction are reversed.

In Transactional branches, the operations in a branch are executed in a single transaction. In an Asynchronous or Synchronous branch, each operation is executed in separate transactions.

Transactions and branches

Transactional branches are useful when a common goal is dependent on the successful execution of a series of operations. If an operation in a transactional branch executes with errors, the branch is stalled. When the branch is retried, the transaction for the branch is rolled back and the first operation in the branch is executed again.

For information about the behavior of actions in Transactional branches, see Transactions and operations .

Asynchronous and synchronous branches are useful when the failure of one operation in the branch does not devalue the successful execution of previous actions in the branch. If an operation in an Asynchronous or Synchronous branch executes with errors, the branch is stalled. When the branch is retried, only the failed operation is rolled back and the operation is executed again.

Branch behavior when errors occur

The behavior of a branch when a stalled branch or a stalled operation is retried is a factor to consider when deciding which type of branch to use in your process.

For all branch types, when a branch exception occurs, the branch is stalled and, when an operation exception occurs, the operation for which the exception occurred is stalled.

The following table describes how the different branch types continue execution after the forms workflow administrator retries the stalled branch or operation.

Branch type

Behavior when a stalled branch or operation is retried

Asynchronous

The process continues from the point in the process where the exception occurred.

Synchronous

The process continues from the point in the process where the exception occurred.

Transactional

The branch is rolled back, and the process continues from the first operation in the branch.

Transactions and operations

Operations are handled differently in transactions, depending on whether the operations are transaction-aware and long-lived.

Transaction-aware operations

Operations that are transaction-aware will participate in a transaction. When a Transactional branch is rolled back, the operations in the branch that are transaction-aware are returned to their original state before that branch was executed.

If an operation is not transaction-aware and it is used in a Transactional branch that stalls, the effects of the operation are not rolled back when the branch is retried. The operations are executed a second time. For example, if you use the Email operation in a Transactional branch, each time the branch stalls and is retried, another email is generated.

The only transaction-aware operation that Foundation provides is the execute operation of the Set Value service. However, your development team may create transaction-aware operations using the AEM forms SDK.

Long-lived operations

Long-lived operations execute independently of the branch to which they belong:

  • When a Transactional branch is stalled and is retried, any long-lived operations in the branch continue to run and are not rolled back.

  • If a computational error occurs during the execution of a long-lived operation, the operation is stalled, but the branch is not stalled even if the operation belongs to a Transactional branch.

None of the operations that Foundation provides are long-lived. However, your development team may create long-lived operations using the AEM forms.

// Ethnio survey code removed