194 lines
6.1 KiB
Python
194 lines
6.1 KiB
Python
from __future__ import annotations
|
|
|
|
from govoplan_core.core.workflows import WorkflowDefinitionContribution
|
|
|
|
|
|
def function_assignment_workflow_definitions(
|
|
*,
|
|
module_version: str,
|
|
) -> tuple[WorkflowDefinitionContribution, ...]:
|
|
return (
|
|
_contribution(
|
|
module_version=module_version,
|
|
definition_key="function-assignment-request",
|
|
name="Request an organization function",
|
|
description=(
|
|
"Governed holder, authority, and optional recipient decisions "
|
|
"for a self-requested organization function assignment."
|
|
),
|
|
kind="request",
|
|
),
|
|
_contribution(
|
|
module_version=module_version,
|
|
definition_key="function-assignment-grant",
|
|
name="Bestow an organization function",
|
|
description=(
|
|
"Governed holder, authority, and recipient decisions for an "
|
|
"organization function grant."
|
|
),
|
|
kind="grant",
|
|
),
|
|
)
|
|
|
|
|
|
def _contribution(
|
|
*,
|
|
module_version: str,
|
|
definition_key: str,
|
|
name: str,
|
|
description: str,
|
|
kind: str,
|
|
) -> WorkflowDefinitionContribution:
|
|
return WorkflowDefinitionContribution(
|
|
origin_module_id="idm",
|
|
origin_module_version=module_version,
|
|
definition_key=definition_key,
|
|
name=name,
|
|
description=description,
|
|
graph=_graph(kind=kind),
|
|
scope_type="system",
|
|
inherit_to_lower_scopes=True,
|
|
allow_start=True,
|
|
allow_reuse=False,
|
|
allow_automation=False,
|
|
execution_mode="guided",
|
|
activate_on_install=True,
|
|
metadata={
|
|
"domain": "idm.function_assignment_change",
|
|
"change_kind": kind,
|
|
"state_owner": "idm",
|
|
},
|
|
policy_metadata={
|
|
"governance_capability": ("policy.functionAssignmentGovernance"),
|
|
},
|
|
)
|
|
|
|
|
|
def _graph(*, kind: str) -> dict[str, object]:
|
|
return {
|
|
"schema_version": 1,
|
|
"nodes": [
|
|
{
|
|
"id": "start",
|
|
"type": "workflow.start.manual",
|
|
"label": "Submitted",
|
|
"position": {"x": 20, "y": 120},
|
|
"config": {
|
|
"input_schema_ref": (f"govoplan/idm/function-assignment-{kind}.v1"),
|
|
},
|
|
},
|
|
{
|
|
"id": "holder_review",
|
|
"type": "workflow.review",
|
|
"label": "Holder review",
|
|
"position": {"x": 230, "y": 120},
|
|
"config": {
|
|
"title": "Holder review",
|
|
"reviewer": "effective-holder",
|
|
"required_evidence": [],
|
|
"view_surface_ids": [
|
|
"idm.action.view-function-assignments",
|
|
],
|
|
},
|
|
},
|
|
{
|
|
"id": "authority_review",
|
|
"type": "workflow.review",
|
|
"label": "Authority clearance",
|
|
"position": {"x": 470, "y": 120},
|
|
"config": {
|
|
"title": "Authority clearance",
|
|
"reviewer": "designated-authority",
|
|
"required_evidence": [],
|
|
"view_surface_ids": [
|
|
"idm.action.view-function-assignments",
|
|
],
|
|
},
|
|
},
|
|
{
|
|
"id": "recipient_review",
|
|
"type": "workflow.review",
|
|
"label": "Recipient acceptance",
|
|
"position": {"x": 730, "y": 120},
|
|
"config": {
|
|
"title": "Recipient acceptance",
|
|
"reviewer": "candidate",
|
|
"required_evidence": [],
|
|
"view_surface_ids": [
|
|
"idm.action.view-function-assignments",
|
|
],
|
|
},
|
|
},
|
|
{
|
|
"id": "completed",
|
|
"type": "workflow.end.completed",
|
|
"label": "Approved",
|
|
"position": {"x": 990, "y": 70},
|
|
"config": {"output_mapping": {}},
|
|
},
|
|
{
|
|
"id": "rejected",
|
|
"type": "workflow.end.cancelled",
|
|
"label": "Rejected",
|
|
"position": {"x": 990, "y": 230},
|
|
"config": {"reason": "Function assignment change rejected"},
|
|
},
|
|
],
|
|
"edges": [
|
|
{
|
|
"id": "start-holder",
|
|
"source": "start",
|
|
"target": "holder_review",
|
|
},
|
|
{
|
|
"id": "holder-authority",
|
|
"source": "holder_review",
|
|
"source_port": "approved",
|
|
"target": "authority_review",
|
|
},
|
|
{
|
|
"id": "holder-rejected",
|
|
"source": "holder_review",
|
|
"source_port": "rejected",
|
|
"target": "rejected",
|
|
},
|
|
{
|
|
"id": "authority-recipient",
|
|
"source": "authority_review",
|
|
"source_port": "approved",
|
|
"target": "recipient_review",
|
|
},
|
|
{
|
|
"id": "authority-rejected",
|
|
"source": "authority_review",
|
|
"source_port": "rejected",
|
|
"target": "rejected",
|
|
},
|
|
{
|
|
"id": "recipient-completed",
|
|
"source": "recipient_review",
|
|
"source_port": "approved",
|
|
"target": "completed",
|
|
},
|
|
{
|
|
"id": "recipient-rejected",
|
|
"source": "recipient_review",
|
|
"source_port": "rejected",
|
|
"target": "rejected",
|
|
},
|
|
],
|
|
"metadata": {
|
|
"notation": "govoplan.workflow.native",
|
|
"domain": "idm.function_assignment_change",
|
|
"change_kind": kind,
|
|
"optional_steps": [
|
|
"holder_review",
|
|
"authority_review",
|
|
"recipient_review",
|
|
],
|
|
},
|
|
}
|
|
|
|
|
|
__all__ = ["function_assignment_workflow_definitions"]
|