Commands and Directive Structure

To reduce the confusion the HefeWeizen system differentiates two types of communication:

  • A command is the communication between big ania, ania and taskers (in all directions)
  • An directive is the communication between the B2B system and the backend application (both directions)

Command Structure

Commands are sent between the HefeWeizen processes. These commands are typically written to named pipes. A tasker is started with a command as an argument.

Because a command must be on one line, it does look lie a HTTP method call with arguments:

command=something=command&from=big_ania=from&to=ania=to&transaction=1234567890=transaction&time=19999999=time&

"command" represents a key, something represents a value, and & is called a separator.

Here are the REQUIRED keys for any command:

  • command
  • from
  • to
  • time
  • uuid (this is the transaction uuid)

Common keys are:

  • source_file_path (includes path and filename)
  • target_file_path (includes path and filename)
  • sub_transaction.

Directive Structure

If the commnication between the HefeWeizen system and a backend application is filesystem based, then directives are files. These files are then dropped to a directory and read by the receiving application. The receiving application must monitor a directory for any new files.

<Control>
  <NewEbxmlMessage>
    <CpaId/>
    <Service/>
    <Action/>
    <RefToMsgId/>
    <ConversationId/>
    <MsgId/>
    <!-- From is the party name. If only the party name is given (the From tag) in the directive then the first party ID will be taken for 
         the ebXML message from element. Otherwise use FromPartyId and FromPartyType. -->
    <From>Gnaraloo</From>
    <FromPartyId>gnaraloo_test_system</FromPartyId>
    <FromPartyIdType>urn:li.gnaraloo.b2b</FromPartyIdType>
    <FromRole/>
    <To/>
    <ToType/>
    <ToRole/>
    <!-- whether to set duplicate elimination, only if in the CPA there is a value of perMessage for duplicate eliminatino' -->
    <!-- The CPA should be used for this and this element should not be put in the directive --> 
    <DuplicateElimination>yes</DuplicateElimination>
    <!-- wheter to set the ack requested element in the ebXML message. This is only used when the CPA specifies a perMessage for ack requested. -->
    <!-- The CPA should be used for this and this element should not be put in the directive --> 
    <AckRequested>yes</AckRequested>
    <!-- If the CPA has a value of perMessage for the ackRequested part this value of the directive is taken. 
         This value is not checked when AckRequested is false (or its value in the CPA is set to never)-->
    <!-- The CPA should be used for this and this element should not be put in the directive --> 
    <AckSignatureRequested>yes</AckSignatureRequested>
    <Payloads>
      <Payload>
        <FilePathAndName/>
        <RealFileName/>
      </Payload>
      <Payload>
        <FilePathAndName/>
        <RealFileName/>
      </Payload>
    </Payloads>
  </NewEbxmlMessage>
</Control>