A process automation application, referred to as a commerce exchange server,
for
sending transaction messages between application programs uses a transaction definition
data structure for specifying the component operations and processing logic that
comprise the transaction. The data structure specifies one or more operations that
constitute the transaction, instructions for producing the input data needed for
each operation, and conditional logic for specifying constraints on the sequence
of operation execution. The conditional logic may include one or more expressions,
ranging from simple to complex, including variables, math operations and functions,
that are evaluated using the inputs or outputs of one or more prior operations
to determine execution order of subsequent operations. The transaction definition
data structure may also provide for broadcast operations and for conditioning the
success of their execution. In an illustrated implementation, the transaction definition
data structure is an XML (Extensible Markup Language) document in the form of a
directed acyclic graph (DAG). A transaction service architecture provides for storing
transaction definitions that define specific types or categories of transactions
in a transaction database, and for matching a transaction definition to a transaction
definition identifier from a requesting application. The transaction service then
builds a transaction instance DAG to perform the transaction, produces the messages
needed for performing the transaction, and manages the message flow to and from
the service applications that perform the constituent operations of the transaction.