Navigation: Filtering & Collection > Event Bindings > Available Bindings > HTTP Post to Endpoint >

RFDDTAG - Single

Still need help? Create a Support Ticket with Stratum Support

Send comments on this topic.

← Previous Next →

 

 

Binding Function

RFDDTAG

 

Binding ID

DYNAMIC_TAG_INFO

 

Binding Description

Dynamic Content Individual Tag Information

 

Purpose

This binding will allow a user to configure an event payload that posts data to a specified HTTP/HTTPS endpoint using a number of supplied XSL style sheets to format the data into XML. This will enable a TagNet customer to send data to an endpoint without requiring any code changes to TagNet. Essentially this is a non-programmatic method to send a configurable XML payload to an HTTP endpoint. This data would then be parsed by the customers application and integrated with an ERP, MES or other similar system-of-record.

 

There are two variants of the RFDDTAG Binding:

1.Individual tag Info - for every tag seen during the read event cycle, a separate XML payload will be sent to the endpoint, so if (4) tags are read then (4) XML POSTs will take place. This variant is documented within this topic.

2.Multiple Tag List -  the taglist XML contains all tags within the event cycle. So if (4) tags are read then (1) XML POST will take place. This variant is documented here.

 

The Style Sheets should be copied out of TagNet/Integrator/JSMInstance/RFID/ folder into a user defined folder (e.g. Custom-xsl) within the as they will be overwritten upon subsequent updates to TagNet. The folder path for the modified style sheets would then be TagNet/Integrator/JSMInstance/Custom-xsl

 

Logic

Collects whatever tags are seen during a read event cycle from a given portal and performs the following logic:

üProcesses IMOVE rules is so specified in Binding properties and automatically transfers inventory from location A to Location B. Sends out email if IMOVE has [EMAIL] keyword anywhere in description.

üSupports full GPIO script as a result of standard MATCH / NOMATCH/ 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.

üTriggers Camera support if so configured in the Physical Reader profile

üSupports all Filter keywords (including *RSSI, *PRODTYPE, *ANTENNA)

üSupports Binding Email Exceptions. Email notification is sent when an error is encountered.

üSends out Tag Event data as listed below via an HTTP post to the user defined endpoint

Read Point attributes (Logical/Physical reader, antenna, RSSI, timestamp, etc.)

Base Item attributes

Asset attributes

Tag Mapping attributes

Tag Inventory attributes

UDA's (both Asset and Tag Inventory via UDA Group)

Parent/Child attributes

Employee attributes

üThe chart below shows what attributes are sent in the XML payload

üCan be used in RSSI zone configurations and supports system logging.

üCombines features from RFDPEVG and RFDPOST

üCan be run synchronously as an event binding or in Batch function. 

 

Restrictions

 

Comments

 A video tutorial of setting up this binding is accessible from this link

This binding can be tested with the EF Dynamic Tag Event test utility

Files Updated

RFDTAGVS

Program Name

URI set to RFDDTAG

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

 

UDA Grouping

UDA's at both the Asset instance level and Tag Inventory level instance can be included in the Dynamic XML by grouping them in a UDA Group Name

 

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.

 

IMOVE Rules

These directives specify the name and location of the XML. Refer to the the Binding Change for detailed explanations of each directive.

 

Data Layout & Style Sheets

This section specifies the content type (XML today with JSON in future), the Data layout, and the style sheet names that have been edited to included your specific attributes. Note that these style sheets are for the individual tag transaction payloads as denoted by the *TAGINFO Data Layout selection.

 

 

Binding Properties

 

Shown below are the required binding properties and descriptions that should be included in the event:

Field

Status

Description

Sample Data

Ip Address

Existing

The endpoint IP

https://myapp.com

URI

Existing

The binding name and endpoint url

RFDXSL-/rfidendpoint

Email Recipient

Existing

Will send error emails to this address

user@myapp.com

UDA Grouping

Existing

Allows the user to define UDA attributes to send

PART_GROUP

Dwell

Existing

The dwell time in minutes

1

Dwell Option

Existing

LOCATION or GLOBAL

GLOBAL

IMOVE Rules

Existing

YES/NO/RESULTSET if IMOVE rules are enabled

YES

Move Children

Existing

YES/NO if child tags are moved

NO

Log Result Set

Existing

YES/NO if result set enabled

NO

Content Type

New

Specifies the HTTP POST content type

Application/xml

XSL Location

New

The location of the XSL file

C:\TagNet\rfid.xsl

XSL UDA Location

New

The location of the UDA XSL file

C:\TagNet\uda.xsl

Data Fields

Field

Description

LocationID

Logical Reader Name

ReaderID

Physical Reader Name

Antenna

Antenna Name

RSSI

RSSI Value (if enabled)

Binding

The name of binding executed

RFDTGMAP

All tag mapping fields from RFDTGMAP for the tag scanned

UCCRCIM

All UCCRCIM fields for the item linked with the tag

RFDASSM

All asset data linked with the tag

RFDLOCIN

All location data linked with the tag

RFDLOCEX

UDAs based on the groupings

RFDASSEX

UDAs based on the groupings

RFDLOCIA

Any child tags

RFDPHLOG

Additional log data (sequence, timestamps, etc.)

 

 

Shown below are the configuration Style Sheets and resulting XML transaction sets:

 

Group

XSL Stylesheets

dynamic-

taginfo.xsl

 

<?xml version="1.0" encoding="UTF-8"?>

 

<xsl:transform version="1.0" exclude-result-prefixes="rdml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rdml="http://www.lansa.com/2000/XML/Function" xmlns:xalan="http://xml.apache.org/xslt">

 

<xsl:output method="xml" omit-xml-declaration="no" indent="yes" xalan:indent-amount="2"/>

 

<xsl:template match="/">

 

<TagNotification>

 

  <TagID><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDPLTGHX']/@value"/></TagID>

  <EventBindingID><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDREQBND']/@value"/></EventBindingID>

  <LocationID><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDREQLOC']/@value"/></LocationID>

  <ReaderID><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDPLRDID']/@value"/></ReaderID>

  <ScheduleDate><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDREQDAT']/@value"/></ScheduleDate>

  <ScheduleTime><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDREQTIM']/@value"/></ScheduleTime>

  <EventCycle><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDREQCYC']/@value"/></EventCycle>

  <SequenceNumber><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDPLTGSQ']/@value"/></SequenceNumber>

  <TagLogDate><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDPLTGDT']/@value"/></TagLogDate>

  <TagLogTime><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDPLTGTM']/@value"/></TagLogTime>

  <Antenna><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDPLTANT']/@value"/></Antenna>

  <RSSI><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDPLRSSI']/@value"/></RSSI>

 

  <Object><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDTGOBJT']/@value"/></Object>

  <ContainerID><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDBINID']/@value"/></ContainerID>

  <ContainerMapDate><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDBINDTE']/@value"/></ContainerMapDate>

  <ContainerMapTime><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDBINTME']/@value"/></ContainerMapTime>

  <ItemMapDate><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDITMDTE']/@value"/></ItemMapDate>

  <ItemMapTime><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDITMTME']/@value"/></ItemMapTime>

 

  <AssetID><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDASSTID']/@value"/></AssetID>

  <SerialNumber><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDASSRLN']/@value"/></SerialNumber>

  <DatePurchased><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDASPRDT']/@value"/></DatePurchased>

  <Value><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDASPVAL']/@value"/></Value>

  <CheckoutDuration><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDASCDUR']/@value"/></CheckoutDuration>

  <Comment><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDASTEXT']/@value"/></Comment>

 

  <Item><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDIID']/@value"/></Item>

  <PartID><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='UCCERPITM']/@value"/></PartID>

  <Category><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='UCCITMCCD']/@value"/></Category>

  <ItemName><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='UCCITMNAM']/@value"/></ItemName>

  <BrandName><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='UCCITMBRN']/@value"/></BrandName>

  <Description><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='UCCITMDSC']/@value"/></Description>

  <Image><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='UCCCRTIDN']/@value"/></Image>

 

  <EmployeeID><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDEMPUID']/@value"/></EmployeeID>

  <EmployeeBadgeNumber><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDEMPBDG']/@value"/></EmployeeBadgeNumber>

  <LastName><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDEMPLNM']/@value"/></LastName>

  <FirstName><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDEMPFNM']/@value"/></FirstName>

  <Company><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDEMPCMP']/@value"/></Company>

  <Trade><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDEMPTRD']/@value"/></Trade>

  <EmployeeImage><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDEMPIMG']/@value"/></EmployeeImage>

 

  <InventoryType><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDINVCCD']/@value"/></InventoryType>

  <Quantity><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDLOCQTY']/@value"/></Quantity>

  <Level1><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDLVL1ID']/@value"/></Level1>

  <Level2><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDLVL2ID']/@value"/></Level2>

  <Level3><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDLVL3ID']/@value"/></Level3>

  <Level4><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDLVL4ID']/@value"/></Level4>

  <Level5><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDLVL5ID']/@value"/></Level5>

  <LotNumber><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDLOCLOT']/@value"/></LotNumber>

  <LotStatus><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDLTCODE']/@value"/></LotStatus>

 

  <Attributes>

    <rdml:fragment name="TAGINFOATTRIBUTES" />

  </Attributes>

 

  <Children>

    <rdml:fragment name="TAGINFOCHILDREN" />

  </Children>

 

</TagNotification>

 

</xsl:template>

 

</xsl:transform>

dynamic-taginfo- attributes.xsl

 <xsl:transform version="1.0" exclude-result-prefixes="rdml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rdml="http://www.lansa.com/2000/XML/Function" xmlns:xalan="http://xml.apache.org/xslt">

 

<xsl:output method="xml" omit-xml-declaration="yes" indent="yes" xalan:indent-amount="2"/>

 

<xsl:template match="/">

 

<Element Value="{/rdml:function/rdml:fields/rdml:field[@name='RFDEUXVAL']/@value}"

         Description="{/rdml:function/rdml:fields/rdml:field[@name='RFDEUDESC']/@value}"

         Name="{/rdml:function/rdml:fields/rdml:field[@name='RFDEUELEM']/@value}"/>

 

</xsl:template>

 

</xsl:transform>

dynamic-taginfo-

children.xsl

<xsl:transform version="1.0" exclude-result-prefixes="rdml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rdml="http://www.lansa.com/2000/XML/Function" xmlns:xalan="http://xml.apache.org/xslt">

 

<xsl:output method="xml" omit-xml-declaration="yes" indent="yes" xalan:indent-amount="2"/>

 

<xsl:template match="/">

 

<ChildTagID><xsl:value-of select="/rdml:function/rdml:fields/rdml:field[@name='RFDIACHID']/@value"/></ChildTagID>

 

</xsl:template>

 

</xsl:transform>

 

 

Generated XML sent to HTTP endpoint

 

Action

XML Schema

Single Tag XML

<?xml version="1.0" encoding="UTF-8"?>

 

<TagNotification>

 

  <TagID>26C000000000000000000022</TagID>

  <EventBindingID>DYNAMIC_TAG_INFO</EventBindingID>

  <LocationID>SERVICE-GROUP</LocationID>

  <ReaderID>NEW-RDR</ReaderID>

  <ScheduleDate>20190624</ScheduleDate>

  <ScheduleTime>103204</ScheduleTime>

  <EventCycle>56</EventCycle>

  <SequenceNumber>1</SequenceNumber>

  <TagLogDate>20190624</TagLogDate>

  <TagLogTime>103703</TagLogTime>

  <Antenna>1</Antenna>

  <RSSI>-35.66</RSSI>

 

  <Object>ASSET</Object>

  <ContainerID>GROUPID</ContainerID>

  <ContainerMapDate>20121130</ContainerMapDate>

  <ContainerMapTime>140500</ContainerMapTime>

  <ItemMapDate>20121130</ItemMapDate>

  <ItemMapTime>140500</ItemMapTime>

 

  <AssetID>800406</AssetID>

  <SerialNumber>EV83792U789</SerialNumber>

  <DatePurchased>20070913</DatePurchased>

  <Value>50.00</Value>

  <CheckoutDuration>0</CheckoutDuration>

  <Comment>IT Dept</Comment>

 

  <Item>170000</Item>

  <PartID>C472E62A</PartID>

  <ItemName>Hand Drill</ItemName>

  <BrandName>Dewalt</BrandName>

  <Description>18 V Drill, with re-chargeable battery</Description>

  <Image>drill.jpg</Image>

 

  <EmployeeID>0</EmployeeID>

  <EmployeeBadgeNumber/>

  <LastName/>

  <FirstName/>

  <Company/>

  <Trade/>

 

  <InventoryType>ASSET TRACKING</InventoryType>

  <Quantity>1.00</Quantity>

  <Level1>LOCKER</Level1>

  <Level2>Z1</Level2>

  <Level3>A1</Level3>

  <Level4/>

  <Level5/>

  <LotNumber/>

  <LotStatus/>

 

  <Attributes>

    <Element Name="AUTHLEVEL" Description="Authority Level" Value="3"/>

    <Element Name="POLEID" Description="Utility Pole ID" Value=""/>

    <Element Name="STRTYP" Description="Structure Type" Value=""/>

    <Element Name="TREAT" Description="Type of Treatment" Value=""/>

  </Attributes>

 

  <Children>

    <ChildTagID>2F120353130353100000000A</ChildTagID>

    <ChildTagID>2F120353130353100000000B</ChildTagID>

  </Children>

 

</TagNotification>

XML Response

Endpoint sends back an HTTP 200 response


Copyright © 2024 Stratum Global, Inc.