Add governed reusable workflow definitions
This commit is contained in:
@@ -6,6 +6,8 @@ import type {
|
||||
} from "@govoplan/core-webui/definition-graph";
|
||||
|
||||
export type WorkflowStatus = "draft" | "active" | "archived";
|
||||
export type DefinitionScopeType = "system" | "tenant" | "group" | "user";
|
||||
export type DefinitionKind = "flow" | "template";
|
||||
export type WorkflowGraphNode = DefinitionGraphNode;
|
||||
export type WorkflowGraph = DefinitionGraph & {
|
||||
schema_version: 1;
|
||||
@@ -36,7 +38,7 @@ export type WorkflowRevision = {
|
||||
|
||||
export type WorkflowDefinition = {
|
||||
id: string;
|
||||
tenant_id: string;
|
||||
tenant_id: string | null;
|
||||
key: string;
|
||||
name: string;
|
||||
description?: string | null;
|
||||
@@ -49,6 +51,32 @@ export type WorkflowDefinition = {
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
revision: WorkflowRevision;
|
||||
governance: WorkflowGovernance;
|
||||
};
|
||||
|
||||
export type WorkflowActionDecision = {
|
||||
allowed: boolean;
|
||||
reason?: string | null;
|
||||
source_path: Array<Record<string, unknown>>;
|
||||
requirements: string[];
|
||||
details: Record<string, unknown>;
|
||||
};
|
||||
|
||||
export type WorkflowGovernance = {
|
||||
scope_type: DefinitionScopeType;
|
||||
scope_id?: string | null;
|
||||
definition_kind: DefinitionKind;
|
||||
inherit_to_lower_scopes: boolean;
|
||||
allow_start: boolean;
|
||||
allow_reuse: boolean;
|
||||
allow_automation: boolean;
|
||||
derived_from_definition_id?: string | null;
|
||||
derived_from_revision?: number | null;
|
||||
derived_from_hash?: string | null;
|
||||
derivation_provenance: Record<string, unknown>;
|
||||
actions: Record<string, WorkflowActionDecision>;
|
||||
automation_runtime_available: boolean;
|
||||
automation_runtime_reason?: string | null;
|
||||
};
|
||||
|
||||
export type WorkflowDefinitionPayload = {
|
||||
@@ -56,6 +84,13 @@ export type WorkflowDefinitionPayload = {
|
||||
description?: string | null;
|
||||
graph: WorkflowGraph;
|
||||
metadata: Record<string, unknown>;
|
||||
scope_type: DefinitionScopeType;
|
||||
scope_id?: string | null;
|
||||
definition_kind: DefinitionKind;
|
||||
inherit_to_lower_scopes: boolean;
|
||||
allow_start: boolean;
|
||||
allow_reuse: boolean;
|
||||
allow_automation: boolean;
|
||||
};
|
||||
|
||||
export async function listWorkflowNodeTypes(
|
||||
@@ -99,6 +134,31 @@ export function updateWorkflowDefinition(
|
||||
);
|
||||
}
|
||||
|
||||
export function deriveWorkflowDefinition(
|
||||
settings: ApiSettings,
|
||||
definitionId: string,
|
||||
payload: {
|
||||
key?: string | null;
|
||||
name: string;
|
||||
description?: string | null;
|
||||
source_revision?: number | null;
|
||||
metadata: Record<string, unknown>;
|
||||
scope_type: DefinitionScopeType;
|
||||
scope_id?: string | null;
|
||||
definition_kind: DefinitionKind;
|
||||
inherit_to_lower_scopes: boolean;
|
||||
allow_start: boolean;
|
||||
allow_reuse: boolean;
|
||||
allow_automation: boolean;
|
||||
}
|
||||
): Promise<WorkflowDefinition> {
|
||||
return apiFetch(
|
||||
settings,
|
||||
`/api/v1/workflow/definitions/${encodeURIComponent(definitionId)}/derive`,
|
||||
{ method: "POST", body: JSON.stringify(payload) }
|
||||
);
|
||||
}
|
||||
|
||||
export async function listWorkflowRevisions(
|
||||
settings: ApiSettings,
|
||||
definitionId: string
|
||||
|
||||
Reference in New Issue
Block a user