Skip to main content

Task Types

The BankLingo Process Engine supports 8 different task types, each designed for specific use cases in business process automation.

Available Task Types​

1. User Task​

Purpose: Human interaction and manual work

User tasks pause process execution and wait for a human to perform an action (approve, reject, review, etc.).

Use Cases:

  • Approvals and reviews
  • Manual data entry
  • Decision making
  • Document verification

View Documentation


2. Service Task​

Purpose: Call external services and APIs

Service tasks make HTTP/REST API calls to external systems, with support for retries, timeouts, and response validation.

Use Cases:

  • REST API integration
  • Third-party service calls
  • Data synchronization
  • External system updates

View Documentation


3. Script Task​

Purpose: Execute inline code

Script tasks execute JavaScript/Node.js code directly within the process, with full access to process variables.

Use Cases:

  • Data transformation
  • Calculations and logic
  • Variable manipulation
  • Conditional logic

View Documentation


4. Send Task​

Purpose: Send messages and notifications

Send tasks send messages, emails, SMS, push notifications, or call webhooks for one-way communication.

Use Cases:

  • Email notifications
  • SMS alerts
  • Push notifications
  • Webhook calls
  • Event publishing
  • Status updates

View Documentation


5. Business Rule Task​

Purpose: Execute business rules and decision tables

Business rule tasks evaluate complex business logic using rule sets and decision tables.

Use Cases:

  • Pricing calculations
  • Risk assessment
  • Eligibility checks
  • Policy evaluation
  • Credit scoring

View Documentation


6. Receive Task​

Purpose: Wait for external messages

Receive tasks pause execution and wait for external messages or signals with correlation.

Use Cases:

  • Waiting for payment confirmation
  • Document upload events
  • Third-party callbacks
  • Asynchronous responses
  • Event-driven workflows

View Documentation


7. Call Activity​

Purpose: Invoke sub-processes

Call activities invoke other BPMN processes as sub-processes, with data mapping between parent and child.

Use Cases:

  • Reusable workflows
  • Complex process composition
  • Modular process design
  • Nested approvals
  • Hierarchical processes

View Documentation


8. Gateway​

Purpose: Control flow routing and decisions

Gateways control the flow of execution based on conditions, enabling branching, merging, and parallel execution.

Types:

  • Exclusive Gateway: Single path selection (XOR)
  • Parallel Gateway: Multiple parallel paths (AND)
  • Inclusive Gateway: Multiple conditional paths (OR)

Use Cases:

  • Conditional routing
  • Dynamic path selection
  • Parallel execution
  • Workflow branching

View Documentation


Task Type Comparison​

Task TypeExecutionHuman InteractionExternal SystemComplexity
UserTaskPausedRequiredNoLow
ServiceTaskAutomaticNoYes (HTTP)Medium
ScriptTaskAutomaticNoNoLow
SendTaskAutomaticNoYes (Message)Low
BusinessRuleTaskAutomaticNoRules EngineMedium
ReceiveTaskPausedNoYes (Event)Medium
CallActivityAutomaticDependsDependsHigh
GatewayAutomaticNoNoLow

Common Properties​

All task types share these common properties:

Base Properties​

<bpmn:extensionElements>
<custom:properties>
<!-- Task identification -->
<custom:property name="Name" value="Task name" />
<custom:property name="Description" value="Task description" />

<!-- Entity state tracking -->
<custom:property name="EntityState" value="Processing" />

<!-- Responsible parties -->
<custom:property name="ResponsibleTeams" value="Team1,Team2" />
<custom:property name="ResponsibleUsers" value="user1@bank.com,user2@bank.com" />

<!-- Async execution -->
<custom:property name="AsyncBefore" value="true" />
<custom:property name="AsyncAfter" value="true" />
</custom:properties>
</bpmn:extensionElements>

Input/Output Mapping​

All tasks support variable mapping:

<custom:properties>
<!-- Input mapping: Read from process variables -->
<custom:property name="InputMapping" value="{
&quot;amount&quot;: &quot;loanAmount&quot;,
&quot;customer&quot;: &quot;customerData.name&quot;
}" />

<!-- Output mapping: Write to process variables -->
<custom:property name="OutputMapping" value="{
&quot;result&quot;: &quot;approvalResult&quot;,
&quot;timestamp&quot;: &quot;processedAt&quot;
}" />
</custom:properties>

Choosing the Right Task Type​

Decision Tree​

Need human interaction?
├─ YES → UserTask
└─ NO → Continue

Need to call external API?
├─ YES → ServiceTask or SendTask
│ ├─ Expect response? → ServiceTask
│ └─ Fire-and-forget? → SendTask
└─ NO → Continue

Need to execute business rules?
├─ YES → BusinessRuleTask
└─ NO → Continue

Need to execute custom code?
├─ YES → ScriptTask
└─ NO → Continue

Need to wait for external event?
├─ YES → ReceiveTask
└─ NO → Continue

Need to invoke another process?
├─ YES → CallActivity
└─ NO → Continue

Need conditional routing?
└─ YES → Gateway

Task Execution Order​

Tasks execute in the order defined by sequence flows:

<bpmn:process>
<bpmn:startEvent id="Start" />
<bpmn:sequenceFlow sourceRef="Start" targetRef="Task1" />

<bpmn:scriptTask id="Task1" />
<bpmn:sequenceFlow sourceRef="Task1" targetRef="Task2" />

<bpmn:userTask id="Task2" />
<bpmn:sequenceFlow sourceRef="Task2" targetRef="Gateway1" />

<bpmn:exclusiveGateway id="Gateway1" />
<!-- Multiple outgoing flows from gateway -->
</bpmn:process>

Execution: Start → Task1 → Task2 (pauses) → Gateway1 → (conditional routing)

Error Handling​

All tasks support error handling:

<custom:properties>
<!-- Retry configuration -->
<custom:property name="Retries" value="3" />
<custom:property name="TimeoutMs" value="30000" />

<!-- Error handling -->
<custom:property name="OnError" value="Continue" /> <!-- Continue, Retry, Fail -->
</custom:properties>

Next Steps​

Explore detailed documentation for each task type:

Advanced Features (Phases 1-5):

Or continue with: