collective.multiworkflow.chain

collective.multiworkflow.chain#

The workflow chain adapter.

Registered for IAdditionalWorkflows and the workflow tool, making it more specific than Plone's default chain adapter, which is registered for Interface. It never replaces the chain configured for a type — it only appends.

collective.multiworkflow.chain.additional_workflows_chain(context: Any, tool: Any) tuple[str, ...][source]#

Append contributed workflows to the chain configured for the type.

The base chain is read by calling Plone's default adapter function directly. That function resolves the chain from the tool's own _chains_by_type mapping rather than through getChainFor, so this call cannot re-enter adapter lookup and no recursion guard is needed.

A contributed id that no workflow in the tool answers to is logged and skipped: a bad declaration must never break chain lookup, because a failure here would make the object unusable rather than merely misconfigured.

Parameters:
  • context -- the content object providing a participating marker.

  • tool -- the portal_workflow tool.

Returns:

the base chain followed by the contributed workflows, in order and deduplicated.