Navigation: Filtering & Collection > Event Bindings > Available Bindings > Web Service Bindings >

RFDTHWS

Still need help? Create a Support Ticket with Stratum Support

Send comments on this topic.

← Previous Next →

 

Binding Function

RFDTHWS

 

Binding ID

Thor_Web_Service (Access Control)

 

Binding Description

Web Service for Vehicle Access Control

 

Purpose

This is a SOAP/WSDL Binding designed for access control at yard gates where an external system is providing the authorization whether the tagged vehicle can proceed or not through the gate. Based on the response received from external system, the Binding uses GPIO script and ADAM I/O controller to raise gate as well as turn on certain stack light conditions. 

Logic

Collects whatever tags are seen during a read event cycle at a given RFID enabled gate and performs the following logic:

Sends out Tag Event and waits for Reply State from the Customers' backend system. Based on that opens gate or not

“None” which is what is expected in the request and which should never be returned in the response. 

“Stop” = deny passage   ** NOMATCH CONDITION

“Go”= allow passage   ** MATCH CONDITION

“Error” = this happens if WS is not responding, deny or allow passage based on TagNet script for that reader location   ** ERROR CONDITION

VIN is Mapped to Container field in TGMAP, referenced as the Object ID in XML (see example below)

If multiple tags are seen, Binding is only interested in a tag that is mapped in TagNet and has a value in the container ID, rest are ignored. If only one tag is seen and it is not valid, then a NOTAG condition applies.  NOTAG means nothing is sent to WS.

IMOVE rules are applied are the very end of logic only if reply state = ‘GO’. If vehicle sits at gate and is continually read after dwell, no IMOVE will take place as it will just loop and send the WSDL payload on every read event.

Supports full GPIO script as a result of standard MATCH / NOMATCH / ERROR / NOTAG variables.

Resolves each tag to its mapped object attributes (Product, Asset, or Person) and pushes them in real time to the PEV display Client.

Restrictions

None identified

Comments

 This binding can be tested with a backend system emulator that will return various reply states

 Create a copy of the WSDL [TMC_RFID_WebApplication.xml] >> TMC_RFID_WebApplication_emulation.xml

 Edit the new copy [TMC_RFID_WebApplication_emulation.xml] to use the same IP address in the URL in case you are not using localhost.

 When changing the IP address the Integrator must be stopped and restarted as the value is stored in a java class.

 

         <wsdl:service name="Service1">

              <wsdl:port name="BasicHttpBinding_IService1" binding="tns:BasicHttpBinding_IService1">

                   <soap:address location="http://localhost:54366/TMC_RFID_WebApplication.svc"/>

              </wsdl:port>

        </wsdl:service>

Files Updated

RFDLOCIN, RFDLOCIH (Insert), RFDTAGVS

Program Name

URI set to RFDTHWS

Binding Setup

Binding Properties

Email Notification

The email address to send binding specific alerts. Note: This overrides the default SMTP Recipient value under System Settings

 

Dwell Time

Dwell time prevents the tag from being included in the web service request when seen again at the same gate when vehicle dwells there.  Refer to the the Binding Change for detailed explanations of this directive.

 

WSDL Directives

These directives specify the name and location of the XML. Refer to the the Binding Change for detailed explanations of each directive. Note that the XML file is a keyword and must stay the same even if the WSDL location changes its path/name

 

Inventory Movement Rules

In the example below, the Inventory Movement rules are set to *RESULTSET (along with Log Result Set) which is used if Dwell is specified. Refer to the the Binding Change for detailed explanations of each directive.

 

 

Shown below is the source WSDL specification and resulting XML transaction sets:

 

Action

XML Schema

WSDL Specification

<?xml version="1.0" encoding="utf-8"?><wsdl:definitions name="Service1" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><wsdl:types><xs:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:import namespace="http://schemas.datacontract.org/2004/07/TMC_RFID_WebService"/><xs:element name="IsWsActive"><xs:complexType><xs:sequence/></xs:complexType></xs:element><xs:element name="IsWsActiveResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="IsWsActiveResult" type="xs:boolean"/></xs:sequence></xs:complexType></xs:element><xs:element name="IsDbActive"><xs:complexType><xs:sequence/></xs:complexType></xs:element><xs:element name="IsDbActiveResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="IsDbActiveResult" type="xs:boolean"/></xs:sequence></xs:complexType></xs:element><xs:element name="AddRfidTransaction"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="composite" nillable="true" type="q1:TagnetChassisTrans" xmlns:q1="http://schemas.datacontract.org/2004/07/TMC_RFID_WebService"/></xs:sequence></xs:complexType></xs:element><xs:element name="AddRfidTransactionResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="AddRfidTransactionResult" nillable="true" type="q2:TagnetChassisTrans" xmlns:q2="http://schemas.datacontract.org/2004/07/TMC_RFID_WebService"/></xs:sequence></xs:complexType></xs:element><xs:element name="VerifyRfidTransaction"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="composite" nillable="true" type="q3:TagnetChassisTrans" xmlns:q3="http://schemas.datacontract.org/2004/07/TMC_RFID_WebService"/></xs:sequence></xs:complexType></xs:element><xs:element name="VerifyRfidTransactionResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="VerifyRfidTransactionResult" nillable="true" type="q4:TagnetChassisTrans" xmlns:q4="http://schemas.datacontract.org/2004/07/TMC_RFID_WebService"/></xs:sequence></xs:complexType></xs:element></xs:schema><xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/"><xs:element name="anyType" nillable="true" type="xs:anyType"/><xs:element name="anyURI" nillable="true" type="xs:anyURI"/><xs:element name="base64Binary" nillable="true" type="xs:base64Binary"/><xs:element name="boolean" nillable="true" type="xs:boolean"/><xs:element name="byte" nillable="true" type="xs:byte"/><xs:element name="dateTime" nillable="true" type="xs:dateTime"/><xs:element name="decimal" nillable="true" type="xs:decimal"/><xs:element name="double" nillable="true" type="xs:double"/><xs:element name="float" nillable="true" type="xs:float"/><xs:element name="int" nillable="true" type="xs:int"/><xs:element name="long" nillable="true" type="xs:long"/><xs:element name="QName" nillable="true" type="xs:QName"/><xs:element name="short" nillable="true" type="xs:short"/><xs:element name="string" nillable="true" type="xs:string"/><xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte"/><xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt"/><xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong"/><xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort"/><xs:element name="char" nillable="true" type="tns:char"/><xs:simpleType name="char"><xs:restriction base="xs:int"/></xs:simpleType><xs:element name="duration" nillable="true" type="tns:duration"/><xs:simpleType name="duration"><xs:restriction base="xs:duration"><xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?"/><xs:minInclusive value="-P10675199DT2H48M5.4775808S"/><xs:maxInclusive value="P10675199DT2H48M5.4775807S"/></xs:restriction></xs:simpleType><xs:element name="guid" nillable="true" type="tns:guid"/><xs:simpleType name="guid"><xs:restriction base="xs:string"><xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}"/></xs:restriction></xs:simpleType><xs:attribute name="FactoryType" type="xs:QName"/><xs:attribute name="Id" type="xs:ID"/><xs:attribute name="Ref" type="xs:IDREF"/></xs:schema><xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/TMC_RFID_WebService" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.datacontract.org/2004/07/TMC_RFID_WebService"><xs:complexType name="TagnetChassisTrans"><xs:sequence><xs:element minOccurs="0" name="ObjectId" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="ReaderLocation" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="ReplyState" type="tns:MoveState"/><xs:element minOccurs="0" name="ScanDateTime" type="xs:dateTime"/><xs:element minOccurs="0" name="TagId" nillable="true" type="xs:string"/></xs:sequence></xs:complexType><xs:element name="TagnetChassisTrans" nillable="true" type="tns:TagnetChassisTrans"/><xs:simpleType name="MoveState"><xs:restriction base="xs:string"><xs:enumeration value="None"/><xs:enumeration value="Stop"/><xs:enumeration value="Error"/><xs:enumeration value="Go"/></xs:restriction></xs:simpleType><xs:element name="MoveState" nillable="true" type="tns:MoveState"/></xs:schema></wsdl:types><wsdl:message name="IService1_IsWsActive_InputMessage"><wsdl:part name="parameters" element="tns:IsWsActive"/></wsdl:message><wsdl:message name="IService1_IsWsActive_OutputMessage"><wsdl:part name="parameters" element="tns:IsWsActiveResponse"/></wsdl:message><wsdl:message name="IService1_IsDbActive_InputMessage"><wsdl:part name="parameters" element="tns:IsDbActive"/></wsdl:message><wsdl:message name="IService1_IsDbActive_OutputMessage"><wsdl:part name="parameters" element="tns:IsDbActiveResponse"/></wsdl:message><wsdl:message name="IService1_AddRfidTransaction_InputMessage"><wsdl:part name="parameters" element="tns:AddRfidTransaction"/></wsdl:message><wsdl:message name="IService1_AddRfidTransaction_OutputMessage"><wsdl:part name="parameters" element="tns:AddRfidTransactionResponse"/></wsdl:message><wsdl:message name="IService1_VerifyRfidTransaction_InputMessage"><wsdl:part name="parameters" element="tns:VerifyRfidTransaction"/></wsdl:message><wsdl:message name="IService1_VerifyRfidTransaction_OutputMessage"><wsdl:part name="parameters" element="tns:VerifyRfidTransactionResponse"/></wsdl:message><wsdl:portType name="IService1"><wsdl:operation name="IsWsActive"><wsdl:input wsaw:Action="http://tempuri.org/IService1/IsWsActive" message="tns:IService1_IsWsActive_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService1/IsWsActiveResponse" message="tns:IService1_IsWsActive_OutputMessage"/></wsdl:operation><wsdl:operation name="IsDbActive"><wsdl:input wsaw:Action="http://tempuri.org/IService1/IsDbActive" message="tns:IService1_IsDbActive_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService1/IsDbActiveResponse" message="tns:IService1_IsDbActive_OutputMessage"/></wsdl:operation><wsdl:operation name="AddRfidTransaction"><wsdl:input wsaw:Action="http://tempuri.org/IService1/AddRfidTransaction" message="tns:IService1_AddRfidTransaction_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService1/AddRfidTransactionResponse" message="tns:IService1_AddRfidTransaction_OutputMessage"/></wsdl:operation><wsdl:operation name="VerifyRfidTransaction"><wsdl:input wsaw:Action="http://tempuri.org/IService1/VerifyRfidTransaction" message="tns:IService1_VerifyRfidTransaction_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService1/VerifyRfidTransactionResponse" message="tns:IService1_VerifyRfidTransaction_OutputMessage"/></wsdl:operation></wsdl:portType><wsdl:binding name="BasicHttpBinding_IService1" type="tns:IService1"><soap:binding transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:operation name="IsWsActive"><soap:operation soapAction="http://tempuri.org/IService1/IsWsActive" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="IsDbActive"><soap:operation soapAction="http://tempuri.org/IService1/IsDbActive" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="AddRfidTransaction"><soap:operation soapAction="http://tempuri.org/IService1/AddRfidTransaction" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="VerifyRfidTransaction"><soap:operation soapAction="http://tempuri.org/IService1/VerifyRfidTransaction" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="Service1"><wsdl:port name="BasicHttpBinding_IService1" binding="tns:BasicHttpBinding_IService1"><soap:address location="http://localhost:54366/TMC_RFID_WebApplication.svc"/></wsdl:port></wsdl:service></wsdl:definitions>

RFID WS Outbound

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

  <s:Header>

    <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/IService1/AddRfidTransaction</Action>

  </s:Header>

  <s:Body>

    <AddRfidTransaction xmlns="http://tempuri.org/">

      <composite xmlns:d4p1="http://schemas.datacontract.org/2004/07/TMC_RFID_WebService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">

        <d4p1:ObjectId>1FC4E4KSXHDC66817</d4p1:ObjectId>

        <d4p1:ReaderLocation>GATE_1</d4p1:ReaderLocation>

        <d4p1:ReplyState>None</d4p1:ReplyState>

        <d4p1:ScanDateTime>2017-09-06T12:12:00</d4p1:ScanDateTime>

        <d4p1:TagId>E280117000000206FF8BCCEB</d4p1:TagId>

      </composite>

    </AddRfidTransaction>

  </s:Body>

</s:Envelope>

RFID WS Response

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

  <s:Header />

  <s:Body>

    <AddRfidTransactionResponse xmlns="http://tempuri.org/">

      <AddRfidTransactionResult xmlns:a="http://schemas.datacontract.org/2004/07/TMC_RFID_WebService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">

        <a:ObjectId>1FC4E4KSXHDC66817</a:ObjectId>

        <a:ReaderLocation>E2</a:ReaderLocation>

        <a:ReplyState>Stop</a:ReplyState>

        <a:ScanDateTime>2017-09-06T12:12:00</a:ScanDateTime>

        <a:TagId>12345</a:TagId>

      </AddRfidTransactionResult>

    </AddRfidTransactionResponse>

  </s:Body>

</s:Envelope>

 

 


Copyright © 2023 Stratum Global, Inc.