Update Actual Route Point Times for a Train

A ProcessEvents message with either a NotifyWorkExecutedEvent or NotifyWorkReconciledEvent node can be used to import and update actual route point times for a train from an XML file.

Note: Words in coloured text refer to node names in the XML file. Words in bold refer to field names or data in MineMarket, or required text strings. Words in italics refer to field values in MineMarket.

Subscriber Name

The subscriber name must be NotifyWorkExecutedEvent or NotifyWorkReconciledEvent.

Class Name

The class names are BulkTrak.Integration.PublishSubscribe.B2MML_Classes.NotifyWorkExecutedEvent and BulkTrak.Integration.PublishSubscribe.B2MML_Classes.NotifyWorkReconciledEvent. Either class can be used; however, only the NotifyWorkReconciledEvent can process multiple times in the one file.

XML Example

Copy
<?xml version="1.0" encoding="UTF-8"?>
<p:NotifyWorkExecutedEvent xmlns:p="http://www.mesa.org/xml/B2MML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <p:ApplicationArea>
    <p:Sender>
      <p:LogicalID>RAEI</p:LogicalID>
      <p:ComponentID>AEI-Port</p:ComponentID>
    </p:Sender>
    <p:CreationDateTime>2022-09-27T15:19:00Z</p:CreationDateTime>
  </p:ApplicationArea>
  <p:DataArea>
    <p:Notify />
    <p:WorkExecutedEvent>
      <p:AddedJobResponseRecord recordTimestamp="2022-09-27T15:19:00Z" effectiveTimestamp='2022-09-27T15:19:00Z'>
        <p:JobResponse>
          <p:ID>b2034579-c439-4b7c-8b4e-e2a1d2d763a9</p:ID>
          <p:EndTime>2022-09-27T15:19:00Z</p:EndTime>
          <p:WorkMasterID>Train Loading</p:WorkMasterID>
          <p:WorkflowSpecificationID>Rail Transport</p:WorkflowSpecificationID>
          <p:WorkflowSpecificationNodeID>Assemble Train</p:WorkflowSpecificationNodeID>
          <p:EquipmentActual>
            <p:ID />
            <p:EquipmentClassID>Train</p:EquipmentClassID>
            <p:EquipmentID>TrainAlias1</p:EquipmentID>
            <p:EquipmentUse>Used</p:EquipmentUse>
            <p:HierarchyScope>
              <p:EquipmentID>BusinessAreaAlias1Segment</p:EquipmentID>
              <p:EquipmentLevel>Enterprise</p:EquipmentLevel>
              <p:HierarchyScopeChild>
                <p:EquipmentID>BusinessAreaAlias1Segment</p:EquipmentID>
                <p:EquipmentLevel>Site</p:EquipmentLevel>
                <p:HierarchyScopeChild>
                  <p:EquipmentID>BusinessAreaAlias1Segment</p:EquipmentID>
                  <p:EquipmentLevel>Area</p:EquipmentLevel>
                </p:HierarchyScopeChild>
              </p:HierarchyScopeChild>
            </p:HierarchyScope>
            <p:OperationalLocation>
              <p:Location>Port Departure</p:Location>
              <p:LocationType>Operational Location</p:LocationType>
            </p:OperationalLocation>
            <p:EquipmentActualChild>
              <p:ID />
              <p:EquipmentClassID>Locomotive</p:EquipmentClassID>
              <p:EquipmentID>LocomotiveAlias1</p:EquipmentID>
              <p:EquipmentUse>Used</p:EquipmentUse>
              <p:OperationalLocation>
                <p:Location>TrainAlias1</p:Location>
                <p:LocationType>Equipment</p:LocationType>
              </p:OperationalLocation>
            </p:EquipmentActualChild>
            <p:EquipmentActualChild>
              <p:ID />
              <p:EquipmentClassID>Wagon</p:EquipmentClassID>
              <p:EquipmentID>WagonAlias1</p:EquipmentID>
              <p:EquipmentUse>Used</p:EquipmentUse>
              <p:OperationalLocation>
                <p:Location>TrainAlias1</p:Location>
                <p:LocationType>Equipment</p:LocationType>
              </p:OperationalLocation>
            </p:EquipmentActualChild>
          </p:EquipmentActual>
        </p:JobResponse>
      </p:AddedJobResponseRecord>
    </p:WorkExecutedEvent>
  </p:DataArea>
</p:NotifyWorkExecutedEvent>

XML Nodes

Node and Path

Notes

ApplicationArea » CreationDateTime

If AddedJobResponseRecord does not include a timestamp, this time is saved in an export mapping specific to the route point time on the barge service trip.

If AddedJobResponseRecord does include a timestamp, this time is ignored in processing.

Note: If used, the time must be later than existing data in MineMarket. If the time is earlier than the applicable export mapping on the train, no data is saved.

JobResponse » ID

A unique identifier that is generated automatically.

JobResponse » EndTime

The route point date and time.

JobResponse » WorkMasterID

A text string that may be "Train Loading", "Direct Barge Loading" or "Stacking".

JobResponse » WorkflowSpecificationID

A text string that must be "Rail Transport".

JobResponse » WorkflowSpecificationNodeID

A text string that determines the route point location for which the time is updated. See the table below.

JobResponse » EquipmentActual » EquipmentClassID

A text string that must be "Train".

JobResponse » EquipmentActual » EquipmentID

The Alias1 of an existing train.

JobResponse » EquipmentActual » HierarchyScope

Ignored in processing.

JobResponse » EquipmentActual » OperationalLocation

Ignored in processing.

JobResponse » EquipmentActual » EquipmentActualChild Optional node for each locomotive and wagon. Ignored in processing.

Notes and Troubleshooting

This B2MML adaptor class requires a specific train route with the following configuration:

  • First route point—Loading type set to None.
  • Second route point—Loading type set to Loading Only.
  • Third route point—Loading type set to Unloading Only.

This B2MML adaptor class requires that trains are configured with a transport event called Actual Train Positioned. This transport event should be configured to have a duration.

The actual time that is updated depends on the value of the WorkflowSpecificationNodeID node.

WorkflowSpecificationNoewID Route Point Loading Type Time
Assemble Train None ATD
Travel Empty Loading Only ATA
Loading Loading Only ATD
Hauling Unloading Only ATA
Spotting Unloading Only End Date of the Actual Train Positioned event
Queue At Dumper Unloading Only Start Unloading
Unloading Unloading Only End Unloading
Train Terminated Unloading Only ATD

Multiple JobResponse nodes (with their sub-nodes) can exist within the one file if more than one time is saved in MineMarket at the same time, but only if using the NotifyWorkReconciledEvent class.