# Edgeflow Reference

# Edgeflow Module Reference

This section describes reference information for the WebLogic RFID Edge Server edgeflow modules.

You may notice similarities across modules. Each module requires parameters for operation (which can include information such as timing data and EPCIS data) and parameters that allow it to connect to other modules and send data to outside destinations.

You configure edgeflow modules using the RFID Edge Server Administration Console. See Configuring Workflow Modules in Using the Administration Console.

Note: | In version 3.0 of WebLogic RFID Edge Server, workflow modules supported in previous releases are supported in a limited manner. See Workflow Module Reference for Versions Prior to 3.0 for more information.

The following edgeflow modules are described:

- Aggregation Reconciler
- Bar Code Decoder
- Counter
- Directional Filter
- Directional Filter (Auto Configuration)
- ECSpec Subscriber
- EPC Cache Manager
- EPCIS Aggregation Event Generator
- EPCIS Manifest Query
- EPCIS Object Event Generator
- External Sender
- HTTP Receiver (One Way)
- HTTP Receiver (Request Response)
- Numeric Display (EDI111 LED)
- Preset Message (Dynamic)
- Preset Message (Static)
- Serial Number Replenisher (BEA Service)
- Serial Number Replenisher (Static)
- Stack Light
- State Filter
- Tag Accumulator
- Tag Counter
- Tag List Filter
- Tag Verifier
- Trigger Receiver
- Wait For Time
- Wait For Trigger
- Write Tag
- XML Generator
- XML Parser
- XML Transformer

## Aggregation Reconciler

An Aggregation Reconciler module receives an aggregation event and sends to an external sender to request the manifest for the aggregation.

The Aggregation Reconciler module can be used to find out if an aggregation has the expected items or not. The Aggregation Reconciler module compares an aggregation with its manifest (expected elements in an aggregation). The comparison result is based on the properties such as percentage of children-match required.

Consider the following usage:

1. An EPCIS Aggregation Event Generator creates an aggregation for the tags it receives from a Tag Accumulator module or a Tag List Filter module.
2. An Aggregation Reconciler module receives the aggregation from the EPCIS Aggregation Event Generator module and sends to an EPCIS Manifest Query module or a custom module that generates the manifest for the query.
3. The Aggregation Reconciler receives the manifest and performs the reconciliation.

The Aggregation Reconciler module fields are shown in Table 3-1.

Table 3-1 Aggregation Reconciler Module
Field Name | Value/Type | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Aggregation Reconciler. | Type of module. Values are chosen from a list of module types.
Acceptable Children Match % | Percentage (Decimal) | Specifies what percentage of children must be matched to produce a "true" matched-children result. Enter a value between 0 and 100 to specify the match percentage required.
Allow Extra Children | True/False | Determines whether extra children are allowed when deciding if there is a match. If this is true, extra children produce true for the matched children result. If this is false, detection of extra children produces false for the matched children result.
Match Parent | Never If EPC If Not EPC Always | Specifies whether the parent must be matched when the expected parent is, or is not, an EPC URI.
Module Outputs |  |
Manifest Request | EPCIS Document | Required. This is the output port through which the request for the manifest is sent. For example, in this field you might specify an EPCIS Manifest Query module or a custom module that generates the manifest for the query.
Parent Matched | Boolean | Specify the location to send a Boolean indicating whether the parent matched.
Children Matched | Boolean | Specify the location to send a Boolean indicating whether the required percentage of children IDs was found.
Missing Entries | Manifest | Specify the location to send an Aggregation manifest containing IDs indicating which entries were missing. For example, reconciliation-result-missing-sender:Input
Extra Entries | Manifest | Specify the location to send an Aggregation Manifest with the IDs that were in the aggregation, but not expected. For example, reconciliation-result-extra-sender:Input
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Aggregation | EPCIS Document | The aggregation received from another module. This is the aggregation that is to be reconciled. For example, the EPCIS Aggregation Event Generator might create an aggregation for the tags it receives. It could then send the aggregation to an Aggregation Reconciler module.
Manifest | Manifest | Manifest that is compared against the aggregation. This could come from a custom module or an EPCIS Manifest Query module.

## Bar Code Decoder

This module takes in a bar code string or bar code Tag List and converts it to an EPC ID or EPC ID pattern.

For example, you might use an HTTP Receiver (One Way) module to receive bar codes from an external source, or you might receive a bar code tag list from a Tag List Filter module that itself receives ECReports for an ECSpec configured to read from a bar code reader.

This module supports the following bar code types:

- UCC12
- UCC13
- SSCC
- GTIN
- GLN
- GRAI
- GIAI

Note: | Symbology character decoding is not supported; SSCC and SGTIN barcode with AI fields are not supported.

Table 3-2 describes how bar codes are processed based on the number of digits in the bar code.

Table 3-2 How Bar Codes Are Processed
Number of Characters in Bar Code | How Processed
--- | ---
12 | Padded to 14 characters by prepending zeroes Check if it is GTIN/UCC12 If not, check if it is GIAI
13 | Padded to 14 characters by prepending zeroes Check if it is GTIN/UCC13 If not, check if it is GIAI
14 | Check if it is GTIN If not, check if it is GIAI
16 | Check if is GLN If not, check if it is GIAI
18 | Check if it is SSCC If not, check if it is GRAI If not, check if it is GIAI

The Bar Code Decoder module fields are shown in Table 3-3.

Table 3-3 Bar Code Decoder

Field Name | Value/Type | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Bar Code Decoder | Type of module. Values are chosen from a list of module types.
Module Outputs |  |
Decoded ID or Pattern | URI String | Specifies the destination for the decoded bar code. For example, you might send the bar code to the Write input of a Write Tag module: tag-commissioning-write:Write For bar codes that already contain a serial number reference (SSCC) the EPC id is generated. Otherwise, the EPC id pattern is generated.
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Bar Code | Bar Code String/TagList | String type (complying with barcode EPC tag data) or tag list representing barcode data.

## Counter

This module is used to display a count, or similar information on a numeric display device.

For example, you can use the output of a Tag Accumulator module with a Counter module to get a count of EPCs seen.

The Counter module fields are shown in Table 3-4.

Table 3-4 Counter Module
Field Name | Value/Type | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Counter | Type of module. Values are chosen from a list of module types.
Always Counting | True/False | Specifies if the module is counting on active startup.
Reset on Start | True/False | Specifies if the module resets the count to initial input message on every startup.
Initial Count | Number | Specifies the initial value for the module. This value is used when the module starts and when it is reset.
Count Duration | Milliseconds | Specifies the timeout period for sending output. Must be greater than, or equal to, zero. Zero means infinite time, which means that final count output is sent only on finish message.
Module Outputs |  |
Final Count | Number | On a finish request or send timeout, specifies where to send the final count. For example, smart-shelf-final-count-sender:Input
Running Count | Number | Specifies where to send the current count. For example, smart-shelf-count-sender:Input This count is sent for every add, subtract, increment, or decrement input.
Module State | Working or Idle | Specifies where to send the module state: Working - sent when the module starts processing in response to Start input. Idle - sent when the module stops processing in response to finish input.
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Add | Number | This port accepts a count (integer) and adds it to the current count.
Subtract | Number | This port accepts a count (integer) and decrements it from the current count.
Increment | Any Message Type | This port takes in any message type and increments the count by one on every message.
Decrement | Any Message Type | This port accepts any message type and decrements the count by one on every message.
Start | Any Message Type | This message starts the count. This port accepts messages of any type.
Finish | Any Message Type | This message triggers the module to send the final count. The count value will be reset to the configured initial count value. If it is configured to be "always count," it will be in count mode. If not, it will wait for a start message to start counting again.

## Directional Filter

You can use this module to determine the direction in which an EPC is moving. Specifically, the module is used to determine the direction between two points.

This module is similar to the Directional Filter (Auto Configuration) module. However, in this module the user is responsible for defining the ECSpec and its subscriptions.

The Directional Filter module fields are shown in Table 3-5.

Table 3-5 Directional Filter Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Directional Filter | Type of module. Values are chosen from a list of module types.
Initial State | Started/Stopped | Specify if the module is started or stopped at startup. The default is stopped.
Stale Tag Timeout | Time in milliseconds. Must be greater than zero. | Required. Determines how long a tag is kept active after it is not detected at the second read point. Defaults to 180,000.
A-side Addition Report Names | ECReport name | ECReport name that states "I see (add) the tag at position A."
A-side Deletion Report Names | ECReport name | ECReport name that states "I no longer see (delete) the tag at position A."
B-side Addition Report Names | ECReport name | ECReport name that states "I see (add) the tag at position B."
B-side Deletion Report Names | ECReport name | ECReport name that states "I no longer see (delete) the tag at position B."
Module Outputs |  |
A to B Tag List |  | Specifies where to send the list of tags that passed from side A to B. For example, interior-door-observeA2B:Tag List
B to A Tag List |  | Specifies where to send the list of tags that passed from side B to A. For example, interior-door-observeA2B:Tag List.
Module State | Working Idle | Specifies where to send the module status: Working - sent when the module starts processing messages in response to Start input. Idle - sent when the module stops processing messages in response to Stop input.
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
ECReports | ECReports | Receives all add/delete reports indicating tags were added/deleted at point A or B. Typically, either this input or the specific addition/deletion inputs are used, but not both.
A-side Additions | Tag List | To notify module that tags were added at point A
A-side Deletions | Tag List | To notify module that tags were deleted at point A
B-side Additions | Tag List | To notify module that tags were added at point B
B-side Deletions | Tag List | To notify module that tags were deleted at point A
Start | Any Message Type | Start processing input messages to determine direction.
Stop | Any Message Type | Stop processing input messages to determine direction.

## Directional Filter (Auto Configuration)

Use this module to determine the direction in which an EPC is moving. The module can be used to determine the direction between two points.

The module creates an ECSpec for the read points and subscribes itself to receive notifications of EPC sightings. Logical reader names are required to be configured for each side.

The Directional Filter module fields are shown in Table 3-6.

Table 3-6 Directional Filter Module (Auto Configuration)
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Directional Filter (Auto Configuration) | Type of module. Values are chosen from a list of module types.
Initial State | Started/Stopped | Specify if the module is started or stopped at startup. The default is stopped.
Stale Tag Timeout | Time in milliseconds. Must be greater than zero. | Required. Determines how long a tag is kept active after it is not detected at the second read point. Defaults to 180,000.
A-side Logical Reader Names | Logical Reader Name | Required. Logical reader names for side A.
B-side Logical Reader Names | Logical Reader Name | Required. Logical reader names for side B.
Include Filters | EPC patterns EPC ID | EPC patterns. Or, if specified, direction will be calculated only for EPCs that match EPC ID patterns.
Exclude Filters | EPC patterns EPC ID | EPC patterns. Or, if specified, direction will be excluded only for EPCs that match EPC ID patterns.
Module Outputs |  |
A to B Tag List | Tag List | Specifies where to send the tag list that passed from point A to point B during the current event cycle. For example, interior-door-observeA2B:Tag List
B to A Tag List | Tag List | Specifies where to send the tag list that passed from point B to point A during the current event cycle. For example, interior-door-observeB2A:Tag List
Module State | Working Idle | Specifies where to send the following states: Working - sent when the module starts processing messages as a result of Start input. Idle - sent when the module stops processing messages as a result of Stop input.
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Start | Any Message Type | Start looking for EPCs to determine direction.
Stop | Any Message Type | Stop looking for EPCs to determine direction.

## ECSpec Subscriber

Use this module to subscribe to ECSpecs only when needed: ECSpecs do not stay active.

The ECSpec names parameter allows you to specify from which ECSpecs this module should get ECReports.

A subscribe request adds a subscription for itself for an ECSpec; an unsubscribe request removes the subscription from the ECSpec.

The ECSpec Subscriber module fields are shown in Table 3-7.

Table 3-7 ECSpec Subscriber Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | ECSpec Subscriber | Type of module. Values are chosen from a list of module types.
Initial State | Subscribed/Unsubscribed | Specify if the module is subscribed or unsubscribed at startup. The default value is unsubscribed.
ECSpec Names | EPSpec Name | Required. Specify the name of the ECSpec to which to subscribe.
Module Outputs |  |
ECReports | ECReports | ECReports derived from the subscribed ECSpec
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Subscribe | Message of any type | Subscribe to ECSpec.
Unsubscribe | Message of any type | Unsubscribe from ECSpec.

## EPC Cache Manager

An EPC cache is an ordered list of EPC values used in sequence to program tags. An EPC cache allows a series of tags to be programmed without application intervention or extra tag programming to supply new EPC codes.

You can use this module to create and manage a cache. The configuration values are specific to the caches managed by this module. This module will:

- Create a named cache for a given item.
- Configure the cache by contacting the configured Serial Number Replenisher (BEA Service) or Serial Number Replenisher (Static) module and receiving available EPCs from it.
- Replenish the cache when necessary. The module can receive cache low notification and contact Serial Number Replenisher (BEA Service) or Serial Number Replenisher (Static) modules for replenishment.
- Creates a PCSpec for the cache that it created, and sends it to the configured module.

For example, you might use the EPC Cache Manager together with the Serial Number Replenisher (Static) module (or a Serial Number Replenisher (BEA Service) module) as follows:

1. Send the Replenishment Request output of the EPC Cache Manager module to the Replenishment Request input of a Serial Number Replenisher (Static) module.
2. Send the resulting Replenishment output from a Serial Number Replenisher (Static) module to the Replenishment input of the EPC Cache Manager module.

The EPC Cache Manager module fields are shown in Table 3-8.

Table 3-8 EPC Cache Manager Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | EPC Cache Manager | Type of module. Values are chosen from a list of module types.
Cache Name Prefix | String | Specify a unique, identifying prefix for the cache name. For example, tag-commissioning-sample- Either the Cache Name Prefix or Cache Name Suffix is required.
Cache Name Suffix | String | Specify a unique, identifying suffix for the cache name. Either the Cache Name Prefix or Cache Name Suffix is required.
EPC Length | 64-bits/96-bits | Select 64 bit or 96 bit EPCs.
EPC Filter Value |  | Required. Specify the EPC filter value between 0 and 7.
PCSpec Request Timeout | Milliseconds | Required. Time to wait for PCSpec. Must be greater than or equal to zero. This is the amount of time it will wait to receive EPCs for the cache it creates to define a PCSpec with the cache.
Auto Replenish | True/False | Replenish the cache when necessary.
Cache Low Threshold | Integer. | When this number of EPC's remain in the cache, replenish it. You set the size of the cache in the Replenishment Size field of the Serial Number Replenisher (BEA Service) and Serial Number Replenisher (Static) modules.
Module Outputs |  |
Replenishment Request | URI String | Specifies where to send requests to fill the cache. For example, tag-commissioning-static-replenisher:Replenishment Request
PCSpec | PCSpec | Specifies where to send the PCSpec with the created cache.
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
PCSpec Request | URI String | Request for the PCSpec with the appropriate cache name in it.
Replenishment | URI String List | This port receives EPCs. When it receives EPCs, it checks to see if it is waiting for this response (initiated because of cache low notification or because of cache setup request). If it is waiting for the response, it creates or replenishes the cache.

## EPCIS Aggregation Event Generator

You can use this module to generate an EPCIS aggregation event for a given set of EPCs.

An EPCIS event is an observation of EPC-related activity, expressed at the business level. EPCIS events typically have four informational aspects: what (which EPCs or other entities participated in the event), when (the date and time of the event), where (the location where the event took place and where the entities are expected to be afterward), and why (what business transaction was taking place and what is the business condition of the entities afterward).

Consider the following usage:

1. A Tag List Filter module takes the ECReports produced by the ECSpec, extracts the tag information and sends it to the TagList port of an EPCIS Aggregation Event Generator module.
2. The EPCIS Aggregation Event Generator creates an aggregation for the tags it receives from the Tag List Filter. The aggregation event may be sent to an EPCIS system.

Note: | As described in the EPCglobal EPCIS (Electronic Product Code Information Service) Frequently Asked Questions document, the EPCIS Data Model specifies a standard way to represent visibility information about physical objects, including descriptions of product movements in a supply chain. See that document for information about the Business Step, Disposition, Read Point, Business Location, and Business Transaction fields.

The EPCIS Aggregation Event Generator module fields are shown in Table 3-9.

Table 3-9 EPCIS Aggregation Event Generator Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | EPCIS Aggregation Event Generator | Type of module. Values are chosen from a list of module types.
Initial State | Started/Stopped | Specify the state of the module at startup. The default is Started.
Parent Include Patterns | EPC EPC Pattern Any URI | Required for add or delete action on the aggregation event. The module looks for EPCs matching these patterns in the input it receives and use the EPC that matches as the parent id. EPC patterns, EPC ID patterns, EPC, or any URI may be specified. For example, urn:epc:pat:gid-64-i:*.*.1 If a non-EPC URI is specified, it should be the only value specified and it is used as the parent id field in the generated aggregation event.
Parent Exclude Patterns | EPC Patterns | Valid EPC patterns or EPC identity patterns must be specified. EPCs matching these patterns will be excluded from being the parent ID.
Children Include Patterns | EPC patterns EPC ID Patterns EPC | If specified, only EPCs matching these patterns will be used as child EPCs in the aggregation event.
Children Exclude Patterns | EPC patterns EPC ID Patterns EPC | EPC's that match the patterns will be excluded from the child EPCs list.
EPCIS Event Fields |  |
Action | ADD DELETE OBSERVE | Required. Specify ADD, DELETE, or OBSERVE for an event action.
Read Point | URI | Read point URI that is used in the generated Aggregation Event.
Business Location | URI | Business location URI that is used in the generated Aggregation Event. For example, urn:acmecorp:bizLocation:store1.salesfloor
Business Step | URI | The business process step that was occurring when the event was captured.
Disposition | URI | Disposition URI that is used in the generated Object Event.
Business Transactions | Transaction Type/Transaction ID | Business transaction type and ID.
Event Extensions | Namespace/Name/Value | List of namespace-name-value tuples included as extensions in the object event.
Module Outputs |  |
EPCIS Event | EPCIS Document | Specifies where to send the EPCIS aggregation event. For example, it might send the aggregation to an Aggregation Reconciler module Aggregation input.
Template Event | EPCIS Document | The template event received on the Template Event input (and then applied) is sent out from this port. The template event is sent as an acknowledgement to a template event message. This may be used by other modules or external applications to make sure that the template is applied before starting to send tags to the module.
Module State | Working Idle | Specify where to send an output string representing status of the module. There are two possible states: Working: Sent every time the module moves into the state where it is processing messages. Idle: Send every time the modules moves into the state where it is not processing messages.
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Tag List | Tag List | List of tags used to generate aggregation events. For example, the Tag List might be sent by a Tag List Filter module.
Template Event | EPCIS Document | This port accepts an EPCIS Document with an aggregation event. This port may be used to dynamically change the parameters for generating an aggregation event. The values specified through the template override those specified as configuration on the module. EPC values and action on the template event is ignored. If values are null on the template event, the values configured on the module are used. If the fields Read Point, Business Location, Business Step, and Disposition are non-null on the template event, they override the values specified at module configuration. Business Transactions and Event Extensions specified on the template event are added to those specified as part of the module configuration. The Template Event is typically generated by an external source.
Start | Any Message Type | Indicates that the module should start processing messages it receives at the Tag List input port. If the module did not come up in started mode (initial state), the module will ignore messages on the Tag List port until it gets start message. This port accepts any message type. A message on this port changes the module state from Idle to Working.
Stop | Any Message Type | Indicates that the module should start processing messages it receives at the Tag List input port. After it receives a stop message, the module ignores messages on the Tag List port until it receives a start message again. A message on this port changes the module state from Working to Idle.

## EPCIS Manifest Query

This module gets a manifest, which specifies what the content of an aggregation should be, from an EPCIS repository. It determines the manifest based on the latest ADD and DELETE aggregation event for the parent ID on the input aggregation.

When the exact IDs expected in an aggregation are known, the URI is the EPC ID. If only the item type is known, the URI is an EPC ID Pattern identifying the type. The module produces an error if the (input) aggregation does not have a parent ID.

The EPCIS Manifest Query module fields are shown in Table 3-10. The generated manifest is a map from URI to the expected-count for the URI.

Table 3-10 EPCIS Manifest Query Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | EPCIS Manifest Query | Type of module. Values are chosen from a list of module types.
EPCIS WSDL URL | URL | Required. The WSDL URL to connect to the EPCIS. The default is http://localhost:7001/epcis/EPCIS?WSDL
Username |  | Username required to access the EPCIS database.
Password |  | Password required to access the EPCIS database.
Connection Timeout | Milliseconds | Required. Time, in milliseconds, to wait for response from EPCIS. Must be greater than zero.
Module Outputs |  |
Manifest | Manifest | The generated manifest is sent through this port.
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Aggregation | EPCIS Document | Aggregation for which manifest is to be calculated. Possibly output from an EPCIS Aggregation Event Generator module.

## EPCIS Object Event Generator

This module is used to generate an EPCIS Object Event from a given list of EPCs.

An EPCIS event is an observation of EPC-related activity, expressed at the business level. EPCIS events typically have four informational aspects: what (which EPCs or other entities participated in the event), when (the date and time of the event), where (the location where the event took place and where the entities are expected to be afterward), and why (what business transaction was taking place and what is the business condition of the entities afterward).

You might use a Directional Filter module or output from a Tag List Filter module to send the A to B Tag List to the Object Event Generator module. The generated EPCIS object event may be sent to an EPCIS system.

Note: | As described in the EPCglobal EPCIS (Electronic Product Code Information Service) Frequently Asked Questions document, the EPCIS Data Model specifies a standard way to represent visibility information about physical objects, including descriptions of product movements in a supply chain. See that document for information about the Business Step, Disposition, Read Point, Business Location, and Business Transaction fields.

The EPCIS Object Event Generator module fields are shown in Table 3-11.

Table 3-11 EPCIS Object Event Generator Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | EPCIS Object Event Generator | Type of module. Values are chosen from a list of module types.
Initial State | Started/Stopped | Specify the state of the module when started.
EPCIS Event Fields |  |
Action | ADD DELETE OBSERVE | Required. Specify ADD, DELETE, or OBSERVE for an action.
Read Point | URI | Read point URI that is used in the generated Aggregation Event.
Business Location | URI | Business location URI that is used in the generated Aggregation Event. For example, urn:acmecorp:bizLocation:store1.salesfloor
Business Step | URI | The business process step that was occurring when the event was captured.
Disposition | URI | Disposition URI that is used in the generated Object Event.
Business Transactions | Name/Value | Business transaction type and ID.
Event Extensions | Namespace/Name/Value | List of namespace-name-value tuples that is included as extensions in the object event.
Module Outputs |  |
EPCIS Event | EPCIS Document | Specifies where to send the generated event. For example, you might use an External Sender module to send the event to an EPCIS system.
Template Event | EPCIS Document | The template event received on the Template Event input (and then applied) is sent out from this port. The template event is sent as an acknowledgement to a template event message. This may be used by other modules or external applications to make sure that the template is applied before starting to send tags to the module.
Module State | Working Idle | Specify where to send an output string representing status of the module. For example, my-module-accumulator: Finish. There are two possible states: Working: Sent every time the module moves into the state where it is processing messages as a result of a Start input. Idle: Send every time the modules moves into the state where it is not processing messages as a result of a Stop input.
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Tag List | Tag List | List of tags used to generate object events, such as an A to B Tag List output by the Directional Filter module.
Template Event | EPCIS Document | This port accepts an EPCIS Document with an object event. This is used to dynamically change the parameters for generating an object event. The values specified through the template override most of the ones specified as configuration on the module. EPC values and action on the template event is ignored. If values are null on the template event, the values configured on the module are used. If the fields Read Point, Business Location, Business Step, and Disposition are non-null on the template event, they override those specified in the module configuration. Business Transaction and Event Extensions specified on the template event are added to those specified in the module configuration.
Start | Any Message Type | A message to this port is a signal to the module to start generating object events. Depending on how the module is configured, the module will ignore messages on the Tag List port until it gets start message. This port accepts any message type. A message on this port changes the module state from Idle to Working.
Stop | Any Message Type | A message to this port signals the module to stop generating object events. The module ignores messages on the Tag List port until it receives a start message again. A message on this port changes the module state from Working to Idle.

## External Sender

This module is used to send a message from edgeflow modules to external destinations.

This module has one input port, Input, which takes messages of any type and processes them as follows:

1. If it receives an XML input, it will apply the XSLT transformation and send the result to the output.
2. If it receives String input, it will send it as-is to the output.
3. If it receives other types, it will try to serialize it. If it serializes successfully, it applies any XSLT transformation and sends the XML to the output port. If an error occurs trying to serialize, error details are sent on the error port.

The External Sender module fields are shown in Table 3-12.

Table 3-12 External Sender Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | External Sender | Type of module. Values are chosen from a list of module types.
XSLT File | Path of File Containing Stylesheet | Stylesheet to transform message. The file that contains the stylesheet must be on the Edge Server system, and the path must be absolute path.
Destination URI's | URI | Required. The external destination to which to send the message. For example, in the case of an error message: console:PALLET-STATION-ERROR You could instead configure this output to use HTTP or JMS to send the events, using the appropriate format.
Module Outputs |  |
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Input | Any message type | The message to send to the external destination.

## HTTP Receiver (One Way)

You use the HTTP Receiver (One Way) module to send messages from external systems to edgeflow modules. The full URL specifies the target module and input port. The HTTP client will receive a response whether the message was delivered to the target module or not.

The HTTP Receiver module fields are shown in Table 3-13.

Table 3-13 HTTP Receiver (One Way) Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | HTTP Receiver (One Way) | Type of module. Values are chosen from a list of module types.
TCP Port | Port number between 1 and 65535, inclusive. | Required. The TCP port the module listens on.
URL Suffix | Unique identifier for this HTTP Receiver | Required. The unique URL suffix to be used with this HTTP Receiver. For example, if the URL suffix is specified as tag-commissioning, HTTP messages to URL `http://<link>:<port>/ tag-commissioning` will be sent.
Parse Request XML | True False | This parameter indicates whether input XML should be parsed or not. When True, output is an object. When false, output is XML.
Request XSLT File | XSLT | Style sheet to apply to XML. Specify the full path to the file on the Edge Server with the XSLT.
Module Outputs |  |
Output |  | Specifies where to send the message. For example, if the message is a bar code, you might want to send it to the Bar Code input of a Bar Code Decoder module, such as tag-commissioning-barcode:Bar Code
Error |  | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.

## HTTP Receiver (Request Response)

You can use the HTTP Receiver (Request Response) module to send a message to any module port and return the output from that module (or another module) in the response. The HTTP client will receive a response whether the message was delivered to the target module or not.

The HTTP Receiver (Request Response) module fields are shown in Table 3-14.

Table 3-14 HTTP Receiver (Request Response) Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | HTTP Receiver (Request Response) | Type of module. Values are chosen from a list of module types.
TCP Port | Port number between 1 and 65535, inclusive. | Required. The TCP port the module listens on.
URL Suffix | Unique identifier for this HTTP Receiver | Required. The unique URL suffix to be used with this HTTP Receiver. For example, tag-commissioning.
Parse Request XML | True False | When True, output is an object. When false, output is XML.
Request XSLT File | XSLT | Style sheet to apply to XML.
Response Timeout | Milliseconds | Required. The amount of time to wait to receive the response message that is to be sent back to the HTTP client. The default is 500. Must be greater than zero.
Response XSLT File | XSLT | XSLT file to apply to response XML.
Module Outputs |  |
Output |  | Specifies where to send the message. For example, if the message is a bar code, you might want to send it to the Bar Code input of a Bar Code Decoder module, such as tag-commissioning-barcode:Bar Code.
Error |  | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow. .
Module Inputs |  |
Response | Any message type | The input port can receive any type of message to send as the response to the HTTP client, and it uses the type to determine what to send: If it receives an object of type `java.lang.String`, it sends the string as the response. If it receives a message of type `XMLDocument`, it sends the XML as the output. If it receives any other type, it will make a best effort to serialize, and sends the result of the serialization as the result.

## Numeric Display (EDI111 LED)

You can use the Numeric Display module to display a count or similar information on a device.

The Numeric Display module fields are shown in Table 3-15.

Table 3-15 Numeric Display (EDI111 LED) Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Numeric Display EDI111 LED | Type of module. Values are chosen from a list of module types.
Device Host |  | Required. The host name for the device.
Device Port | Port number between 0 and 65535, inclusive. | Required. The TCP port used by the device.
Initial Message | Characters | Character value displayed on the LED when the module is initially started. Can be empty.
Display Duration | Milliseconds. Greater than or equal to zero. | Time that the message will be displayed on the LED. The default is 0, which indicates infinite time.
Flash Period | Milliseconds. Greater than or equal to zero. | Time period for which messages will be on or off in flash mode. The message will flash for "display duration" time with an on and off period defined by "flash period." The default is 500.
Module Outputs |  |
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Steady Message | Number | Display the input message in steady mode for time defined by display duration.
Flash Message | Number | Display the input message in flash mode for time defined by display duration.
Reset | Any message type | Clear the display.

## Preset Message (Dynamic)

You can use the Preset Message module to to send a preset message to its destination. The message sending activity may be because of a trigger activation or other event. The message to be sent is preset through the message content input port. Note the following:

- If the send message is received but there is no preset message, the module generates an error message to declare that the message was not set.
- If a clear message is received, the existing preset message is cleared.

The Preset Message (Dynamic) module fields are shown in Table 3-16.

Table 3-16 Preset Message (Dynamic) Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Preset Message (Dynamic) | Type of module. Values are chosen from a list of module types.
Module Outputs |  |
Message | Any message type | Specify the destination module and port.
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Message Content | Any message type. | Sets the content of the message to be sent on a "send" input.
Clear | Any message type. | Clear signal clears the message content.
Send | Any message type. | Send signal sends the message content.

## Preset Message (Static)

You can use the Preset Message module to to send a preset, static message to its destination. The message sending activity may be because of a trigger activation or other event.

If the send message is received but there is no static message, an empty string is sent.

The Preset Message (Static) module fields are shown in Table 3-17.

Table 3-17 Preset Message (Static) Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Preset Message (Static) | Type of module. Values are chosen from a list of module types.
Message Content | String | Required. User-defined message content.
Module Outputs |  |
Message | String | Specify the message destination.
Module Inputs |  |
Send | Any message type | A message on this port sends the configured message.

## Serial Number Replenisher (BEA Service)

You can use the Serial Number Replenisher (BEA Service) module to contact the RFID Enterprise Server Serial Number Assignment Service to get unique EPC's.

As a possible use, you might use the EPC Cache Manager together with the Serial Number Replenisher (Static) module or a Serial Number Replenisher (BEA Service) module as follows:

1. Send the Replenishment Request output of the EPC Cache Manager module to the Replenishment Request input of a Serial Number Replenisher (BEA Service) module.
2. Send the resulting Replenishment output from a Serial Number Replenisher module to the Replenishment input of the EPC Cache Manager module.

The Serial Number Replenisher module fields are shown in Table 3-18.

Table 3-18 Serial Number Replenisher (BEA Service) Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Serial Number Replenisher (BEA Service) | Type of module. Values are chosen from a list of module types.
BEA Service URL | URL | Required. URL of the Serial Number Assignment Service
Username |  | User name for the Serial Number Assignment Service.
Password |  | Password for the Serial Number Assignment Service
Replenishment Size | Number. Must be greater than zero. | Required. The number of EPCs to check out of the Serial Number Assignment Service. You use this together with the Cache Low Threshold field of the EPC Cache Manager module to manage the cache.
Range Selection Criteria | Name/Value | Additional range criteria can be specified here.
Module Outputs |  |
Replenishment | URI String | Specifies where to send the serial numbers to satisfy the replenishment request. For example. tag-commissioning-cachemgr:Replenishment The EPCs checked out from the serial number assignment service will be sent out on this port. This is a list of Strings representing the EPC range.
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Replenishment Request | URI String | This port accepts EPC pattern as input. The EPC pattern must have the fields to identify the EPC class. Since this module uses the serial number assignment service, it handles only types supported by that service (SSCC and GTIN).

## Serial Number Replenisher (Static)

You can use the Serial Number Replenisher (Static) module to set a fixed range of serial numbers of any EPC type.

As a possible use, you might use the EPC Cache Manager together with the Serial Number Replenisher (Static) module or a Serial Number Replenisher (BEA Service) module as follows:

1. Send the Replenishment Request output of the EPC Cache Manager module to the Replenishment Request input of a Serial Number Replenisher (Static) module.
2. Send the resulting Replenishment output from a Serial Number Replenisher module to the Replenishment input of the EPC Cache Manager module.

The Serial Number Replenisher (Static) module fields are shown in Table 3-19.

Table 3-19 Serial Number Replenisher (Static) Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Serial Number Replenisher (Static) | Type of module. Values are chosen from a list of module types.
Serial Range Start | Number. Must be greater than or equal to zero. | Required. EPC start range of serial numbers. You use this together with the Cache Low Threshold field of the EPC Cache Manager module to manage the cache.
Serial Range End | Number. Must be greater than or equal to zero. | Required. EPC end range of serial numbers. You use this together with the Cache Low Threshold field of the EPC Cache Manager module to manage the cache.
Module Outputs |  |
Replenishment | URI String | Specifies where to send the serial numbers to satisfy the replenishment request. For example, tag-commissioning-cachemgr:Replenishment
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Replenishment Request | URI String | Message requesting cache replenishment. This might typically come from the Replenishment Request output of the EPC Cache Manager module

## Stack Light

You can use the Stack Light module to turn the lights on a stack light on or off.

Note: | The implementation of the Stack Light module in this release is significantly enhanced from the Stack Light Module of previous versions.

The Stack Light module fields are shown in Table 3-20.

Table 3-20 Stack Light Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Stack Light | Type of module. Values are chosen from a list of module types.
Logical Reader Name | Reader Name | Required. The logical name for the stack light device.
Turn Other Colors Off | True/False | Required. Specifies whether other colors should be turned off on an input message to turn on one color.
Red Duration | Milliseconds | The time in milliseconds for which the light should be lit. The default is zero, which turns the light on indefinitely. Available values increment by 5000 milliseconds, from zero to 40,000.
Amber Duration | Milliseconds | The time in milliseconds for which the light should be lit. The default is zero, which turns the light on indefinitely. Available values increment by 5000 milliseconds, from zero to 40,000.
Green Duration | Milliseconds | The time in milliseconds for which the light should be lit. The default is zero, which turns the light on indefinitely. Available values increment by 5000 milliseconds, from zero to 40,000.
Blue Duration | Milliseconds | The time in milliseconds for which the light should be lit. The default is zero, which turns the light on indefinitely. Available values increment by 5000 milliseconds, from zero to 40,000.
White Duration | Milliseconds | The time in milliseconds for which the light should be lit. The default is zero, which turns the light on indefinitely. Available values increment by 5000 milliseconds, from zero to 40,000.
Module Outputs |  |
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Red On | Any message type | Turn red on.
Red Off | Any message type | Turn red off.
Amber On | Any message type | Turn amber on.
Amber Off | Any message type | Turn amber off.
Green On | Any message type | Turn green on.
Green Off | Any message type | Turn green off.
Blue On | Any message type | Turn blue on.
Blue Off | Any message type | Turn blue off.
White On | Any message type | Turn white on.
White Off | Any message type | Turn white off.
Multi-light Control | URI String | This port is used to specify a complex pattern for turning on multiple color lights. This will take in URI string of the same format as expected by ALEPC API: urn:connecterra:stacklight:update=<update value>. <update value> is a string consisting of 5 digits [0 - 9]. Each digit corresponds to one color. The order of colors in the string is as following: WHITE-BLUE-GREEN-AMBER-RED. The values are: 0 - turn off the light 9 - turn on indefinitely, until a different value is written. X in [1 - 8] - turn on the light for 5 seconds times X. For example, 01119: Turns white off. Turns blue, green, and amber on for 5 seconds each. Turns red on indefinitely.

## State Filter

You can use the State Filter module split the Working State output of other modules into distinct Working and Idle outputs.

For example, consider the Module State output of the EPCIS Object Event Generator module. The state for this module can be either Working or Idle, and it is up to the destination to parse the string to determine what the actual current state is.

The State Filter module provides this service for you: it receives the generic Module State as input, parses it, and splits in into distinct Working and Idle outputs.

The State Filter module fields are shown in Table 3-21.

Table 3-21 State Filter Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | State Filter | Type of module. Values are chosen from a list of module types.
Module Outputs |  |
Working State | Working/Idle | Specifies the destination of the working message.
Idle State | Working/Idle | Specifies the destination of the Idle message.
Error |  | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
State | Working/Idle | Receives a Working or Idle message from another module.

## Tag Accumulator

You can use the Tag Accumulator module to accumulate tags for a period of time, or for a period of time delineated by start and end messages. The module starts collecting and keeping track of tags seen on a start message or at start-up time. The module sends the collected tags on a message to the send port, or after a configured amount of time.

The output of this module may typically be used by modules like EPCIS Object Event Generator or EPCIS Aggregation Event Generator. For example, use the Final Tag List output from the Tag Accumulator as the Tag List input to a EPCIS Object Event Generator to generate an object event for all accumulated tags.

The Tag Accumulator module fields are shown in Table 3-22.

Table 3-22 Tag Accumulator Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Stack Light | Type of module. Values are chosen from a list of module types.
Always Accumulating | True/False | Specify if accumulation starts when the module is started. The default is false.
Reset on Start | True/False | Specifies if the accumulated tags should be reset to empty on every start input message. The default is true.
Suppress Empty Result | True/False | Specify whether empty results are reported; that is, sent to the Final Tag List output destination. The default is true.
Finish When |  |
Duration Elapses | Milliseconds | Sends out the final tag list when the specified duration elapses. Must be greater than or equal to zero. The default is zero, which is infinite time.
Stable Set | Milliseconds | If the accumulated list does not change in the time specified, the list is considered final and sent out. Must be greater than or equal to zero. The default is zero, which is infinite time.
Stable Set Count | Milliseconds | If the current count did not change for the Stable Set duration, and the current accumulation count is greater than or equal to this count, then final tag list is sent. A zero value (the default) means disregard the count value and apply the stable set timeout for any count. Must be greater than or equal to zero.
Module Outputs |  |
Final Tag List | Tag List | The final Tag List is sent when the module receives a send request or when the configured time has expired.
Running Tag List | Tag List | This outputs the Tag List accumulated to this point. Input on the add or delete port will cause this output to be sent out.
Module State | Working/Idle | Specify where to send an output string representing status of the module. For example, my-module-accumulator: Finish. The status may be: Working: This is sent every time the module moves into accumulating state. Idle: This is sent every time the module moves into non-accumulating state.
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Add | Tag List | This port accepts a Tag List and adds them to the list of collected tags. It will ignore messages that are not of this type.
Delete | Tag List | This port accepts a Tag List and deletes those from the list of collected tags. It will ignore messages that are not of this type
Start | Any message type | A message on this port enables the module to accumulate tags. Any message type is accepted
Finish | Any message type | A message on this port triggers the module to output final tags and reset the list. If the module is configured with "Always Accumulating" set to false, the send message will also put the module back to the state where it will not be accumulating Tags. This port accepts messages of any type.

## Tag Counter

The Tag Counter module accepts an ECReport, a PCWriteReport, or tag list and outputs a count of the tags in the input.

For example, a Tag Counter module can take the ECReports produced by an ECSpec and output the number of tags in the input.

The Tag Counter module fields are shown in Table 3-23.

Table 3-23 Tag Counter Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Tag Counter | Type of module. Values are chosen from a list of module types.
ECSpec Report Names | ECSpec Report Names | If specified, tags are counted only from ECReports with the specified name. If nothing is specified here, tags from all reports will be counted.
Module Outputs |  |
Count | Number | Specify the location to send the tag count. For example, smart-shelf-counter:Add
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Input |  | The module accepts ECReports, PCWriteReport, and tag lists. If the ECSpec Report Names configuration field is supplied, it identifies the particular report name (from the ECReport) from which to get input.

## Tag List Filter

The Tag List Filter module extracts tag information from ECReports, or PCWriteReports and creates a tag list.

For example, a Tag List Filter module can take the ECReports produced by the ECSpec, extract the tag information and send it to the Add port of a Tag Accumulator module.

The Tag List Filter module fields are shown in Table 3-24.

Table 3-24 Tag List Filter Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Tag List Filter | Type of module. Values are chosen from a list of module types.
ECSpec Report Names | ECSpec Report Name | If specified, tags are counted only from ECReports with the specified name. If nothing is specified here, tags from all reports will be counted.
Module Outputs |  |
Tag List | Tag List | Specify the destination for the tag list generated by the module. For example, pallet-station-accumulator:Add
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Input | ECSpecReport or PCWriteReport | The module accepts ECReports, PCWriteReport, and tag lists. If the ECSpec Report Names configuration field is supplied, it identifies the particular report name (from the ECReport) from which to get input.

## Tag Verifier

You can use the Tag Verifier module to verify that tags are readable. It takes in tags to be verified and tags read, and produces a list of verified tags, missing tags, extra tags, and a Boolean indicating whether the verification was successful.

The Tag Verifier module fields are shown in Table 3-25.

Table 3-25 Tag Verifier Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Tag Verifier | Type of module. Values are chosen from a list of module types.
Message Pattern | One Actual Per Expected/ Multiple Actual Per Expected | Specifies how to match actual tags input with expected tags input. "One" indicates that for every expected input there will be one actual input. Multiple indicates that it will look in subsequent actual messages for tags in the expected input.
Verification Timeout | Milliseconds. Greater than or equal to zero. | Time to wait for verification. If time elapses, an error message is generated.
Module Outputs |  |
All Expected Verified | Boolean | Boolean indicating whether all tags were verified or not.
Verified Tags | Tag List | Tag list of verified tags.
Missing Tags | Tag List | Tag list of missing tags
Extra Tags | Tag List | Tag list of extra tags.
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Expected | Tag List | Tag list of expected tags.
Actual | Tag List | Tag list of actual tags.

## Trigger Receiver

You can use Trigger Receiver modules to configure an edgeflow module to receive a trigger. Triggers are typically used by counted input ports, such as start, stop, clear, and send.

The Trigger Receiver module fields are shown in Table 3-26.

Table 3-26 Trigger Receiver Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Trigger Receiver | Type of module. Values are chosen from a list of module types.
Initial State | Started/Stopped | Specify if the module accepts triggers (started) or not. The default is started.
Trigger URI | URI | Required. URI for a trigger configured within the Edge Server. See Triggers for additional information.
Module Outputs |  |
Trigger | Trigger | Specifies where to send the trigger.
Module Inputs |  |
Start | Any message type. | Accepts any type message and subscribes the module to the trigger.
Stop | Any message type. | Accepts any type message and causes the module to unsubscribe from the trigger.

## Wait For Time

You can use the Wait For Time module to hold (queue) input before sending it. It will discard the first message on the hold queue if a discard message is received.

The size of the queue is configurable.

The Wait For Time module fields are shown in Table 3-27.

Table 3-27 Wait For Time Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Wait For Time | Type of module. Values are chosen from a list of module types.
Wait Duration | Milliseconds | Required. The amount of time to wait before sending message. Must be greater than zero.
Queue Size | Number of messages | Required. Message queue size. Must be greater than zero.
Module Outputs |  |
Message |  | The triggered message.
Error | Error | Specify the error message destination. For example, my-error-sender: Input.
Module Inputs |  |
Message | Any message type. | Message to be added to the queue.
Discard | Any message type. | Message to discard first message in queue.

## Wait For Trigger

You can use the Wait For Trigger module to hold (queue) input until a send or discard trigger is received. If there is no message on the queue and a send trigger is received, an error is generated.

The Wait For Trigger module fields are shown in Table 3-28.

Table 3-28 Wait For Trigger Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Wait For Trigger | Type of module. Values are chosen from a list of module types.
Queue Size | Number of messages | Required. Size of the message queue. Must be greater than zero.
Timeout | Milliseconds | Time to wait before a discard or send of the message is received. When this time elapses, message is discarded and error is sent. Must be greater than or equal to zero. Default is zero, which means infinite time.
Module Outputs |  |
Message | Any message type. | The generated message.
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Message | Any message type. | The message to be sent on "send" input message.
Send | Any message type. | The command to send message. If no message is present when the send message is received, an error is generated.
Discard | Any message type. | Clears the first message in the queue.

## Write Tag

This port accepts an EPC or EPC Pattern. If it receives an EPC on this port, it will program a tag with that EPC and output the PCWriteReport.

If the module receives an EPC pattern as input, it will send that to other modules (such as EPC Cache Manager) through the PCspec request output port to construct the PCSpec required to program a tag for the input item type. It will then program a tag using that PCSpec and output the PCWriteReport.

For example, in the case of EPC pattern you might use the Write Tag module together with the EPC Cache Manager module as follows:

1. The Write Tag module sends the PCSpec Request output to the EPC Cache Manager module PCSpec Request input.
2. The EPC Cache Manager module then returns the PCSpec, with the appropriate cache name specified in it, to the PCSpec input of the Write Tag module via the PCSpec output.
3. The write tag module uses the PCSpec to write the tag, and then generates the PCWriteReport.

The Write Tag module fields are shown in Table 3-29.

Table 3-29 Write Tag Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | Write Tag | Type of module. Values are chosen from a list of module types.
Logical Reader Name | Reader Name | Required. Name of printer performing the write operation.
PCSpec Request Timeout | Milliseconds | Required. Time to wait for the PCSpec. Must be greater than or equal to zero. Default is zero.
Module Outputs |  |
PCSpec Request | URI String | Specifies where to send the PCSpec Request. If the module receives an EPC pattern as input, it will send that to other modules (such as EPC Cache Manager) through the PCspec request output port to construct the PCSpec required to program a tag for the input item type.
PCWriteReport | PCWriteReport | PCWriteReport produced by the print request.
Error | Error | Specify the error message destination. For example, my-error-sender: Input.
Module Inputs |  |
Write | URI String | This port accepts an EPC or EPC Pattern. If it receives an EPC on this port, it will program a tag with that EPC and output the PCWriteReport. If it receives a pattern, it will send that to other modules (such as the EPC Cache Manager Module) through the PCspec request output port to construct the PCSpec required to program a tag for the input item type.
Setup | URI String | This port accepts EPCs or an EPC Pattern and creates and defines the PCSpec for the EPC Class of the input. After being set up, the module is ready for further writes and those write operations for the same EPC class will be fast. This is useful for high speed conveyor-type scenarios, where you want to set everything up before starting the operation.
PCSpec | PCSpec | This port accepts PCSpec from modules such as the EPC Cache Manager Module.

## XML Generator

You can use the XML Generator module to accept any input type (except Lists) and generate XML output. The Input port takes messages of Any (excluding Lists), String List, or Tag List.

The XML Generator module fields are shown in Table 3-30.

Table 3-30 XML Generator Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | XML Generator | Type of module. Values are chosen from a list of module types.
Input Type | Any (Excluding Lists) String List Tag List | Specify the input type from the drop-down list.
Module Outputs |  |
XML | XML | Specify the destination for the generated XML.
Error | Error | Specify the error message destination. For example, my-error-sender: Input. This port will send an output if an error occurs in the module processing. This port may be used to indicate any kind of error in an edgeflow.
Module Inputs |  |
Input | Any message type | The input from which to generate XML.

## XML Parser

You can use the XML Parser module to convert XML to a Java object. This module supports all of the object types known to the edgeflow framework or registered with the naming service.

The XML Parser module fields are shown in Table 3-31.

Table 3-31 XML Parser Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | XML Parser | Type of module. Values are chosen from a list of module types.
Module Outputs |  |
Output | Based on Input | Specifies where to send the output.
Error | Error | Specify the error message destination. For example, my-error-sender: Input.
Module Inputs |  |
Input | XML | XML input.

## XML Transformer

This module takes XML as input and applies an XSLT to it to create transformed XML output.

The XML Transformer module fields are shown in Table 3-32.

Table 3-32 XML Transformer Module
Name | Type/Value | Description
--- | --- | ---
Module Name | String | Unique user-defined identifier for this module.
Module Type | XML Transformer | Type of module. Values are chosen from a list of module types.
XSLT File |  | Required. The style sheet that is applied to the input XML file. The fully specified path to the file on the Edge Server with the XSLT must be specified here.
Module Outputs |  |
XML | XML | The transformed XML file.
Error | Error | Specify the error message destination. For example, my-error-sender: Input.
Module Inputs |  |
Input | XML | The XML file to be transformed by the style sheet.