Batch BOD processing
A large incoming transaction can be divided into two more small transactions which are sent as part of a batch. The following sections describe the processing on the receiver side.
To be recognized as a batch BOD, the BatchId must be present, and the BatchNumber component must have a value greater than 0.
The Infor Process Automation ION receiver looks for the following batch related header keys in the table COR_INBOX_HEADERS:
Header Key | Description | Default | Notes |
---|---|---|---|
BatchId |
Consists of: FromLogicalId + : (colon) + BatchNumber Example:
|
[string]:-1 | Starts at 1. This number might need to be sequential depending on the selection for the "Enforce batch processing by BatchID" option. |
BatchSequence | Sequence number of the BOD in the batch. | -1 | Starts with 1 and is always sequential. |
BatchSize | Total number of BODs in the batch. | 1 (indicates that this is the original batch) | Specified as part of the last batch sequence. |
BatchRevision | Revision number of the batch. |
1 (indicates that this is the original batch or that batch revision is omitted) See "Batch BOD revisions behavior details" below for additional information that might apply in some specialized situations. |
Does not need to be sequential. |
BatchAbortIndicator | Indicates that the batch is to be discarded. |
false See "Aborted BOD revisions behavior details" below for additional information that might apply in some specialized situations. |
Not applicable. |
Batch BOD parts
The individual batch sequences that make up a complete batch are referred to as "batch parts" and are processed in the following ways:
-
In sequence using BatchSequence.
-
Serially: Sequence 1 is processed completely before Sequence 2 and so on.
-
The same process is triggered for each batch part.
-
If a batch part fails:
-
Async mode: Processing for the batch is stopped.
-
Sync mode: Retries are performed, and processing for the batch stopped if retries are unsuccessful.
-
Batch BOD revisions behavior details
If a batch is received completely the first time it was sent, it has revision number 1. If the initial receive was not successful, subsequent attempts are processed per the following:
-
The original batch have a BatchRevision of "1," unless the revision number, which is optional, was omitted. If BatchRevision is omitted, this number is always 1.
For example, an original batch could be sent with no revision number, in which case, Infor Process Automation assumes the revision is 1.
-
Actual revision numbers start at 2 (or higher, depending on number of attempts) but they are not necessarily sequentially numbered.
-
If a revision is received for a batch that exists in the Inbox, the original/lower revision batch are discarded. The revised batch are processed as if it was received with a timestamp of the original/lower revision batch.
-
If a revision is received for a batch that does not exist in the Inbox (the original batch could already be processed / never received / yet to be received), the revision is processed as though it was an original version.
-
If more than one revision is received, only the highest revision number are processed. All lower revisions are discarded.
-
Revisions received are not be tracked. This means that if Revision 5 was received and processed and Revision 2 was received later, Revision 2 is processed (even though it is an earlier revision).
-
To manually skip/abort the incomplete batch, update the IONBatchNum record. If used, the next message in the Inbox (by Timestamp) are processed next.
Aborted batch BOD behavior details
If an abort is received for a batch (complete, incomplete, out of sequence, revision), in the Inbox, the following behavior occurs:
-
The Inbox discards the batch and all instances of the batch. (If there was an original plus a revision, the abort discards all.)
-
An abort received for a non-existent (in the Inbox) or already processed batch is ignored.
-
If an original, a revision and an abort are received for the same BatchID, the abort applies to all instances, resulting in the original and revision being discarded. This means that the abort does not cancel just the revision, it also cancels the original.
Batch BOD number tracking
The IONBatchNum table is used to keep track of the last batch number for each BODType + FromLogicalId. The table consists of these fields:
-
BODType (key)
-
FromLogicalId (key)
-
Last batch #: This means for the particular BODType+FromLogicalId, the next batch number is expected to be the LastBatch# + 1 (if Sync is used).