# Approval Plugin ApprovalPlugin supplies the data an application needs to present approval work to users. It tracks who can act on a document now, records the approval journey, and summarizes the work each person has completed. The configured [persistence provider](https://docs.workflowengine.io/get-started/concepts/persistence/) stores this data so the host application can build task lists, approval timelines, and completed-work screens. ApprovalPlugin tracks who can act and who already acted. The [Basic Plugin](https://docs.workflowengine.io/plugins/basic-plugin/) supplies the separate multi-user approval logic that fills approver lists and decides when the required approvals are complete. ApprovalPlugin is a data integration rather than an end-user task application. It does not provide a ready-made worklist UI or send notifications; the host application queries the plugin data, renders tasks, and chooses how users are notified. ## Inbox, approval history, and Outbox ApprovalPlugin organizes approval work around three questions: - **Inbox - What needs attention now?** Shows the documents or requests waiting for a person and the actions offered on those items. On a document page, the same view can show everyone who can act on that document. - **Approval history - What happened, and what comes next?** Shows the approval timeline for one document or request: predicted approval stages, eligible people, completed actions, executors, times, and comments. - **Outbox - What have I already handled?** Summarizes the documents or requests on which a person has completed an approval action. It is the basis for a "Completed by me" screen. Choose the view that answers the user's question. | Screen | Question it answers | ApprovalPlugin view | |--------|---------------------|---------------------| | Current approvers | Who can act on this document now? | Inbox for the document | | My tasks | Which documents are waiting for me? | Inbox for the selected workflow identity | | Approval timeline | Who could act, who acted, and what happened? | Approval history for the document | | Completed by me | Which documents have I already handled? | Outbox for the selected workflow identity | These views are connected. Inbox is a snapshot of current work, approval history contains predicted and completed stages, and Outbox is calculated from completed history rather than stored as a separate queue. ## ApprovalPlugin and BasicPlugin ApprovalPlugin records approval data: history items in `WorkflowApprovalHistory`, current work in `WorkflowInbox`, and derived outbox summaries. BasicPlugin runs the approval logic inside the scheme: it fills the approver list, keeps it in the `Approvers` process parameter, and decides completion with the `IsApproveComplete` condition. The plugins are independent; register either or both. ## Where to start Choose the page by application task. Start with the overview to register ApprovalPlugin, prepare a qualifying scheme, and follow one approval through the stored data. Use Inbox and Outbox for "My Tasks", current approvers, and "Completed by me" screens. Use Approval History for a per-process audit timeline. Use Basic Plugin Parallel Approval when the workflow must count decisions or wait for an approval threshold. ## Frequently asked questions **What does ApprovalPlugin do in Workflow Engine?** ApprovalPlugin records approval history and maintains inbox entries for identities resolved from command-transition actors. It also exposes outbox summaries derived from completed approval history. **Does ApprovalPlugin decide when every approver has approved?** No. ApprovalPlugin does not evaluate approval completion. BasicPlugin provides `FillApproversUsers`, `FillApproversRoles`, `ClearApprovers`, and `IsApproveComplete` for workflows that require several decisions before moving forward. **Does ApprovalPlugin require a separate NuGet package?** No. ApprovalPlugin is included in the `WorkflowEngine.NETCore-Core` package and uses the approval capabilities of the configured persistence provider. **Where does ApprovalPlugin store its data?** ApprovalPlugin stores inbox records in `WorkflowInbox` and history records in `WorkflowApprovalHistory`. Providers use tables or MongoDB collections for those stores. Outbox results are grouped from completed history instead of being stored separately. **Does ApprovalPlugin manage users, roles, or business documents?** No. The host application continues to manage its users, roles, and business records. Workflow actors and rules determine who can act, while ApprovalPlugin records the pending and completed approval work. **Does ApprovalPlugin provide a task UI or send approval notifications?** No. ApprovalPlugin maintains history and per-identity worklist data. The host application builds the task UI, sends any email or push notifications, and uses WorkflowRuntime to validate and execute commands.