RoutingRuleGMMsgStatusMonitor Business Process (V5.2.6 or later)

The RoutingRuleGMMsgStatusMonitor business process is predefined and is used to monitor the status of the business process that is launched to process a message from the IBM® Global High Availability Mailbox.

The RoutingRuleDMMsgStatusMonitor business process performs the following primary activities:
  • Monitors the status of the business process that is launched to process a message from the Global Mailbox.
  • Passes the message processing status to the Global Mailbox management tool.
Following is a list of the status that is displayed on the Event History page of the Global Mailbox management tool:
Unprocessed
The business process is yet to launch and message processing is yet to start.
Processing
The business process is running and message processing is in progress.
Complete
The business process (message processing) completed successfully.
Failed
The business process (message processing) failed. Message processing can fail because a business process fails, or because the data center goes offline before processing is complete.
Message processing can also fail if the event rule configuration does not match with the configuration in Sterling B2B Integrator. For example, the business process or user who is specified in the event rule is not available in Sterling B2B Integrator or the system business process (RoutingRuleDMMsgStatusMonitor) is deleted. In such cases, the Global Mailbox administrator or Sterling B2B Integrator administrator must make appropriate changes to the event rule configuration or the business process and resend the events.
Important: To see the reasons for failure, verify the running instances of the RoutingRuleDMMsgStatusMonitor business process or monitor the Sterling B2B Integrator system logs (Operation/System/logs)

The following BPML of the RoutingRuleDMMsgStatusMonitor business process:

<process name="RoutingRuleDMMsgStatusMonitor">
  <rule name="nOOfEvents">
    <condition>EventCount &lt;= count(EventList/EventIdList/EventId) and not(contains(FaultUpdateDone/text(),&quot;true&quot;))</condition>
  </rule>

  <rule name="MoreFaultyEvents">
    <condition>FaultEventCount &lt;= count(EventList/EventIdList/EventId)</condition>
  </rule>

  <sequence name="MonitorRouteBPStatus">
    <sequence name="InvokeBP">
      <operation name="Invoke Business Process Service">
        <participant name="InvokeBusinessProcessService"/>
        <output message="InvokeBusinessProcessServiceTypeInputMessage">
          <assign to="." from="*"></assign>
          <assign to="INVOKE_MODE">SYNC</assign>
          <assign to="NOTIFY_PARENT_ON_ERROR">ALL</assign>
          <assign to="WFD_NAME" from="/ProcessData/WFD_NAME/text()"></assign>
        </output>
        <input message="inmsg">
          <assign to="." from="*"></assign>
        </input>
      </operation>

      <onFault>
        <sequence name="BeginUpdateFailedStatus">
          <assign name="Assign" to="FaultEventCount">1</assign>
          <choice name="UpdatedFailedMessageStatus">
            <select>
              <case ref="MoreFaultyEvents" activity="UpdateForEachEvent"/>
            </select>

            <sequence name="UpdateForEachEvent">
              <assign name="Assign" to="IndFaultEventId" from="EventList/EventIdList/EventId[number(/ProcessData/FaultEventCount/text())]/text()"></assign>
              <operation name="XAPI Service">
                <participant name="XAPIService"/>
                <output message="XAPIServiceTypeInputMessage">
                  <assign to="." from="*"></assign>
                  <assign to="api">updateEventStatusToDistributedMailbox</assign>
                  <assign to="xml" from="concat(&apos;&lt;EventUpdate&gt;&lt;EventIdList&gt;&apos;,IndFaultEventId,&apos;&lt;/EventIdList&gt;&lt;ProcessingStatus&gt;Failed&lt;/ProcessingStatus&gt;&lt;/EventUpdate&gt;&apos;)"></assign>
                </output>
                <input message="inmsg">
                  <assign to="." from="*"></assign>
                </input>
              </operation>

              <assign name="Assign" to="FaultEventCount" from="FaultEventCount + 1"></assign>
              <repeat name="NextEventFailureUpdate" ref="UpdatedFailedMessageStatus"/>

            </sequence>
          </choice>
          <assign to="FaultUpdateDone">true</assign>
        </sequence>
      </onFault>
    </sequence>
    <sequence name="Begin Update">
      <assign name="Assign" to="EventCount">1</assign>
      <choice name="UpdatedMessageStatus">
        <select>
          <case ref="nOOfEvents" activity="UpdateSuccessForEachEvent"/>
        </select>

        <sequence name="UpdateSuccessForEachEvent">
          <assign name="Assign" to="IndEventId" from="EventList/EventIdList/EventId[number(/ProcessData/EventCount/text())]/text()"></assign>
          <operation name="XAPI Service">
            <participant name="XAPIService"/>
            <output message="XAPIServiceTypeInputMessage">
              <assign to="." from="*"></assign>
              <assign to="api">updateEventStatusToDistributedMailbox</assign>
              <assign to="xml" from="concat(&apos;&lt;EventUpdate&gt;&lt;EventIdList&gt;&apos;,IndEventId,&apos;&lt;/EventIdList&gt;&lt;ProcessingStatus&gt;Success&lt;/ProcessingStatus&gt;&lt;/EventUpdate&gt;&apos;)"></assign>
            </output>
            <input message="inmsg">
              <assign to="." from="*"></assign>
            </input>
          </operation>

          <assign name="Assign" to="EventCount" from="EventCount + 1"></assign>
          <repeat name="NextEventSuccessUpdate" ref="UpdatedMessageStatus"/>

        </sequence>
      </choice>
    </sequence>
  </sequence>
</process>