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
<?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.