Title: RFID Enabling your OpenEdge
1RFID Enabling your OpenEdge Application
- David Lund
- Sr. Training Program Manager, Progress
2Session Goals
- Present an architecture for integrating RFID
event capture into your OpenEdge applications - Shipping receiving docks,
- Packing stations,
- Conveyor systems,
- Introduce the OpenEdge RFID Library and how it
can help you meet your application RFID demands
3RFID Events
- Signal the placement or removal of a tagged item
in or from the detection field of an RFID reader - Event attributes
- Time
- Tag ID (EPC)
- Reader ID
- Action (Add or Delete)
- May trigger a business event
4RFID Business Events
- Events derived from low level RFID events and
other inputs. Puts events into a business context - Event attributes
- Business action (pack, ship, receive, )
- Location (DC 23, Dock 9, )
- Tag IDs (EPCs)
- Time
- Input to business apps
Invoice Invoice
xxxx xxx xxx v
xxxx xxx xxx v
xxxx xxx xxx v
xxxx xxx xxx v
5RFID Event Processing Goals
- Insulate applications from high volume, noisy
RFID event streams - Insulate applications from specifics of readers
to allow reader replacement - Process events on the edge to minimize load on
back-end systems - Automate generation of business events from low
level events - Store events to allow audit and analysis of
performance of business processes
6Architecture for RFID Event Capture
7The Event Layer
- RFID middleware (ALE)
- Application Level Event
- First line of defense against RFID noise
- Aggregates and filters RFID events
- Common API, independent of reader type
- RFID repository (RFID-Accelerator)
- Event history for audit and analysis
- Event buffer for store/forward, offline,
- RFID readers and sensors
- Physical devices on docks, conveyors,
8The Application Layer
- OpenEdge application
- Standalone,
- AppServer,
- OpenEdge RFID Library
- 4GL API for accessing ALE and RFID-A event data
- Hides details of ALE and RFID-A web service
interfaces
9RFID Event Flow
RFID Events
RFID Reader
Middleware (ALE)
Event History
Query
RFID Reader
Query
RFID Events
OpenEdge Application
10ALE Middleware
- Aggregates and filters RFID events
- Abstraction layer above readers
- Web-service interface for querying RFID events
(ECSpecs ECReports) - Query/Reply model and subscriptions (HTTP post,
JMS, ) - Answers question what is at reader X now
11RFID Accelerator
- Collection and storage of RFID event streams
(keep out of ERP/WMS DB) - Edge data store, buffering, track/trace,
- Greater noise reduction above ALE
- Web-service interface for querying RFID event
history (EHSpecs EHReports) - Query/Reply model
- Answers questions such as
- What passed through dock 5 yesterday between
900 and 1100 AM?
12What are Specs Reports?
- Specs define queries
- ECSpec Event Cycle Spec for ALE
- EHSpec Event History Spec for RFID-A
- Reports are the results of queries
- ECReport Event Cycle Report from ALE
- EHReport Event History Report from RFID-A
- XML documents passed via web service interface
13Sample ECSpec
- ltECSpecgt
- ltlogicalReadersgt
- ltlogicalReadergtdock_1alt/logicalReadergt
- ltlogicalReadergtdock_1blt/logicalReadergt
- lt/logicalReadersgt
- ltboundarySpecgt
- ltstartTriggergthttp//sample.com/trigger1lt/
startTriggergt - ltrepeatPeriod unit"MS"gt20000lt/repeatPerio
dgt - ltstopTriggergthttp//sample.com/trigger2lt/s
topTriggergt - ltduration unit"MS"gt3000lt/durationgt
- lt/boundarySpecgt
- ltreportSpecsgt
- ltreportSpec reportName"report1"gt
- ltreportSet set"CURRENT"/gt
- ltoutput includeList"true"/gt
- lt/reportSpecgt
- lt/reportSpecsgt
- lt/ECSpecgt
14Sample ECReport
- ltECReportsgt
- ltreportsgt
- ltreport reportName"report1"gt
- ltgroupgt
- ltgroupListgt
- ltmembergtltepcgturnepctaggid-64-i10.50.
1000lt/epcgtlt/membergt - ltmembergtltepcgturnepctaggid-64-i10.50.
1001lt/epcgtlt/membergt - lt/groupListgt
- lt/groupgt
- lt/reportgt
- ltreport reportName"report2"gt
- ltgroup name"urnepcpatsgtin-643.0037000
.12345."gt - ltgroupCountgtltcountgt2lt/countgtlt/groupCountgt
lt/groupgt - ltgroup name"urnepcpatsgtin-643.0037000
.55555."gt - ltgroupCountgtltcountgt3lt/countgtlt/groupCountgt
lt/groupgt - lt/reportgt
- lt/reportsgt
- lt/ECReportsgt
15OpenEdge RFID Library Overview
- OpenEdge library for integrating the processing
of RFID events into OpenEdge applications - Supports retrieval of RFID events from any ALE
middleware (either query/reply or subscriptions) - Supports retrieval of RFID event history from
RFID-A
16OpenEdge RFID Library Features
- Easy to use API provides a procedural approach to
creating and issuing queries - No need to know details EC/EHSpecs
- Event data presented as ProDataSets and
TempTables makes it easy to process data in 4GL - No need to know details EC/EHReports
- No need to know details of web services or SOAP
17Example 1 Receiving Dock Monitor
- Receives asynchronous reports from ALE as pallets
of goods move through the dock - As each report is received OpenEdge RFID Library
creates a temp-table of tags which moved through
dock and calls user procedure to process the tags - Same concepts apply to other RFID situations
shipping, packing, conveyor ...)
18Sample API Usage
- RUN rfid/rfidlib.p PERSISTENT SET hrfidlib.RUN
createALEClient IN hrfidlib (INPUT url,
OUTPUT hALEClient).RUN
createECSpec IN hrfidlib (OUTPUT hECSpec).RUN
setLogicalReaders IN hECSpec (INPUT
DockDoor1).RUN setDuration IN hECSpec (INPUT
duration)....RUN createECReportSpec in
hrfidlib (INPUT name, OUTPUT hECReportSpec).RUN
addIncludePattern in hECReportSpec
(INPUT
filter).RUN addECReportSpec in hECSpec (INPUT
hECReportSpec).RUN immediate IN hALEClient
(INPUT hECSpec, OUTPUT DATASET dsECReport).FOR
EACH ttECReport FOR EACH ttECGroup OF
ttECReport FOR EACH ttECMember OF
TTECGroup DISPLAY ttECMember.epc.
END. END.END.
19Load OpenEdge RFID Library Procedure Library
- RUN rfid/rfidlib.p PERSISTENT SET hrfidlib.RUN
createALEClient IN hrfidlib (INPUT url,
OUTPUT hALEClient).RUN
createECSpec IN hrfidlib (OUTPUT hECSpec).RUN
setLogicalReaders IN hECSpec (INPUT
DockDoor1).RUN setDuration IN hECSpec (INPUT
duration)....RUN createECReportSpec in
hrfidlib (INPUT name, OUTPUT hECReportSpec).RUN
addIncludePattern in hECReportSpec
(INPUT
filter).RUN addECReportSpec in hECSpec (INPUT
hECReportSpec).RUN immediate IN hALEClient
(INPUT hECSpec, OUTPUT DATASET dsECReport).FOR
EACH ttECReport FOR EACH ttECGroup OF
ttECReport FOR EACH ttECMember OF
TTECGroup DISPLAY ttECMember.epc.
END. END.END.
20Create an ALE Client
- RUN rfid/rfidlib.p PERSISTENT SET hrfidlib.RUN
createALEClient IN hrfidlib (INPUT url,
OUTPUT hALEClient).RUN
createECSpec IN hrfidlib (OUTPUT hECSpec).RUN
setLogicalReaders IN hECSpec (INPUT
DockDoor1).RUN setDuration IN hECSpec (INPUT
duration)....RUN createECReportSpec in
hrfidlib (INPUT name, OUTPUT hECReportSpec).RUN
addIncludePattern in hECReportSpec
(INPUT
filter).RUN addECReportSpec in hECSpec (INPUT
hECReportSpec).RUN immediate IN hALEClient
(INPUT hECSpec, OUTPUT DATASET dsECReport).FOR
EACH ttECReport FOR EACH ttECGroup OF
ttECReport FOR EACH ttECMember OF
TTECGroup DISPLAY ttECMember.epc.
END. END.END.
21Create an ECSpec
- RUN rfid/rfidlib.p PERSISTENT SET hrfidlib.RUN
createALEClient IN hrfidlib (INPUT url,
OUTPUT hALEClient).RUN
createECSpec IN hrfidlib (OUTPUT hECSpec).RUN
setLogicalReaders IN hECSpec (INPUT
DockDoor1).RUN setDuration IN hECSpec (INPUT
duration)....RUN createECReportSpec in
hrfidlib (INPUT name, OUTPUT hECReportSpec).RUN
addIncludePattern in hECReportSpec
(INPUT
filter).RUN addECReportSpec in hECSpec (INPUT
hECReportSpec).RUN immediate IN hALEClient
(INPUT hECSpec, OUTPUT DATASET dsECReport).FOR
EACH ttECReport FOR EACH ttECGroup OF
ttECReport FOR EACH ttECMember OF
TTECGroup DISPLAY ttECMember.epc.
END. END.END.
22Set ECSpec Attributes
- RUN rfid/rfidlib.p PERSISTENT SET hrfidlib.RUN
createALEClient IN hrfidlib (INPUT url,
OUTPUT hALEClient).RUN
createECSpec IN hrfidlib (OUTPUT hECSpec).RUN
setLogicalReaders IN hECSpec (INPUT
DockDoor1).RUN setDuration IN hECSpec (INPUT
duration)....RUN createECReportSpec in
hrfidlib (INPUT name, OUTPUT hECReportSpec).RUN
addIncludePattern in hECReportSpec
(INPUT
filter).RUN addECReportSpec in hECSpec (INPUT
hECReportSpec).RUN immediate IN hALEClient
(INPUT hECSpec, OUTPUT DATASET dsECReport).FOR
EACH ttECReport FOR EACH ttECGroup OF
ttECReport FOR EACH ttECMember OF
TTECGroup DISPLAY ttECMember.epc.
END. END.END.
23Create an ECReport Spec
- RUN rfid/rfidlib.p PERSISTENT SET hrfidlib.RUN
createALEClient IN hrfidlib (INPUT url,
OUTPUT hALEClient).RUN
createECSpec IN hrfidlib (OUTPUT hECSpec).RUN
setLogicalReaders IN hECSpec (INPUT
DockDoor1).RUN setDuration IN hECSpec (INPUT
duration)....RUN createECReportSpec in
hrfidlib (INPUT name, OUTPUT hECReportSpec).RUN
addIncludePattern in hECReportSpec
(INPUT
filter).RUN addECReportSpec in hECSpec (INPUT
hECReportSpec).RUN immediate IN hALEClient
(INPUT hECSpec, OUTPUT DATASET dsECReport).FOR
EACH ttECReport FOR EACH ttECGroup OF
ttECReport FOR EACH ttECMember OF
TTECGroup DISPLAY ttECMember.epc.
END. END.END.
24Add ECReportSpec to ECSpec
- RUN rfid/rfidlib.p PERSISTENT SET hrfidlib.RUN
createALEClient IN hrfidlib (INPUT url,
OUTPUT hALEClient).RUN
createECSpec IN hrfidlib (OUTPUT hECSpec).RUN
setLogicalReaders IN hECSpec (INPUT
DockDoor1).RUN setDuration IN hECSpec (INPUT
duration)....RUN createECReportSpec in
hrfidlib (INPUT name, OUTPUT hECReportSpec).RUN
addIncludePattern in hECReportSpec
(INPUT
filter).RUN addECReportSpec in hECSpec (INPUT
hECReportSpec).RUN immediate IN hALEClient
(INPUT hECSpec, OUTPUT DATASET dsECReport).FOR
EACH ttECReport FOR EACH ttECGroup OF
ttECReport FOR EACH ttECMember OF
TTECGroup DISPLAY ttECMember.epc.
END. END.END.
25Poll the ALE
- RUN rfid/rfidlib.p PERSISTENT SET hrfidlib.RUN
createALEClient IN hrfidlib (INPUT url,
OUTPUT hALEClient).RUN
createECSpec IN hrfidlib (OUTPUT hECSpec).RUN
setLogicalReaders IN hECSpec (INPUT
DockDoor1).RUN setDuration IN hECSpec (INPUT
duration)....RUN createECReportSpec in
hrfidlib (INPUT name, OUTPUT hECReportSpec).RUN
addIncludePattern in hECReportSpec
(INPUT
filter).RUN addECReportSpec in hECSpec (INPUT
hECReportSpec).RUN immediate IN hALEClient
(INPUT hECSpec, OUTPUT DATASET dsECReport).FOR
EACH ttECReport FOR EACH ttECGroup OF
ttECReport FOR EACH ttECMember OF
TTECGroup DISPLAY ttECMember.epc.
END. END.END.
26Iterate Through Results
- RUN rfid/rfidlib.p PERSISTENT SET hrfidlib.RUN
createALEClient IN hrfidlib (INPUT url,
OUTPUT hALEClient).RUN
createECSpec IN hrfidlib (OUTPUT hECSpec).RUN
setLogicalReaders IN hECSpec (INPUT
DockDoor1).RUN setDuration IN hECSpec (INPUT
duration)....RUN createECReportSpec in
hrfidlib (INPUT name, OUTPUT hECReportSpec).RUN
addIncludePattern in hECReportSpec
(INPUT
filter).RUN addECReportSpec in hECSpec (INPUT
hECReportSpec).RUN immediate IN hALEClient
(INPUT hECSpec, OUTPUT DATASET dsECReport).FOR
EACH ttECReport FOR EACH ttECGroup OF
ttECReport FOR EACH ttECMember OF
TTECGroup DISPLAY ttECMember.epc.
END. END.END.
27Example 2 Receiving Dock Analysis
- Queries RFID-A to determine goods received at a
dock door over some time period - For each report OpenEdge RFID Library creates a
temp-table of tags which moved through dock door
in that time period and the temp table is then
processed by the application - Same concepts apply to other RFID situations
track trace, auditing, performance analysis,
28OpenEdge RFID LibraryAPIs for ALE RFID-A
- The ALE and RFID-A APIs in OpenEdge RFID Library
are very similar. If you learn one you know the
other. - Primary difference is for RFID-A you specify a
date/time range of events to be retrieved for
ALE you specify event cycle boundaries.
29OpenEdge RFID Library Prerequisites
- OpenEdge 10.0B02
- RFID-A 3.1
- RFID Middleware Compliant with EPCglobal ALE 1.0
specification - ConnecTerra RFTagAware
- Others to be announced
30Whats Missing in OpenEdge RFID Library
- Tag writing
- Not necessary if using 3rd party
writing/labeling software. Here OpenEdge is a
simply source of tag data - Tag killing
- Will provide API for tag writing/killing when
added to ALE standard
31Data Management Strategy
- Comprehensive Data Management Strategy
- What data is relevant?
- Where must the data be digested?
- How does a tag read relate to other reads?
- What context is required to provide
understanding? - What reporting/sharing is required by internal
users? By each trading partner?
32EPC-IS A Proposed Data Management Standard
- New architecture proposed by EPCglobal
- Standard definition occurring amongst its working
groups - Goal is standardize the functionality and roles
of an EPC repository - Capture of low level events
- Transformation
- Application of business context
- Data sharing with trading partners
33RFID Event Management
- RFID events are being processed at the edge
- Where the events occur
- Frequently morphing into existing transaction
formats - Upstream relay of events into enterprise
- Must allow for reporting/monitoring
- Must enable higher level events to be triggered
from multiple edge-based event streams
34RFID Event Information Architecture
Local ONS
Business App
- Subscribe or trigger based reporting
Messaging
Enterprise
- Repository builds a history of events, actions,
associations derivations
Query Server
EPC Action Repository
Messaging
- Intelligence to drive higher level updates
Edge
EPC Capture/Transform Application
- RFID reads combine with other sensing feeds
ALE
Sensors
Indicators
Readers
357 Principles of RFID Data Management
- Digest Data Close to the Source
- Turn Simple Events into Meaningful Events
- Buffer Event Streams
- Cache Context
- Federate Data Distribution in Real Time
- Age RFID Data Gracefully
- Automate Exception Handling
362 Turn Simple Events into Meaningful Events
Complex Event Query
Simple Events
Meaningful Events
Meaningful information emerges
37RFID ESP Example
IF ASN unloaded_from_truck AND locationdestinatio
n FOLLOWED-BY INSPECT damaged VALIDATE
agreed ACTION ASN bill_customer FOLLOWED-BY
TRUCK permission-to-leave ACTION stop_truck
ASN
INSPECT
VALIDATE
time
Event Stream Processing Multiple streams of
events Optimized for time cause Identify
patterns ESP results in actions Requires
massively parallel event processing in real time
Bill the customer
38Questions?
- Andrew McCarthy
- Progress OpenEdge Division
- dmccarth_at_progress.com
- John Trigg
- Progress Real Time Division
- jtrigg_at_progress.com
39Thank you for your time!
40(No Transcript)