# Available Policy Workflow Blocks

Starting with the [Wikipedia definition](https://en.wikipedia.org/wiki/Workflow_engine), a Policy Workflow Engine (PWE) is a software application that manages business processes based on business rules and business data which are defined within the context of a specific policy. A PWE, therefore, manages and monitors the state of required policy actions and the required information flow in a policy grouped into a policy workflow, and determines which are the next policy actions based on the state of a policy workflow. The policy actions may be anything from saving an application form in a document management system to sending a reminder e-mail to users or escalating overdue items to management. Policy Workflow Blocks enable different business logic to exist within the Guardian’s PWE.

### Available Policy Workflows Blocks

<table><thead><tr><th align="center">Block</th><th width="226.33333333333331" align="center">Definition</th><th align="center">Documentation Link</th></tr></thead><tbody><tr><td align="center">InterfaceContainerBlock</td><td align="center">A block which contains and organizes other blocks.</td><td align="center"><a href="/pages/KxODrErWroJ2Qfr6hTZw">InterfaceContainerBlock</a></td></tr><tr><td align="center">PolicyRolesBlock</td><td align="center">A block which determines a role for the user.</td><td align="center"><a href="/pages/6cVQzZ2iITgvyjt7Ixvc">PolicyRolesBlock</a></td></tr><tr><td align="center">InterfaceStepBlock</td><td align="center">Similar to the InterfaceContainerBlock, with the difference that it can only render a single child element.</td><td align="center"><a href="/pages/WVfvk2CXNaNTrkewRkzw">InterfaceStepBlock</a></td></tr><tr><td align="center">requestVCDocumentBlock</td><td align="center">A type of the block which creates a form from the schema, and sends the document to the server.</td><td align="center"><a href="/pages/OdPt6rpdp9tg9zmpUGQy">requestVCDocumentBlock</a></td></tr><tr><td align="center">sendToGuardianBlock</td><td align="center">A type of the block which can save a new or updated document.</td><td align="center"><a href="/pages/puXpj9PkEjjZGUsnCCHN">sendToGuardianBlock</a></td></tr><tr><td align="center">reassigningBlock</td><td align="center">A type of block which re-signs the document and change the user to document owner.</td><td align="center"><a href="/pages/SuNKxcpCnK4w7BcaDXfl">reassigningBlock</a></td></tr><tr><td align="center">InformationBlock</td><td align="center">A block type which can display a notification or a progress bar.</td><td align="center"><a href="/pages/IYvxjIVuBQENGCUCEDg9">InformationBlock</a></td></tr><tr><td align="center">InterfaceDocumentsSourceBlock</td><td align="center">A block type which outputs information from the DB as grid.</td><td align="center"><a href="/pages/qGivLPcEvQDctVr3EHYA">InterfaceDocumentsSourceBlock</a></td></tr><tr><td align="center">paginationAddon</td><td align="center">A block type which adds pagination to the InterfaceDocumentSourceBlock if added</td><td align="center"><a href="/pages/5DMoBqPR2qCFUYgkftc9">paginationAddon</a></td></tr><tr><td align="center">DocumentsSourceAddOn</td><td align="center">A type of block for searching VC as grid</td><td align="center"><a href="/pages/hCyLKjNs5h8wqo8DGhqs">DocumentsSourceAddOn</a></td></tr><tr><td align="center">filtersAddOn</td><td align="center">A child block for 'DocumentsSourceAddon'. Contains additional dynamic filters</td><td align="center"><a href="/pages/KJ45lTZnsbcxYLvKBCHX">filtersAddOn</a></td></tr><tr><td align="center">InterfaceActionBlock</td><td align="center">A block to create custom actions.</td><td align="center"><a href="/pages/mfI9prQxOERUc2JvH5G7">InterfaceActionBlock</a></td></tr><tr><td align="center">externalDataBlock</td><td align="center">Receives data from the external source and passes them over the the next block.</td><td align="center"><a href="/pages/VnMehxszXX5tjEYiaVSY">externalDataBlock</a></td></tr><tr><td align="center">retirementDocumentBlock</td><td align="center">Receives the VC from the previous block and retires based on the rule(s).</td><td align="center"><a href="/pages/xjVnuec3JH8dXBnIDIgA">retirementDocumentBlock</a></td></tr><tr><td align="center">calculateContainerBlock &#x26; calculateMathAddonBlock</td><td align="center">The blocks to calculate. calculateContainerBlock: Receives VC from the previous block. Passes the new VC to the next block.<br>calculateMathOnBlock: Child block for 'calculateContainerBlock'. Contains descriptions of variables and formulas.</td><td align="center"><a href="/pages/i1trk19OS6iAUedFuZa1">calculateContainerBlock &#x26; calculateMathAddonBlock</a></td></tr><tr><td align="center">reportBlock</td><td align="center">The block container for TrustChain.</td><td align="center"><a href="/pages/QYnMFSQa8Qn8BFMxhuNp">reportBlock &#x26; reportItemBlock</a></td></tr><tr><td align="center">reportItemBlock</td><td align="center">The block for setting up the elements of the TrustChain.</td><td align="center"><a href="/pages/QYnMFSQa8Qn8BFMxhuNp">reportBlock &#x26; reportItemBlock</a></td></tr><tr><td align="center">Switch Block</td><td align="center">This block transfers execution to one or more blocks depending on the parameters</td><td align="center"><a href="/pages/dLgS4AgoVq8GL1NEym47">switchBlock</a></td></tr><tr><td align="center">timerBlock</td><td align="center">timer object which triggers the event</td><td align="center"><a href="/pages/SagNI0ixuyRHv6HKDaht">TimerBlock</a></td></tr><tr><td align="center">aggregateDocumentBlock</td><td align="center">block responsible for aggregation of the documents</td><td align="center"><a href="/pages/zFQThAsM0upts6ARbWYG">aggregateDocumentBlock</a></td></tr><tr><td align="center">revocationBlock</td><td align="center">This Block finds related messages in policy topics, and revokes those messages and sends it to Hedera topic, but it doesn’t save documents in DB</td><td align="center"><a href="https://github.com/hashgraph/guardian/blob/develop/docs/available-policy-workflow-blocks/broken-reference/README.md">revocationBlock</a></td></tr><tr><td align="center">setRelationshipsBlock</td><td align="center">Contains DocumentSourceAddOn Block and set relationships for input document.</td><td align="center"><a href="/pages/sMDDscLghqoLYA5CXYrC">setRelationshipBlock</a></td></tr><tr><td align="center">buttonBlock</td><td align="center">Block responsible for creating buttons</td><td align="center"><a href="/pages/jMBjK6bUPfQ0Iwiqk85j">buttonBlock</a></td></tr><tr><td align="center">documentValidatorBlock</td><td align="center">Block to validate documents, including linked documents</td><td align="center"><a href="/pages/3UBIc4ZGijP4jiQuyYHl">documentValidatorBlock</a></td></tr><tr><td align="center">tokenActionBlock</td><td align="center">Block is responsible to automation actions related to tokens</td><td align="center"><a href="/pages/GjcQtvUZHIzn74EAQPt3">tokenActionBlock</a></td></tr><tr><td align="center">tokenConfirmationBlock</td><td align="center">Block enables the owner of the private key for the account to manually perform operations with the token</td><td align="center"><a href="/pages/2aLCDJb0tM88NjC4lVYp">tokenConfirmationBlock</a></td></tr><tr><td align="center">mintDocumentBlock</td><td align="center">Block is responsible for adding configurations on calculating the amount of tokens to be minted.</td><td align="center"><a href="/pages/LvR7TaF526HGBWSxyEZm">mintDocumentBlock</a></td></tr><tr><td align="center">groupManagerBlock</td><td align="center">Block allows to manage group membership, add and remove users from the group.</td><td align="center"><a href="/pages/U5STCXaxOKLpaqDrSt5C">groupManagerBlock</a></td></tr><tr><td align="center">multiSignBlock</td><td align="center">This block provides a way to specify multiple signators for a single VC document, and then create a VP based on it.</td><td align="center"><a href="/pages/NHxvGSgIWjJv60eOw1oQ">multiSignBlock</a></td></tr><tr><td align="center">customLogicBlock</td><td align="center">This block is used to perform Logic</td><td align="center"><a href="/pages/mCbPfxcWwvqbprP1lJOe">customLogicBlock</a></td></tr><tr><td align="center">splitBlock</td><td align="center">This block allows to accumulate VC documents and produce new VCs in fixed chunks</td><td align="center"><a href="/pages/2yH80UWsIHapByG9wwfk">splitBlock</a><br></td></tr><tr><td align="center">wipeDocumentBlock</td><td align="center">This block is used to wipe the Token</td><td align="center"><a href="https://github.com/hashgraph/guardian/blob/develop/docs/guardian/standard-registry/policies/policy-creation/introduction/broken-reference/README.md">wipeDocumentBlock</a></td></tr><tr><td align="center">CreateTokenBlock</td><td align="center">This block is used to create Token template</td><td align="center"><a href="/pages/LSvvaP9Jrb8avf59K765">CreateTokenBlock</a></td></tr><tr><td align="center">impactAddon</td><td align="center">This is an addon to create token impacts</td><td align="center"><a href="/pages/Gcy0v39C4ux2xZQ0xoLQ">impactAddon</a></td></tr><tr><td align="center">Http Request Block</td><td align="center">This block is used to retrieve outside data</td><td align="center"><a href="/pages/QOuvJYVfvjBwtEHWpH3S">HttpRequestBlock</a></td></tr><tr><td align="center">historyAddon</td><td align="center">This block turn on history on interfaceDocumentsSourceBlock.</td><td align="center"><a href="/pages/7kKkvzHlZvffCf7fvilg">historyAddon</a></td></tr><tr><td align="center">selectiveAttributes Block</td><td align="center">This block will filter attributes (option field) in documents returned by documentsSourceAddon.</td><td align="center"><a href="/pages/j3ITkl65tpokLFMpDlrN">selectiveAttributesBlock</a></td></tr><tr><td align="center">tagsManagerBlock</td><td align="center">This block is responsible for managing tags in policies.</td><td align="center"><a href="/pages/KZ9Lgru34543M7URuJ0g">tagsManagerBlock</a></td></tr><tr><td align="center">externalTopicBlock</td><td align="center">This block allows to configure the link to Hedera topics established by other policy instances for monitoring of ‘document published’ messages and ingestion of the targeted VC documents.</td><td align="center"><a href="/pages/sLicPNEMM5018563LA9G">externalTopicBlock</a></td></tr><tr><td align="center">messagesReportBlock</td><td align="center">This block allows to create report based on the inter-referenced messages.</td><td align="center"><a href="/pages/wUHIkdUTzdXf6l9YPcEc">messagesReportBlock</a></td></tr><tr><td align="center">notificationBlock</td><td align="center">This block is used to generate notifications</td><td align="center"><a href="/pages/a0GgrJuB7YVC4kvtv1SK">notificationBlock</a></td></tr><tr><td align="center">extractDataBlock</td><td align="center">This block extractDataBlock provides means to extract a data set which corresponds to any of these embedded schemas (at any depth level)</td><td align="center"><a href="/pages/rJqnI3cyR8cKRnqmzogS">extractDataBlock</a></td></tr><tr><td align="center">button block Addon</td><td align="center">This block is used to display interactive buttons</td><td align="center"><a href="/pages/6P1jyg1XPOZpppkpTmTJ">buttonBlockAddon</a></td></tr><tr><td align="center">Dropdown Block Addon</td><td align="center">The block is to display an interactive dropdown menu</td><td align="center"><a href="/pages/cRaUevRVZ6PmMsh7qvQQ">dropdownBlockAddon</a></td></tr><tr><td align="center">RequestVC Document Block Addon</td><td align="center">This block is to display an interactive button in the interfaceDocumentsSourceBlock.</td><td align="center"><a href="/pages/gbV9YRoUDNKvbhJoWQ5E">requestVcDocumentBlockAddon</a></td></tr><tr><td align="center">Data Transformation Addon</td><td align="center"><p>This block is to produce a transformed result based on the data from the source</p><p>and filters blocks</p></td><td align="center"><a href="/pages/anVZ2yra5fH4tCsqNkCg">Data Transformation Addon</a></td></tr><tr><td align="center">IntegrationButtonBlock</td><td align="center">This block enable interaction with third-party data providers</td><td align="center"><a href="/pages/JzyxokhUbml73wXO0N78">IntegrationButton</a></td></tr><tr><td align="center">Global Events Reader Block</td><td align="center">This block subscribes to global topics and routes incoming events into policy branches</td><td align="center"><p><a href="/pages/qcyg0yIofZLDVRmYkodr">Global Events Reader</a></p><p><a href="/pages/qcyg0yIofZLDVRmYkodr">Block</a></p></td></tr><tr><td align="center">Global Events Writer Block</td><td align="center">This block publishes document references to one or more global Hedera topics</td><td align="center"><p><a href="/pages/QMTRaqcB5KArxDFfWCRd">Global Events Writer</a></p><p><a href="/pages/QMTRaqcB5KArxDFfWCRd">Block</a></p></td></tr><tr><td align="center">mathBlock</td><td align="center">This block defines calculations on document data in mathematical notation</td><td align="center"><a href="/pages/QNB5phDHMJxo5yXbSXFc">MathBlock</a></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://guardian.hedera.com/guardian-dev/guardian/standard-registry/policies/policy-creation/introduction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
