2.3 Transaction Types & The Dispatcher vs. Performer Architecture
Key Takeaways
A Transaction Item is one independent unit of work; REFramework defaults to
UiPath.Core.QueueItembut can processDataRow, file, mail, or custom types.The Dispatcher (Producer) extracts and validates source data and loads it into an Orchestrator queue; the Performer (Consumer) processes items and sets their status.
Several Performer robots can work the same queue in parallel, which is how the pattern scales horizontally.
Enforce Unique Reference on the queue and a business key in each item's Reference prevent duplicate uploads when a Dispatcher is re-run.
Bulk Add Queue Items accepts at most 15,000 rows per call; larger batches must be split into chunks.
2.3 Transaction Types & The Dispatcher vs. Performer Architecture
Core Concept: An enterprise automation process is fundamentally defined by how it structures and processes its data. In UiPath REFramework, a Transaction Item represents an atomic unit of business data processed independently from other records. By decoupling the extraction of raw records from their subsequent processing through the Dispatcher (Producer) and Performer (Consumer) architectural patterns, organizations achieve horizontal scalability, robust fault isolation, and automated queue load balancing.
When beginner RPA developers build automations, they frequently bundle data gathering, business calculation, and reporting into a single monolithic script. If the process encounters 1,000 Excel rows and crashes on row 742, restarting the robot re-reads the entire file, risking duplicate transactions and lost work. The Dispatcher-Performer architecture solves this problem by segregating the data ingestion lifecycle from the execution lifecycle using UiPath Orchestrator Queues.
1. Transaction Item Types in REFramework
In REFramework, the global variable TransactionItem defines the data contract for each execution cycle. Although the default template specifies UiPath.Core.QueueItem, developers can modify the data type to match specific business requirements:
Supported TransactionItem Data Types in REFramework:
├── UiPath.Core.QueueItem --> Default enterprise model; backed by Orchestrator Queues
├── System.Data.DataRow --> Tabular models; processing rows from Excel, SQL, or CSV
├── System.IO.FileInfo / String --> File-based models; batch processing file system documents
├── System.Net.Mail.MailMessage --> Email-driven models; processing inbox messages
└── Newtonsoft.Json.Linq.JToken --> API-driven models; consuming REST endpoints
The QueueItem Model (Default Enterprise Standard)
A QueueItem is a structured record hosted within a UiPath Orchestrator Queue. It provides native enterprise capabilities:
- Persistent Lifecycle States: Tracks items across
New,In Progress,Successful,Failed,Abandoned,Retried, andDeleted. - Orchestrator Auto-Retry: Automatically requeues failed transactions with application exceptions up to a predefined retry limit.
- Postpone and SLA Deadlines: Allows transactions to be deferred until a future timestamp or flagged with strict SLA deadlines.
- SpecificContent Container: A
Dictionary<string, object>storing payload data fields (e.g.,in_TransactionItem.SpecificContent("InvoiceTotal")).
The DataRow Model (Tabular Processing)
When automations must run offline, without Orchestrator queues, or on standalone Studio/attended robot licenses, the TransactionItem variable is re-typed as System.Data.DataRow. In this architecture:
- All data is extracted into an in-memory
System.Data.DataTablevariable (typicallyio_dt_TransactionData). in_TransactionNumberserves as the row pointer index.- The framework processes rows sequentially without native Orchestrator status tracking.
2. The Dispatcher (Producer) Architecture
The Dispatcher is an automation workflow whose sole responsibility is to extract raw data from source systems, validate its structure, and push clean transaction items into an Orchestrator Queue.
+-----------------------------------------------------------------------------------+
| DISPATCHER ARCHITECTURE |
| |
| [Source Systems] |
| - SQL Database |
| - Legacy ERP Export |
| - Email Inbox Attachments |
| - REST API Endpoint |
| │ |
| ▼ |
| [Data Extraction & Cleansing] |
| - Extract raw dataset into DataTable |
| - Apply schema validation & business filters |
| - Remove duplicates & invalid records |
| │ |
| ▼ |
| [Queue Ingestion] |
| - Add Queue Item (with Reference, Priority, SpecificContent) |
| - OR: Bulk Add Queue Items (for high-volume performance) |
| │ |
| ▼ |
| [UiPath Orchestrator Queue] (Items stored with status 'New') |
+-----------------------------------------------------------------------------------+
Responsibilities of the Dispatcher:
- Data Gathering: Queries databases, downloads vendor portals, parses shared network drives, or consumes REST APIs.
- Validation and Pre-Filtering: Filters out corrupt rows, missing mandatory fields, or out-of-scope dates. This ensures that the queue contains only actionable, valid records, adhering to the principle of preventing garbage-in, garbage-out.
- Queue Population:
Add Queue ItemActivity: Uploads items individually. Allows assigning individualReferencestrings, customPrioritylevels (High,Normal,Low), and scheduling dates (Postpone,Deadline).Bulk Add Queue ItemsActivity: Uploads the rows of aDataTablein one call. Orchestrator accepts at most 15,000 rows per call, so a 50,000-row ledger has to be split into chunks. TheCommitTypesetting (AllOrNothingorProcessAllIndependently) decides whether one bad row blocks the whole batch.
Critical Queue Properties:
Reference: A unique business key (e.g.,"INV-2026-0982"or"ACCT-" + row("ID").ToString). When Enforce Unique Reference is enabled on the Orchestrator Queue, Orchestrator automatically rejects any attempt to upload an item whose reference already exists, guaranteeing transaction idempotency.SpecificContent: Key-value pairs containing the transactional payload. Accessible within the Performer viain_TransactionItem.SpecificContent("KeyName").Priority: Directs Orchestrator to allocateHighpriority items to consumer robots beforeNormalorLowitems.
3. The Performer (Consumer) Architecture
The Performer is an independent automation process that dequeues items from the Orchestrator Queue one at a time, executes the required business actions, and commits final transaction statuses.
+-----------------------------------------------------------------------------------+
| PERFORMER ARCHITECTURE |
| |
| [Orchestrator Queue] |
| (Pending 'New' Items) |
| │ │ │ |
| ┌──────────────────┘ │ └──────────────────┐ |
| ▼ ▼ ▼ |
| +---------------+ +---------------+ +---------------+ |
| | Robot 01 | | Robot 02 | | Robot 03 | |
| | (Performer) | | (Performer) | | (Performer) | |
| +---------------+ +---------------+ +---------------+ |
| | - Get Item | | - Get Item | | - Get Item | |
| | - Process | | - Process | | - Process | |
| | - Set Status | | - Set Status | | - Set Status | |
| +---------------+ +---------------+ +---------------+ |
| │ │ │ |
| └──────────────────┬───────┴──────────────────────────┘ |
| ▼ |
| [Orchestrator Audit Trail] |
| - Successful / Failed / Retried |
+-----------------------------------------------------------------------------------+
Enterprise Advantages of Decoupled Dispatcher-Performer:
- Horizontal Elasticity & Concurrency: A single Dispatcher can load 10,000 items into an Orchestrator Queue. Ten unattended robots running the Performer process can concurrently pull from the same queue without file locks or collisions. If workload spikes, administrators simply allocate more robots to the queue.
- Fault Domain Isolation:
If a Performer crashes due to an operating system fault or hardware failure on Robot 02, the remaining robots continue processing uninterrupted. If the workflow catches the error and sets the item to
Failed (Application), the queue's Auto Retry can hand a copy to Robot 01. If the robot dies without setting a status, the item staysIn Progressand Orchestrator marks itAbandonedafter about 24 hours. - Independent Lifecycle Scheduling: The Dispatcher can run at 01:00 AM when database servers experience low traffic. The Performers can run throughout the business day, or spin up dynamically in response to Orchestrator Queue Triggers when the queue item count crosses a threshold.
4. Architectural Comparison: Dispatcher vs. Performer
| Architectural Attribute | Dispatcher (Producer) | Performer (Consumer) |
|---|---|---|
| Primary Objective | Read external raw data, validate schema, upload to Queue. | Fetch QueueItem from Orchestrator, execute business rules, log outcome. |
| REFramework State Model | Often configured as a Simple Sequence or Linear REFramework. | Full cyclic REFramework State Machine with retry dynamics. |
| Orchestrator Interaction | Add Queue Item / Bulk Add Queue Items. | Get Transaction Item, Set Transaction Status. |
| Scaling Model | Typically runs on a single robot (singleton producer). | Scales horizontally across multiple concurrent robots. |
| UI Automation Scope | Minimal UI interactions; primarily backend/API/database. | Heavy UI automation, desktop navigation, ERP data entry. |
| Error Handling Focus | Source data accessibility, schema validation, deduplication. | BusinessRuleExceptions, UI element timeouts, application crashes. |
5. Where the Performer's Data Comes From
The Performer usually consumes queue items, but the same template can process a DataTable, a list of files, or a single linear run. Those adaptations change the TransactionItem type, the logic in GetTransactionData.xaml, and how status is recorded. The last section of this chapter walks through each one.
| Data source | TransactionItem type | Who tracks status |
|---|---|---|
| Orchestrator queue (default) | UiPath.Core.QueueItem | Orchestrator, through Set Transaction Status |
| Excel, CSV, or SQL table | System.Data.DataRow | Your workflow: a status column, an output file, or logs |
| Folder of files or mailbox | String, FileInfo, or MailMessage | Your workflow |
| Single linear run | Any simple type, such as String | Your workflow |
What is the primary architectural advantage of decoupling an enterprise RPA solution into a separate Dispatcher and Performer?
It eliminates the need to configure an external Data\Config.xlsx file for the Performer process.
It enables multiple unattended robots to process transactions concurrently from a shared queue without file-locking bottlenecks.
It automatically prevents business exceptions from occurring during transaction data processing.
It eliminates the requirement to instantiate the State Machine in the Performer project.
A Dispatcher reads 40,000 invoice rows from a report and must add them to an Orchestrator queue with as few calls as possible while keeping rows that fail validation from blocking the rest. Which design works?
One Bulk Add Queue Items call containing all 40,000 rows with CommitType AllOrNothing.
Add Queue Item for every row with Priority set to High so Orchestrator batches them automatically.
Bulk Add Queue Items in chunks of at most 15,000 rows with CommitType ProcessAllIndependently, then review the Result DataTable for rejected rows.
Orchestrator HTTP Request that posts the whole Excel file to the queue endpoint.
Which Orchestrator Queue configuration feature prevents a Dispatcher process from uploading duplicate records during re-execution?
Enforcing Unique Reference on the queue and assigning a unique business key to the Reference property of each item.
Configuring Auto-Retry Count to a value of 0 on the queue definition.
Setting the item Priority to High for all uploaded queue items.
Encoding the payload data within the SpecificContent dictionary.
Sections you finish are checked off in the contents.