Asynchronous and synchronous processing for workflow events

When an item is checked out into a collaboration area, a checkout event is posted to the workflow engine.

When a synchronous checkout is requested, it passes the waitForStatus flag as true to either the checkoutEntry() or checkoutEntries() script operations, or it invokes the checkoutAndWaitForStatus() Java™ API method.

If the checkout is synchronous and is called from a script or import; the event occurs inline, that is, the event is processed by the same thread, rather than occurring on the workflow engine. This process is fast because there is no background processing and assessing status is not required.

The workflow includes an extensive audit trail. Every attribute change at each workflow step for each collaboration area is stored in the database.

Asynchronous operations cannot be chained within the same transaction. For example, it is not possible to move an entry through more than one workflow step using the moveEntriesToNextStep operation within a single transaction because each moveEntriesToNextStep call would require the transaction to be committed before it takes effect.
Important: If there are scripts associated with an automated workflow step, then your scripts should not contain the moveEntriesToNextStep operation.
Table 1. Script operations for asynchronous and synchronous processing
Script operation Synchronous or asynchronous Comments
HashMap
CollaborationArea::
checkOutEntry(Entry entry
[, String stepPath]
[, boolean
waitForStatus])

HashMap
CollaborationArea::
checkOutEntries(EntrySet
entrySet
[, String stepPath]
[, boolean
waitForStatus])
If waitForStatus is omitted, or false, effect is asynchronous. Otherwise the operation is performed synchronous.

Within a single transaction, if performed inline, the entry specified will be checked out when the transaction is committed.

If performed asynchronously, at commit, the entry will be in a non-checked out state, but a pending checkout event is created, that when processed by the workflow engine, will result in the entry being checked out.

Boolean
CollaborationArea::
releaseEntryInStep(Entry
entry,
String stepPath)
Synchronous Within a transaction, if performed inline, the entry will be released when the transaction is committed.
Boolean
CollaborationArea::
reserveEntryInStep(IEntry
entry,
String stepPath
[, String username])
Synchronous Within a transaction, if performed inline, the entry will be reserved when the transaction is committed.
Category new
Category(CategoryTree ctr,
String path [, String
delimiter] [, String
primaryKey])

Category
CategoryTree::
buildCategory(String path
[, String delimiter]
[, String primaryKey])
Synchronous (when applicable)

When ctr is an instance of a collaboration area, and ctr contains a category that matches the specified category path, this script operation acts to a check out that category.

Within a transaction, the checkout (when performed), is performed inline. When the transaction is committed, the category will be in a checked out state.

void
CollaborationArea::
dropEntries(EntrySet
entrySet)

void
CollaborationArea::
dropEntry(Entry entry)
Asynchronous Within a transaction, the drop event is created. When the transaction is committed, the workflow engine processes the event, which causes the entry to be dropped.
HashMap
CollaborationArea::
moveEntriesToNextStep
(EntrySet entrySet,
String
stepPath, String
exitValue)

HashMap
CollaborationArea::
moveEntryToNextStep
(Entry entry, String
stepPath,
String exitValue)
Asynchronous Within a transaction, the event to move the entry is created. When the transaction is committed, the workflow engine processes the event, which causes the entry to be dropped.
Boolean
CollaborationArea::
moveEntriesToColArea
(EntrySet entrySet,
String
destColAreaName)

Boolean
CollaborationArea::
moveEntryToColArea
(Entry entry, String
destColAreaName)
Asynchronous Within a transaction, the move event is created. When the transaction is committed, the workflow engine processes the event, which causes the entry to be moved.
Boolean
CollaborationArea::
publishEntriesToSrc
Container
(EntrySet entrySet)
Asynchronous Within a transaction, the interim checkin event is created. When the transaction is committed, the workflow engine processes the event, which causes the entry being copied into the source container.
Boolean
CollaborationArea::
addEntryIntoColArea
(Entry entry, String
stepPath)
Synchronous

Within a transaction, the specified entry will be added to the collaboration area. The addEntryIntoColArea script operation starts the BeginStep event for the entry that is added to the collaboration area.

When the transaction is committed, the workflow engine will process the event.