---
# System prepended metadata

title: Task Management

---

# Human Task Management

## Pre-Reading(s)
* https://docs.camunda.io/docs/components/tasklist/userguide/using-tasklist/
* https://docs.camunda.io/docs/components/best-practices/architecture/understanding-human-tasks-management/
* https://blog.kie.org/2021/05/kogito-user-tasks-process-api.html
* https://documentation.signavio.com/suite/en-us/Content/workflow-accelerator/userguide/action-types/user-task.htm
* https://www.omg.org/spec/BPMN/2.0/PDF
* https://docs.jboss.org/jbpm/v6.0/userguide/jBPMTaskService.html


## Requirements

* All states (FSM | Zeebe) can create an item to the Human Task List.
* Tasks supports;
    * Role based transition consuming
    * Auto Transition
    * Pool management features (Claim, Release)
* The task list is dynamically updated (SignalR)
* Supports task list count badge
* Task list transitions are part of records transtion history. (Like sub workflow).
* Completion of the task can only be through the current transactions of the state.

### Task Lifetime With Claim

```mermaid
stateDiagram-v2
    unclaimed: Waiting
    claimed: Claimed By User
    completed: Completed

unclaimed --> claimed : Claim
    claimed --> unclaimed : Release
    
    claimed --> completed : Transaction 1
    claimed --> completed : Transaction 2
```

### Task Lifetime Without Claim

```mermaid
stateDiagram-v2
    unclaimed: Waiting
    completed: Completed
    
    unclaimed --> completed : Transaction 1
    unclaimed --> completed : Transaction 2
```

## Transaction Security

All transitions are secured with **Roles** defined in Amorphie IAM. Role configuration of processes is stored in the workflow database.

## "Set State" with Create Task

All states can also hold the task item creation configuration.

```csharp
public class State : BaseDbEntity
{
    ...
    public bool CreateTask { get; set; } = false;
    
    public string[]? TaskRoles { get; set; }
    public int? TaskPriority { get; set; }
    public bool? MustClaimTaskBeforeAction { get; set; }
    
    public string? AutoTranstion { get; set; }
    public int? AutoTranstionInSeconds { get; set; }

    
}
```


## Task List View

Task List View is custom, DI based view for Amorphie.Backoffice (This view will also be validation of custom view injection to the backoffice.)

Task List View direcly consumes Task List services for interactions (Amorphie.Workflow.HumanTask ?)

Task List View Filters;
* Waiting
* Claimed By Me
* Claimed By Another
* Completed
* Released By Me, *This is history based filter*

Task list works with paging








