算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
pega-robotics【设计与创意】Use when working with Pega Intelligent Automation — Pega Robot Studio (RPA development, automations, components, adapters, UI interrogation), Pega Robot Runtime (attended/unattended execution, runtime configuration), Pega Robot Manager (robot fleet management, deployment, scheduling, monitoring, work queues, analytics), automation design patterns, cr…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Covers the full Pega RPA stack: Robot Studio (development), Robot Runtime (execution), and Robot Manager (fleet management). For Pega Platform case management and decisioning there is no dedicated skill yet — answer from general knowledge, or use web-research for current Pega Platform documentation.
Robot Studio is the Windows desktop IDE for developing Pega RPA automations. It provides a visual drag-and-drop design surface, component library, adapter framework for target application connectivity, and debugging/testing tools.
MyRPAProject/
├── Automations/ # Top-level orchestration flows
│ ├── ProcessInvoice.auto
│ └── UpdateCRM.auto
├── Components/ # Reusable building blocks
│ ├── Login_SAP.comp
│ ├── ExtractTableData.comp
│ └── NavigateToScreen.comp
├── Adapters/ # Target application connectors
│ ├── WebApp_Chrome.adapter
│ ├── SAPGui.adapter
│ └── Mainframe3270.adapter
├── GlobalVariables/ # Shared configuration
├── References/ # External assembly references
└── Project.rsproj # Project file (XML-based)
| Concept | Description |
|---|---|
| Automation | Top-level orchestration — sequences components, handles high-level error flow, manages the end-to-end process. Deployed as a unit to Robot Manager. |
| Component | Reusable building block — encapsulates a discrete task (login, extract data, fill form). Has defined inputs/outputs. Shareable across automations. |
| Adapter | Connector to a target application — provides interrogation (control discovery) and interaction (click, type, read) capabilities for a specific technology (Web, Win32, Java, SAP, Terminal, Citrix). |
| Interrogation | Process of identifying UI controls in the target application — captures control properties (Name, ClassName, AutomationId, XPath) to build reliable selectors. |
| Project | Container for automations, components, adapters, and shared resources. Compiles into a deployment package (.zip) for Robot Manager. |
A well-structured automation follows this pattern:
Initialize
├── Load configuration (environment-specific)
├── Retrieve credentials from vault
├── Launch/attach to target applications
├── Validate prerequisites (app version, screen state)
│
Main Processing
├── Get work item from queue (or input parameters)
├── FOR EACH work item:
│ ├── Navigate to starting screen
│ ├── Process item (call components)
│ ├── Validate result
│ ├── Update work item status (completed/failed)
│ └── Log outcome
│
Cleanup
├── Close/detach target applications
├── Release credentials
└── Report summary (items processed, failed, skipped)
| Adapter | Target Technology | Identification Method |
|---|---|---|
| Web | Chrome, Edge, Firefox, IE | CSS selectors, XPath, HTML attributes (id, name, class, data-*) |
| Windows (Win32) | Native Windows applications | Window class, control name, AutomationId, UI Automation tree |
| Java | Java Swing/AWT/SWT applications | Java Access Bridge, component hierarchy, role/name |
| SAP | SAP GUI for Windows | SAP GUI scripting API, transaction codes, field IDs |
| Terminal | 3270/5250 mainframe | Screen position (row/col), field labels, screen title matching |
| Citrix/RDP | Remote desktop sessions | Image recognition, OCR, coordinate-based (last resort) |
Robot Studio's visual designer presents components as flowchart-like diagrams with:
| Scope | Description | Use Case |
|---|---|---|
| Local | Visible only within the current component | Temporary calculations, loop counters |
| Input | Passed into the component by the caller | Account number, search criteria |
| Output | Returned to the caller when the component completes | Extracted data, status codes |
| Global | Shared across all components in the automation | Configuration values, session handles |
String — text values
Integer — whole numbers (Int32)
Long — large whole numbers (Int64)
Double — decimal numbers
Boolean — true/false
DateTime — date and time values
DataTable — tabular data (rows and columns)
List<T> — typed collections
Object — generic (avoid when possible — prefer typed)
SecureString — encrypted credential values
Robot Studio uses VB.NET syntax for expressions in steps and decisions:
' String manipulation
result = AccountNumber.Trim().Substring(0, 8).ToUpper()
' Date formatting
formattedDate = DateTime.Now.ToString("yyyy-MM-dd")
' Null/empty checks (common in decisions)
Not String.IsNullOrEmpty(CustomerName)
' DataTable row access
cellValue = MyTable.Rows(rowIndex)("ColumnName").ToString()
' Collection operations
itemCount = MyList.Count
exists = MyList.Contains("SearchValue")
' Type conversion
amount = CDbl(amountString.Replace(",", ""))
intValue = CInt(textValue)
' Regex matching
Dim match As Boolean = System.Text.RegularExpressions.Regex.IsMatch(input, "^\d{8}quot;)
' Create a DataTable
Dim dt As New DataTable()
dt.Columns.Add("Name", GetType(String))
dt.Columns.Add("Amount", GetType(Double))
' Add rows
dt.Rows.Add("Invoice001", 1500.00)
' Filter rows
Dim filtered() As DataRow = dt.Select("Amount > 1000")
' Sort
Dim view As New DataView(dt)
view.Sort = "Amount DESC"
' Loop (in the designer, use a For Each loop step targeting DataRow)
For Each row As DataRow In dt.Rows
Dim name As String = row("Name").ToString()
Next
The Web adapter connects to browsers via native messaging extensions. It provides full DOM access for control identification.
Interrogation strategies (in order of preference):
#submitButton — most stable, survives layout changes.[data-testid="login-btn"] — designed for automation, framework-agnostic.[name="username"] — stable for form fields.div.modal-content > form > input:nth-child(2) — flexible but fragile if DOM restructures.//table[@id='results']//tr[3]/td[2] — powerful for complex traversal, but verbose and brittle.Common operations:
SetValue — type text into an input field
Click — click a button/link/element
GetValue — read text from an element
GetAttribute — read an HTML attribute value
GetTable — extract an HTML table into a DataTable
WaitForControl — wait until an element appears in the DOM
ExecuteScript — run JavaScript in the browser context
SelectItem — choose from a dropdown (by text/value/index)
Browser extension requirement: Each target browser needs the Pega Robot Studio browser extension installed and enabled. Chrome and Edge (Chromium) use the same extension. Firefox uses a separate extension.
Connects to native Windows applications using the UI Automation (UIA) framework, with fallback to MSAA and raw Win32 messaging.
Identification hierarchy:
Edit, Button, SysListView32).Diagnostics: Use the Interrogation Spy tool (magnifying glass icon) to inspect live control trees. Compare with Windows Accessibility Insights or Inspect.exe for verification.
Connects through the SAP GUI Scripting API. Requires SAP GUI Scripting to be enabled on both the SAP application server (sapgui/user_scripting = TRUE in profile parameter rdisp/gui_comp_level) and the local SAP GUI client.
Key operations:
SetField — populate a SAP GUI field by technical name (e.g., "usr/txtRSYST-BNAME")
GetField — read a field value
PressButton — activate a SAP GUI button
SelectNode — navigate tree controls
RunTransaction — execute a transaction code (e.g., "VA01", "ME21N")
GetStatusBar — read the SAP status bar message (type + text)
ReadGridView — extract ALV grid data into a DataTable
Field identification: Use SAP GUI's built-in script recorder (Alt+F12 → Script Recording) or Robot Studio's SAP Interrogation mode to discover field technical names.
Connects to mainframe terminal sessions via terminal emulators (IBM Personal Communications, Micro Focus Rumba, HLLAPI-compatible emulators).
Identification: Position-based using row and column coordinates. Screen identification uses title fields or unique text at known positions.
SetField(row, col, value) — type text at a screen position
GetField(row, col, length) — read text from a screen position
SendKey(key) — send a terminal key (Enter, PF1-PF24, Tab, Clear)
WaitForScreen(identifier) — wait for a specific screen to appear
GetScreenText() — capture entire screen as text
Screen navigation pattern:
1. WaitForScreen("MAIN MENU") — verify starting screen
2. SetField(21, 7, "3") — type option number
3. SendKey(Keys.Enter) — submit
4. WaitForScreen("CUSTOMER INQUIRY") — verify target screen loaded
5. SetField(5, 22, customerNumber) — populate search field
6. SendKey(Keys.Enter) — execute search
7. WaitForField(8, 22, isNotEmpty) — wait for results
Used when the target application runs in a remote session where direct control-tree access is unavailable. This is the adapter of last resort.
Capabilities:
Mitigations for fragility:
Every component and automation should use structured error handling:
TRY
├── Navigate to screen
├── Fill form fields
├── Submit
├── WaitForControl("ConfirmationMessage", timeout: 30s)
│
CATCH (ElementNotFoundException)
├── Take screenshot
├── Log "Target control not found — UI may have changed"
├── Throw (propagate to automation for work-item-level handling)
│
CATCH (TimeoutException)
├── Take screenshot
├── Check if application is responding (WaitForControl with short timeout)
├── IF application frozen:
│ ├── Kill and restart application
│ └── Throw RetryableException
├── ELSE:
│ └── Throw (non-recoverable)
│
CATCH (Exception) — generic catch-all, always last
├── Take screenshot
├── Log full exception details (type, message, stack trace)
├── Throw (never silently swallow)
│
FINALLY
├── Reset to known state (navigate to home screen)
└── Release any locks held
| Method | Use Case | Example |
|---|---|---|
WaitForControl | Wait for a UI element to appear | Wait for a success banner after form submission |
WaitForProperty | Wait for a control property to reach a value | Wait for a button's Enabled property to become True |
WaitForScreen | Wait for a terminal screen to load | Wait for mainframe screen title to match |
WaitForControlVanish | Wait for a control to disappear | Wait for a loading spinner to vanish |
WaitForImage | Wait for a bitmap to appear on screen | Citrix/RDP — wait for a dialog to render |
All wait methods accept a timeout parameter (in seconds). Always set explicit timeouts — the default may be too short for slow applications or too long for responsive ones.
Anti-pattern — fixed sleep:
❌ Sleep(5000) — arbitrary, wastes time or breaks
✅ WaitForControl("ResultGrid", timeout: 30) — precise, adapts to app speed
Implement retry at the work-item level, not inside individual steps:
FOR EACH workItem IN queue:
retryCount = 0
maxRetries = 3
WHILE retryCount < maxRetries:
TRY:
ProcessWorkItem(workItem)
MarkCompleted(workItem)
BREAK — success, exit retry loop
CATCH RetryableException:
retryCount += 1
Log("Retry {retryCount}/{maxRetries} for {workItem.Id}")
ResetApplicationState()
IF retryCount >= maxRetries:
MarkFailed(workItem, "Exceeded max retries")
CATCH NonRetryableException:
MarkFailed(workItem, exception.Message)
BREAK — no point retrying
Always capture a screenshot when an exception occurs — it is the most valuable diagnostic artifact for RPA failures:
CATCH (Exception ex)
screenshotPath = "C:\RobotLogs\Screenshots\" +
DateTime.Now.ToString("yyyyMMdd_HHmmss") +
"_" + workItemId + ".png"
TakeScreenshot(screenshotPath)
Log.Error("Failed processing " + workItemId, ex, screenshotPath)
THROW
Abstract the UI layer from business logic — just as in test automation:
Component: SAP_LoginPage
├── Inputs: username (String), password (SecureString)
├── Outputs: isLoggedIn (Boolean)
├── Methods:
│ ├── EnterUsername(username) — SetField("usr/txtRSYST-BNAME", username)
│ ├── EnterPassword(password) — SetField("usr/pwdRSYST-BCODE", password)
│ ├── ClickLogin() — PressButton("btn[0]")
│ └── IsOnMainMenu() → Boolean — GetStatusBar().Type != "E"
Component: SAP_TransactionVA01
├── Inputs: orderData (DataTable)
├── Outputs: orderNumber (String)
├── Methods:
│ ├── NavigateToTransaction() — RunTransaction("VA01")
│ ├── FillHeader(...)
│ ├── AddLineItems(orderData)
│ └── SaveAndGetOrderNumber() → String
Benefits: when SAP screens change (field IDs, layout), you update only the page component — the calling automation is untouched.
Externalize environment-specific values — never embed them in automation logic:
Configuration values (stored in Robot Manager or external config):
├── TargetURL = "https://crm.prod.company.com"
├── MaxRetries = 3
├── TimeoutSeconds = 30
├── ReportEmailAddress = "rpa-team@company.com"
├── SAPSystemId = "PRD"
├── SAPClient = "100"
└── LogLevel = "Info"
Load configuration at automation start. Components receive config values as input parameters — they never read config directly.
Log levels:
├── DEBUG — control-level detail (clicked button X, read value Y) — dev/test only
├── INFO — business milestones (processing item 42, invoice created)
├── WARN — recoverable issues (retry triggered, fallback used)
├── ERROR — failures (exception details, screenshot path)
└── FATAL — automation cannot continue (application crash, credential failure)
Every log entry should include:
├── Timestamp (UTC)
├── Automation name
├── Component name
├── Work item ID (if applicable)
├── Robot machine name
└── Message with context
Structure components in layers:
Layer 1 — Adapters (technology coupling)
├── Web_Chrome.adapter
├── SAPGui.adapter
└── Terminal3270.adapter
Layer 2 — Page Components (UI abstraction)
├── CRM_LoginPage.comp
├── CRM_SearchCustomer.comp
├── SAP_CreateOrder.comp
└── Mainframe_AccountInquiry.comp
Layer 3 — Business Components (process logic)
├── ValidateInvoiceData.comp
├── CalculateDiscount.comp
└── FormatOutputReport.comp
Layer 4 — Automations (orchestration)
├── ProcessInvoice.auto — calls Layer 2 + 3 components
└── ReconcileAccounts.auto
Separate test/process data from automation logic:
Input sources:
├── Work queues (Robot Manager) — preferred for production
├── Excel/CSV files — batch processing
├── Database queries — dynamic data sets
├── API responses — real-time integration
└── Pega case data — platform integration
Pattern:
1. Read all input records into a DataTable
2. Validate each record before processing (schema, required fields, format)
3. Process valid records, skip and report invalid ones
4. Write results back to source (queue status, output file, API callback)
Robot Manager is the web-based management console for the Pega RPA fleet. It runs on the Pega Platform application server and provides centralized control over robot agents, deployments, work queues, schedules, and monitoring.
┌─────────────────────────────────────────────────┐
│ Pega Platform Server │
│ ┌───────────────────────────────────────────┐ │
│ │ Robot Manager │ │
│ │ ┌──────────┐ ┌──────────┐ ┌───────────┐ │ │
│ │ │Deployment│ │ Work │ │ Scheduling│ │ │
│ │ │ Manager │ │ Queues │ │ Engine │ │ │
│ │ └──────────┘ └──────────┘ └───────────┘ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌───────────┐ │ │
│ │ │ Fleet │ │Analytics │ │ Credential│ │ │
│ │ │ Monitor │ │Dashboard │ │ Vault │ │ │
│ │ └──────────┘ └──────────┘ └───────────┘ │ │
│ └───────────────────────────────────────────┘ │
└───────────────────────┬─────────────────────────┘
│ HTTPS
┌───────────────┼───────────────┐
│ │ │
┌────▼────┐ ┌─────▼────┐ ┌─────▼────┐
│ Robot │ │ Robot │ │ Robot │
│ Agent 1 │ │ Agent 2 │ │ Agent 3 │
│(Attended)│ │(Unattend)│ │(Unattend)│
│ Desktop │ │ VM 1 │ │ VM 2 │
└──────────┘ └──────────┘ └──────────┘
Organization
└── Environment
├── Development — Robot Studio connected, debugging enabled
├── Test/QA — pre-production validation, test queues
└── Production — live execution, full monitoring
Each environment has its own Robot Manager instance (or tenant), credential vault entries, configuration sets, and robot agents.
| Role | Permissions |
|---|---|
| Administrator | Full access — manage environments, users, credentials, global configuration |
| Manager | Manage automations, deployments, queues, schedules, view analytics |
| Operator | View robot status, trigger attended automations, view own queue items |
Each machine running automations requires a Robot Runtime agent registered with Robot Manager:
| Aspect | Attended | Unattended |
|---|---|---|
| Trigger | User-initiated (system tray, hotkey, Pega case) | Schedule, queue, API, or event trigger |
| User session | Runs alongside the user on their desktop | Runs on a locked/logged-in VM session (no user present) |
| Interaction | Can prompt the user for input mid-execution | Fully autonomous — no human prompts |
| Use case | Desktop assistance, guided data entry, real-time lookups | Batch processing, overnight jobs, high-volume work |
| Machine | User's workstation | Dedicated VM (one automation per VM at a time) |
Group robots by function, environment, or capacity:
Robot Groups:
├── Finance-Attended — 50 user desktops, attended mode
├── Finance-Unattended — 10 VMs, invoice processing
├── HR-Unattended — 5 VMs, employee onboarding
└── IT-Unattended — 3 VMs, account provisioning
Automations are assigned to groups, not individual robots. Robot Manager distributes work across available robots in the group.
Robot Runtime licenses are consumed per concurrent agent connection. Monitor license usage in Robot Manager:
1. Build the project in Robot Studio (Build → Build Solution)
2. Resolve any compilation errors
3. Create a deployment package (Build → Create Package)
4. Package output: .zip file containing compiled automations, components, adapters, and dependencies
5. Version the package (follows semantic versioning: MAJOR.MINOR.PATCH)
1. Upload the package to Robot Manager (Deployments → Upload Package)
2. Select target environment (dev/test/prod)
3. Assign to robot groups
4. Configure runtime parameters (if any)
5. Activate the deployment
6. Robot agents in the assigned group pull the new package on next check-in
Development Test/QA Production
┌──────────────┐ promote ┌──────────────┐ promote ┌──────────────┐
│ Package v1.3 │────────────►│ Package v1.3 │────────────►│ Package v1.3 │
│ Dev config │ │ Test config │ │ Prod config │
│ Test queues │ │ QA queues │ │ Live queues │
│ Dev creds │ │ Test creds │ │ Prod creds │
└──────────────┘ └──────────────┘ └──────────────┘
Each environment uses its own configuration, credentials, and queue data. The automation package binary is identical across environments — only configuration changes.
If a deployment causes issues:
Work queues are the primary mechanism for distributing work items to unattended robots.
Queue: InvoiceProcessing
├── Properties:
│ ├── Name: InvoiceProcessing
│ ├── Description: Incoming invoices from AP mailbox
│ ├── Priority: Normal (1-10 scale, 10 = highest)
│ ├── SLA: 4 hours from creation
│ ├── Max retries: 3
│ └── Retry delay: 5 minutes
│
├── Work Item Fields:
│ ├── InvoiceNumber (String, required)
│ ├── VendorName (String, required)
│ ├── Amount (Decimal, required)
│ ├── DueDate (DateTime)
│ └── AttachmentPath (String)
┌──────┐
│ New │◄──── Item added to queue (API, case, manual)
└──┬───┘
│ Robot picks up item
┌──▼────────┐
│In Progress │
└──┬────┬───┘
│ │
success │ │ failure
│ │
┌───────▼┐ ┌▼─────────┐
│Complete│ │ Failed │
└────────┘ └──┬───────┘
│ retry policy
│ (if retries remaining)
┌───▼──┐
│ New │ — re-queued with incremented retry count
└──────┘
| State | Description |
|---|---|
| New | Awaiting processing — available for any robot in the assigned group |
| In Progress | Locked by a robot — other robots cannot pick it up |
| Completed | Successfully processed — includes output data and completion timestamp |
| Failed | Processing failed — includes error message, screenshot reference, retry count |
| On Hold | Manually paused — requires operator intervention to resume |
' Get next work item (called at automation start or in processing loop)
workItem = Queue.GetNext("InvoiceProcessing")
' Check if item was returned (queue may be empty)
IF workItem Is Nothing THEN
Log.Info("Queue empty, exiting")
EXIT
END IF
' Read work item data
invoiceNumber = workItem.GetField("InvoiceNumber")
amount = CDbl(workItem.GetField("Amount"))
' Process...
' Mark complete with output data
workItem.SetField("ProcessedBy", Environment.MachineName)
workItem.SetField("ERPReference", erpDocNumber)
workItem.MarkCompleted()
' Or mark failed
workItem.MarkFailed("Vendor not found in ERP system")
Key metrics to track per queue:
| Type | Trigger | Use Case |
|---|---|---|
| Time-based | Cron-like schedule (daily, hourly, specific times) | Nightly batch processing, hourly data sync |
| Calendar-based | Business calendar aware (skip holidays, weekends) | End-of-month reconciliation, business-day-only processing |
| Trigger-based | Event-driven (queue threshold, file arrival, API call) | Process items as they arrive, react to system events |
| Manual | Operator-initiated from Robot Manager console | Ad-hoc runs, testing, emergency processing |
Schedule: NightlyInvoiceProcessing
├── Automation: ProcessInvoice v2.1
├── Robot Group: Finance-Unattended
├── Frequency: Daily at 22:00 UTC
├── Business Calendar: US-Banking (skip federal holidays)
├── Concurrent limit: 5 robots max
├── Timeout: 4 hours (kill if exceeds)
├── Blackout windows:
│ ├── Last day of quarter: 18:00-06:00 (month-end close)
│ └── Maintenance windows: per IT calendar
├── On failure: Alert rpa-team@company.com
└── Enabled: Yes
Set maximum concurrent robots per automation to prevent:
Concurrency planning:
├── Target app can handle 10 concurrent sessions → set limit to 8 (20% headroom)
├── Available unattended robots in group: 10
├── Available target app licenses: 15
└── Effective concurrency: min(8, 10, 15) = 8
Prevent automation execution during:
Robot Manager provides real-time dashboards showing:
Fleet Status:
├── Connected: 45/50 agents
├── Executing: 12 robots
├── Idle: 30 robots
├── Disconnected: 5 robots (investigate!)
└── Disabled: 3 robots (maintenance)
Today's Execution Summary:
├── Total executions: 1,247
├── Successful: 1,189 (95.3%)
├── Failed: 42 (3.4%)
├── In Progress: 16 (1.3%)
└── Average duration: 3m 22s
Queue Health:
├── InvoiceProcessing: 142 pending, 4h avg wait
├── CustomerOnboarding: 0 pending, current
├── AccountReconciliation: 23 pending, 1h avg wait
└── ReportGeneration: 567 pending, SLA breach risk ⚠
| Metric | Description | Alert Threshold (example) |
|---|---|---|
| Success rate | % of executions completing without error | Below 90% |
| Average duration | Mean execution time per automation | Above 2x baseline |
| Queue backlog | Items waiting in queues | Above SLA-breach horizon |
| Robot utilization | % of time robots are actively executing | Below 40% (over-provisioned) or above 95% (under-provisioned) |
| Failure clusters | Multiple failures on same robot/automation | 3+ consecutive failures |
| SLA compliance | % of work items completed within SLA window | Below 95% |
Robot Manager logs all administrative and execution events:
Configure alerts for:
Robot Manager provides a centralized credential vault — the only sanctioned location for storing automation credentials.
Credential Store:
├── SAP-Production
│ ├── Username: svc_rpa_sap_prd
│ ├── Password: ********** (encrypted)
│ ├── Environment: Production
│ ├── Robot override: None (all robots in group use this)
│ └── Rotation: 90 days
│
├── SAP-Test
│ ├── Username: svc_rpa_sap_tst
│ ├── Password: **********
│ ├── Environment: Test
│ └── Rotation: 90 days
│
├── WebApp-Production
│ ├── Username: rpa_service@company.com
│ ├── Password: **********
│ ├── Environment: Production
│ ├── Robot override:
│ │ ├── Robot-VM-01: rpa_service_01@company.com
│ │ └── Robot-VM-02: rpa_service_02@company.com
│ └── Rotation: 60 days
' Retrieve credential at runtime — never store in variables longer than needed
Dim cred As Credential = CredentialVault.Get("SAP-Production")
' Use immediately
SAPLogin.EnterUsername(cred.Username)
SAPLogin.EnterPassword(cred.SecurePassword)
' Do NOT log credentials
Log.Info("Logging in to SAP as " + cred.Username) — OK (username only)
Log.Info("Password is " + cred.Password) — NEVER DO THIS
Some applications require unique credentials per robot session (to avoid concurrent login conflicts). Configure per-robot credential overrides in Robot Manager:
For attended robots, Robot Manager can integrate with Windows Credential Manager to store credentials locally (encrypted by Windows DPAPI), with centralized management and push from Robot Manager.
Pega Platform cases can invoke RPA automations as part of case processing:
Case: InsuranceClaim
├── Stage: Data Collection
│ ├── Step: Receive claim (human)
│ └── Step: Validate documents (human)
├── Stage: Processing
│ ├── Step: Extract claim data from legacy system ← ROBOT AUTOMATION
│ ├── Step: Calculate settlement (decisioning)
│ └── Step: Review settlement (human, if above threshold)
├── Stage: Resolution
│ └── Step: Post payment to ERP ← ROBOT AUTOMATION
The case lifecycle can seamlessly hand off work to robots and resume when the robot completes.
Pega Case Robot Automation
┌──────────────┐ ┌──────────────────┐
│ ClaimNumber │────────────────►│ Input: ClaimNumber│
│ PolicyId │────────────────►│ Input: PolicyId │
│ ClaimantName │────────────────►│ Input: ClaimantName│
│ │ │ │
│ │ │ ... processing ... │
│ │ │ │
│ LegacyRef │◄────────────────│ Output: LegacyRef │
│ ClaimAmount │◄────────────────│ Output: Amount │
│ StatusCode │◄────────────────│ Output: Status │
└──────────────┘ └──────────────────┘
Data mapping is configured in the Pega case flow — the automation shape maps case properties to robot input parameters and robot output parameters back to case properties.
Pega Decisioning (AI/ML engine) can determine whether to route work to a robot or a human:
Decision Strategy: RouteClaimProcessing
├── IF claim is straightforward (amount < $5,000, standard type, known vendor):
│ └── Route to Robot Queue (fully automated)
├── IF claim is complex but data extraction is robotic:
│ ├── Route data extraction to Robot Queue
│ └── Route review to Human Work Queue
└── IF claim requires judgment:
└── Route entirely to Human Work Queue
This creates a hybrid workforce — robots handle high-volume repetitive work, humans handle exceptions and judgment calls, and decisioning optimally routes between them.
For custom integrations, Robot Manager exposes REST APIs:
# Queue management
POST /api/v1/queues/{queueId}/items — add work item
GET /api/v1/queues/{queueId}/items/{itemId} — get work item status
PUT /api/v1/queues/{queueId}/items/{itemId} — update work item
DELETE /api/v1/queues/{queueId}/items/{itemId} — remove work item
# Robot management
GET /api/v1/robots — list all robots
GET /api/v1/robots/{robotId}/status — get robot status
POST /api/v1/robots/{robotId}/execute — trigger automation on specific robot
# Deployment
POST /api/v1/deployments — upload package
PUT /api/v1/deployments/{deploymentId}/activate — activate package
PUT /api/v1/deployments/{deploymentId}/deactivate — deactivate package
# Schedules
GET /api/v1/schedules — list schedules
POST /api/v1/schedules — create schedule
PUT /api/v1/schedules/{scheduleId} — update schedule
# Authentication: OAuth 2.0 bearer token or Pega operator credentials
# Content-Type: application/json
| Domain | Skill |
|---|---|
| Pega Platform (case management, decisioning) | no dedicated skill yet — general knowledge / web-research |
| Windows automation scripting | windows-powershell |
| Windows CMD batch scripts | windows-cmd |
| Windows SSO and authentication | windows-sso |
| Docker containers for Pega services | docker-admin |