# 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="introduction/container-workflow-block">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="introduction/roles-workflow-block">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="introduction/step-workflow-block">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="introduction/request-workflow-block">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="introduction/send-workflow-block">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="introduction/reassigningblock">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="introduction/information-workflow-block">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="introduction/interfacedocumentssourceblock">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="introduction/paginationaddon">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="introduction/documentssourceaddonblock">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="introduction/filtersaddonblock">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="introduction/action-workflow-block">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="introduction/external-data-workflow-block">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="introduction/retirementdocumentblock">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="introduction/calculatecontainerblock-and-calculatemathaddonblock">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="introduction/reportblock-and-reportitemblock">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="introduction/reportblock-and-reportitemblock">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="introduction/switchblock">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="introduction/timerblock">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="introduction/aggregatedocumentblock">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/main/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="introduction/setrelationshipsblock">setRelationshipBlock</a></td></tr><tr><td align="center">buttonBlock</td><td align="center">Block responsible for creating buttons</td><td align="center"><a href="introduction/buttonblock">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="introduction/documentvalidatorblock">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="introduction/tokenactionblock">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="introduction/tokenconfirmationblock">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="introduction/mintdocumentblock">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="introduction/groupmanagerblock">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="introduction/multisignblock">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="introduction/customlogicblock">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="introduction/splitblock">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/main/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="introduction/create-token-block">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="introduction/impactaddon">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="introduction/http-request-block">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="introduction/historyaddon">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="introduction/selectiveattributes-block">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="introduction/tagsmanagerblock">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="introduction/externaltopicblock">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="introduction/messagesreportblock">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="introduction/notificationblock">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="introduction/externaldatablock">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="introduction/button-block-addon-buttonblockaddon">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="introduction/dropdown-block-addon-dropdownblockaddon">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="introduction/request-vc-document-block-addon-requestvcdocumentblockaddon">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="introduction/data-transformation-addon">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="introduction/integrationbuttonblock">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="introduction/global-events-reader-block">Global Events Reader </a></p><p><a href="introduction/global-events-reader-block">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="introduction/global-events-writer-block">Global Events Writer </a></p><p><a href="introduction/global-events-writer-block">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="introduction/mathblock">MathBlock</a></td></tr></tbody></table>
