You've already forked incident-triage
Import UAPF package
275 lines
18 KiB
XML
275 lines
18 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<bpmn:definitions
|
|
xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
|
|
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
|
|
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
|
|
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
|
|
xmlns:uapf="https://uapf.dev/bpmn-ext/v1"
|
|
xmlns:uapf24="https://uapf.dev/bpmn/v2.4"
|
|
id="Definitions_IncidentTriage"
|
|
targetNamespace="https://uapf.dev/processes/lv.itsm.incident.triage"
|
|
exporter="openitsm-uapf-generator" exporterVersion="1.0.0">
|
|
<bpmn:process id="Process_IncidentTriage" name="Incident Triage" isExecutable="true">
|
|
<bpmn:documentation>
|
|
Linear UAPF process invoked by OpenITSM intake. Each step is a host-fulfilled
|
|
UAPF-IP capability call governed by an Algorithm Card under algorithms/.
|
|
The three dmn.evaluate@1 invocations read priority.dmn / ownership.dmn /
|
|
routing.dmn from the package's dmn/ cornerstone.
|
|
</bpmn:documentation>
|
|
<bpmn:startEvent id="Start" name="Signal received">
|
|
<bpmn:outgoing>Flow_01</bpmn:outgoing>
|
|
</bpmn:startEvent>
|
|
<bpmn:serviceTask id="Task_NormalizeSignal"
|
|
name="Normalize signal"
|
|
uapf:capability="intake.normalize@1"
|
|
uapf24:algorithmCardRef="algo.incident_triage.normalize_signal">
|
|
<bpmn:documentation>Reads the freshly-received Signal row and folds the source-specific payload (Zabbix / IMAP / Jira / manual) into a uniform shape downstream cards expect.</bpmn:documentation>
|
|
<bpmn:incoming>Flow_01</bpmn:incoming>
|
|
<bpmn:outgoing>Flow_02</bpmn:outgoing>
|
|
<bpmn:ioSpecification>
|
|
<bpmn:dataInput id="Task_NormalizeSignal_in_signal_id" name="signal_id : string"/>
|
|
<bpmn:dataOutput id="Task_NormalizeSignal_out_normalized_payload" name="normalized_payload : object"/>
|
|
<bpmn:dataOutput id="Task_NormalizeSignal_out_dedupe_hash" name="dedupe_hash : string"/>
|
|
<bpmn:dataOutput id="Task_NormalizeSignal_out_source_kind" name="source_kind : string"/>
|
|
<bpmn:inputSet>
|
|
<bpmn:dataInputRefs>Task_NormalizeSignal_in_signal_id</bpmn:dataInputRefs>
|
|
</bpmn:inputSet>
|
|
<bpmn:outputSet>
|
|
<bpmn:dataOutputRefs>Task_NormalizeSignal_out_normalized_payload</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_NormalizeSignal_out_dedupe_hash</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_NormalizeSignal_out_source_kind</bpmn:dataOutputRefs>
|
|
</bpmn:outputSet>
|
|
</bpmn:ioSpecification>
|
|
</bpmn:serviceTask>
|
|
<bpmn:serviceTask id="Task_ClassifyIncident"
|
|
name="Classify incident"
|
|
uapf:capability="ai.classify@1"
|
|
uapf24:algorithmCardRef="algo.incident_triage.classify_incident">
|
|
<bpmn:documentation>Picks one taxonomy code from a closed list. LLM-backed at runtime with deterministic regex fallback.</bpmn:documentation>
|
|
<bpmn:incoming>Flow_02</bpmn:incoming>
|
|
<bpmn:outgoing>Flow_03</bpmn:outgoing>
|
|
<bpmn:ioSpecification>
|
|
<bpmn:dataInput id="Task_ClassifyIncident_in_payload" name="payload : object"/>
|
|
<bpmn:dataInput id="Task_ClassifyIncident_in_text" name="text : string"/>
|
|
<bpmn:dataOutput id="Task_ClassifyIncident_out_taxonomy_code" name="taxonomy_code : string"/>
|
|
<bpmn:dataOutput id="Task_ClassifyIncident_out_confidence" name="confidence : number"/>
|
|
<bpmn:dataOutput id="Task_ClassifyIncident_out_reasoning" name="reasoning : string"/>
|
|
<bpmn:dataOutput id="Task_ClassifyIncident_out_label_hint" name="label_hint : string"/>
|
|
<bpmn:inputSet>
|
|
<bpmn:dataInputRefs>Task_ClassifyIncident_in_payload</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_ClassifyIncident_in_text</bpmn:dataInputRefs>
|
|
</bpmn:inputSet>
|
|
<bpmn:outputSet>
|
|
<bpmn:dataOutputRefs>Task_ClassifyIncident_out_taxonomy_code</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_ClassifyIncident_out_confidence</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_ClassifyIncident_out_reasoning</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_ClassifyIncident_out_label_hint</bpmn:dataOutputRefs>
|
|
</bpmn:outputSet>
|
|
</bpmn:ioSpecification>
|
|
</bpmn:serviceTask>
|
|
<bpmn:serviceTask id="Task_SuggestPriority"
|
|
name="Suggest priority"
|
|
uapf:capability="ai.suggest_priority@1"
|
|
uapf24:algorithmCardRef="algo.incident_triage.suggest_priority">
|
|
<bpmn:documentation>Soft P1..P4 suggestion from severity x service_tier x classification. The downstream DMN makes the binding decision.</bpmn:documentation>
|
|
<bpmn:incoming>Flow_03</bpmn:incoming>
|
|
<bpmn:outgoing>Flow_04</bpmn:outgoing>
|
|
<bpmn:ioSpecification>
|
|
<bpmn:dataInput id="Task_SuggestPriority_in_severity" name="severity : string"/>
|
|
<bpmn:dataInput id="Task_SuggestPriority_in_service_tier" name="service_tier : string"/>
|
|
<bpmn:dataInput id="Task_SuggestPriority_in_classification" name="classification : string"/>
|
|
<bpmn:dataOutput id="Task_SuggestPriority_out_priority" name="priority : string"/>
|
|
<bpmn:dataOutput id="Task_SuggestPriority_out_reason" name="reason : string"/>
|
|
<bpmn:inputSet>
|
|
<bpmn:dataInputRefs>Task_SuggestPriority_in_severity</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_SuggestPriority_in_service_tier</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_SuggestPriority_in_classification</bpmn:dataInputRefs>
|
|
</bpmn:inputSet>
|
|
<bpmn:outputSet>
|
|
<bpmn:dataOutputRefs>Task_SuggestPriority_out_priority</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_SuggestPriority_out_reason</bpmn:dataOutputRefs>
|
|
</bpmn:outputSet>
|
|
</bpmn:ioSpecification>
|
|
</bpmn:serviceTask>
|
|
<bpmn:serviceTask id="Task_EvaluatePriorityDmn"
|
|
name="Evaluate priority DMN"
|
|
uapf:capability="dmn.evaluate@1"
|
|
uapf24:algorithmCardRef="algo.incident_triage.evaluate_dmn">
|
|
<bpmn:documentation>Binding priority decision: FIRST-hit DMN over severity, service_tier, ai_suggested_priority, classification.</bpmn:documentation>
|
|
<bpmn:incoming>Flow_04</bpmn:incoming>
|
|
<bpmn:outgoing>Flow_05</bpmn:outgoing>
|
|
<bpmn:ioSpecification>
|
|
<bpmn:dataInput id="Task_EvaluatePriorityDmn_in_package_id" name="package_id : string"/>
|
|
<bpmn:dataInput id="Task_EvaluatePriorityDmn_in_decision_id" name="decision_id : string"/>
|
|
<bpmn:dataInput id="Task_EvaluatePriorityDmn_in_inputs" name="inputs : object"/>
|
|
<bpmn:dataOutput id="Task_EvaluatePriorityDmn_out_output" name="output : object"/>
|
|
<bpmn:dataOutput id="Task_EvaluatePriorityDmn_out_hit_rule_ids" name="hit_rule_ids : array"/>
|
|
<bpmn:dataOutput id="Task_EvaluatePriorityDmn_out_hit_policy" name="hit_policy : string"/>
|
|
<bpmn:inputSet>
|
|
<bpmn:dataInputRefs>Task_EvaluatePriorityDmn_in_package_id</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_EvaluatePriorityDmn_in_decision_id</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_EvaluatePriorityDmn_in_inputs</bpmn:dataInputRefs>
|
|
</bpmn:inputSet>
|
|
<bpmn:outputSet>
|
|
<bpmn:dataOutputRefs>Task_EvaluatePriorityDmn_out_output</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_EvaluatePriorityDmn_out_hit_rule_ids</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_EvaluatePriorityDmn_out_hit_policy</bpmn:dataOutputRefs>
|
|
</bpmn:outputSet>
|
|
</bpmn:ioSpecification>
|
|
</bpmn:serviceTask>
|
|
<bpmn:serviceTask id="Task_EvaluateOwnershipDmn"
|
|
name="Evaluate ownership DMN"
|
|
uapf:capability="dmn.evaluate@1"
|
|
uapf24:algorithmCardRef="algo.incident_triage.evaluate_dmn">
|
|
<bpmn:documentation>Binding ownership decision: stay inside LVRTC or hand off externally based on classification + host_domain + source.</bpmn:documentation>
|
|
<bpmn:incoming>Flow_05</bpmn:incoming>
|
|
<bpmn:outgoing>Flow_06</bpmn:outgoing>
|
|
<bpmn:ioSpecification>
|
|
<bpmn:dataInput id="Task_EvaluateOwnershipDmn_in_package_id" name="package_id : string"/>
|
|
<bpmn:dataInput id="Task_EvaluateOwnershipDmn_in_decision_id" name="decision_id : string"/>
|
|
<bpmn:dataInput id="Task_EvaluateOwnershipDmn_in_inputs" name="inputs : object"/>
|
|
<bpmn:dataOutput id="Task_EvaluateOwnershipDmn_out_output" name="output : object"/>
|
|
<bpmn:dataOutput id="Task_EvaluateOwnershipDmn_out_hit_rule_ids" name="hit_rule_ids : array"/>
|
|
<bpmn:dataOutput id="Task_EvaluateOwnershipDmn_out_hit_policy" name="hit_policy : string"/>
|
|
<bpmn:inputSet>
|
|
<bpmn:dataInputRefs>Task_EvaluateOwnershipDmn_in_package_id</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_EvaluateOwnershipDmn_in_decision_id</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_EvaluateOwnershipDmn_in_inputs</bpmn:dataInputRefs>
|
|
</bpmn:inputSet>
|
|
<bpmn:outputSet>
|
|
<bpmn:dataOutputRefs>Task_EvaluateOwnershipDmn_out_output</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_EvaluateOwnershipDmn_out_hit_rule_ids</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_EvaluateOwnershipDmn_out_hit_policy</bpmn:dataOutputRefs>
|
|
</bpmn:outputSet>
|
|
</bpmn:ioSpecification>
|
|
</bpmn:serviceTask>
|
|
<bpmn:serviceTask id="Task_EvaluateRoutingDmn"
|
|
name="Evaluate routing DMN"
|
|
uapf:capability="dmn.evaluate@1"
|
|
uapf24:algorithmCardRef="algo.incident_triage.evaluate_dmn">
|
|
<bpmn:documentation>Picks the expert group (helpdesk-l1, noc-l1/l2, soc-l2, facility-l2, platform-l2, external-handoff) from classification + priority + ownership.</bpmn:documentation>
|
|
<bpmn:incoming>Flow_06</bpmn:incoming>
|
|
<bpmn:outgoing>Flow_07</bpmn:outgoing>
|
|
<bpmn:ioSpecification>
|
|
<bpmn:dataInput id="Task_EvaluateRoutingDmn_in_package_id" name="package_id : string"/>
|
|
<bpmn:dataInput id="Task_EvaluateRoutingDmn_in_decision_id" name="decision_id : string"/>
|
|
<bpmn:dataInput id="Task_EvaluateRoutingDmn_in_inputs" name="inputs : object"/>
|
|
<bpmn:dataOutput id="Task_EvaluateRoutingDmn_out_output" name="output : object"/>
|
|
<bpmn:dataOutput id="Task_EvaluateRoutingDmn_out_hit_rule_ids" name="hit_rule_ids : array"/>
|
|
<bpmn:dataOutput id="Task_EvaluateRoutingDmn_out_hit_policy" name="hit_policy : string"/>
|
|
<bpmn:inputSet>
|
|
<bpmn:dataInputRefs>Task_EvaluateRoutingDmn_in_package_id</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_EvaluateRoutingDmn_in_decision_id</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_EvaluateRoutingDmn_in_inputs</bpmn:dataInputRefs>
|
|
</bpmn:inputSet>
|
|
<bpmn:outputSet>
|
|
<bpmn:dataOutputRefs>Task_EvaluateRoutingDmn_out_output</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_EvaluateRoutingDmn_out_hit_rule_ids</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_EvaluateRoutingDmn_out_hit_policy</bpmn:dataOutputRefs>
|
|
</bpmn:outputSet>
|
|
</bpmn:ioSpecification>
|
|
</bpmn:serviceTask>
|
|
<bpmn:serviceTask id="Task_UpdateIncident"
|
|
name="Update incident state"
|
|
uapf:capability="incident.update@1"
|
|
uapf24:algorithmCardRef="algo.incident_triage.update_incident">
|
|
<bpmn:documentation>Applies the decided priority + ownership + assigned_group_id and transitions open -> triaged. All mutations in one DB transaction.</bpmn:documentation>
|
|
<bpmn:incoming>Flow_07</bpmn:incoming>
|
|
<bpmn:outgoing>Flow_08</bpmn:outgoing>
|
|
<bpmn:ioSpecification>
|
|
<bpmn:dataInput id="Task_UpdateIncident_in_case_id" name="case_id : string"/>
|
|
<bpmn:dataInput id="Task_UpdateIncident_in_patch" name="patch : object"/>
|
|
<bpmn:dataInput id="Task_UpdateIncident_in_status" name="status : string"/>
|
|
<bpmn:dataInput id="Task_UpdateIncident_in_reason" name="reason : string"/>
|
|
<bpmn:dataOutput id="Task_UpdateIncident_out_case_id" name="case_id : string"/>
|
|
<bpmn:dataOutput id="Task_UpdateIncident_out_new_status" name="new_status : string"/>
|
|
<bpmn:dataOutput id="Task_UpdateIncident_out_success" name="success : boolean"/>
|
|
<bpmn:dataOutput id="Task_UpdateIncident_out_event_ids" name="event_ids : array"/>
|
|
<bpmn:inputSet>
|
|
<bpmn:dataInputRefs>Task_UpdateIncident_in_case_id</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_UpdateIncident_in_patch</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_UpdateIncident_in_status</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_UpdateIncident_in_reason</bpmn:dataInputRefs>
|
|
</bpmn:inputSet>
|
|
<bpmn:outputSet>
|
|
<bpmn:dataOutputRefs>Task_UpdateIncident_out_case_id</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_UpdateIncident_out_new_status</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_UpdateIncident_out_success</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_UpdateIncident_out_event_ids</bpmn:dataOutputRefs>
|
|
</bpmn:outputSet>
|
|
</bpmn:ioSpecification>
|
|
</bpmn:serviceTask>
|
|
<bpmn:serviceTask id="Task_DraftResponse"
|
|
name="Draft customer response"
|
|
uapf:capability="ai.draft_response@1"
|
|
uapf24:algorithmCardRef="algo.incident_triage.draft_response">
|
|
<bpmn:documentation>Drafts a parallel Latvian + English customer notification. Produces an AIDecision row with requires_human_approval=true. Operator must approve before any outbound transport adapter runs.</bpmn:documentation>
|
|
<bpmn:incoming>Flow_08</bpmn:incoming>
|
|
<bpmn:outgoing>Flow_09</bpmn:outgoing>
|
|
<bpmn:ioSpecification>
|
|
<bpmn:dataInput id="Task_DraftResponse_in_case_id" name="case_id : string"/>
|
|
<bpmn:dataInput id="Task_DraftResponse_in_locale" name="locale : string"/>
|
|
<bpmn:dataInput id="Task_DraftResponse_in_what_happened" name="what_happened : string"/>
|
|
<bpmn:dataInput id="Task_DraftResponse_in_eta_minutes" name="eta_minutes : integer"/>
|
|
<bpmn:dataOutput id="Task_DraftResponse_out_subject_lv" name="subject_lv : string"/>
|
|
<bpmn:dataOutput id="Task_DraftResponse_out_subject_en" name="subject_en : string"/>
|
|
<bpmn:dataOutput id="Task_DraftResponse_out_body_lv" name="body_lv : string"/>
|
|
<bpmn:dataOutput id="Task_DraftResponse_out_body_en" name="body_en : string"/>
|
|
<bpmn:dataOutput id="Task_DraftResponse_out_locale" name="locale : string"/>
|
|
<bpmn:inputSet>
|
|
<bpmn:dataInputRefs>Task_DraftResponse_in_case_id</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_DraftResponse_in_locale</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_DraftResponse_in_what_happened</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_DraftResponse_in_eta_minutes</bpmn:dataInputRefs>
|
|
</bpmn:inputSet>
|
|
<bpmn:outputSet>
|
|
<bpmn:dataOutputRefs>Task_DraftResponse_out_subject_lv</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_DraftResponse_out_subject_en</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_DraftResponse_out_body_lv</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_DraftResponse_out_body_en</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_DraftResponse_out_locale</bpmn:dataOutputRefs>
|
|
</bpmn:outputSet>
|
|
</bpmn:ioSpecification>
|
|
</bpmn:serviceTask>
|
|
<bpmn:serviceTask id="Task_EmitEvent"
|
|
name="Emit routed event"
|
|
uapf:capability="event.emit@1"
|
|
uapf24:algorithmCardRef="algo.incident_triage.emit_event">
|
|
<bpmn:documentation>Emits the closing 'routed' CaseEvent. Payload echoes classification, priority, ownership, group_slug for the timeline.</bpmn:documentation>
|
|
<bpmn:incoming>Flow_09</bpmn:incoming>
|
|
<bpmn:outgoing>Flow_10</bpmn:outgoing>
|
|
<bpmn:ioSpecification>
|
|
<bpmn:dataInput id="Task_EmitEvent_in_case_id" name="case_id : string"/>
|
|
<bpmn:dataInput id="Task_EmitEvent_in_type" name="type : string"/>
|
|
<bpmn:dataInput id="Task_EmitEvent_in_payload" name="payload : object"/>
|
|
<bpmn:dataInput id="Task_EmitEvent_in_actor_label" name="actor_label : string"/>
|
|
<bpmn:dataOutput id="Task_EmitEvent_out_event_id" name="event_id : string"/>
|
|
<bpmn:dataOutput id="Task_EmitEvent_out_recorded_at" name="recorded_at : string"/>
|
|
<bpmn:inputSet>
|
|
<bpmn:dataInputRefs>Task_EmitEvent_in_case_id</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_EmitEvent_in_type</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_EmitEvent_in_payload</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>Task_EmitEvent_in_actor_label</bpmn:dataInputRefs>
|
|
</bpmn:inputSet>
|
|
<bpmn:outputSet>
|
|
<bpmn:dataOutputRefs>Task_EmitEvent_out_event_id</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>Task_EmitEvent_out_recorded_at</bpmn:dataOutputRefs>
|
|
</bpmn:outputSet>
|
|
</bpmn:ioSpecification>
|
|
</bpmn:serviceTask>
|
|
<bpmn:endEvent id="End" name="Triage complete">
|
|
<bpmn:incoming>Flow_10</bpmn:incoming>
|
|
</bpmn:endEvent>
|
|
<bpmn:sequenceFlow id="Flow_01" sourceRef="Start" targetRef="Task_NormalizeSignal"/>
|
|
<bpmn:sequenceFlow id="Flow_02" sourceRef="Task_NormalizeSignal" targetRef="Task_ClassifyIncident"/>
|
|
<bpmn:sequenceFlow id="Flow_03" sourceRef="Task_ClassifyIncident" targetRef="Task_SuggestPriority"/>
|
|
<bpmn:sequenceFlow id="Flow_04" sourceRef="Task_SuggestPriority" targetRef="Task_EvaluatePriorityDmn"/>
|
|
<bpmn:sequenceFlow id="Flow_05" sourceRef="Task_EvaluatePriorityDmn" targetRef="Task_EvaluateOwnershipDmn"/>
|
|
<bpmn:sequenceFlow id="Flow_06" sourceRef="Task_EvaluateOwnershipDmn" targetRef="Task_EvaluateRoutingDmn"/>
|
|
<bpmn:sequenceFlow id="Flow_07" sourceRef="Task_EvaluateRoutingDmn" targetRef="Task_UpdateIncident"/>
|
|
<bpmn:sequenceFlow id="Flow_08" sourceRef="Task_UpdateIncident" targetRef="Task_DraftResponse"/>
|
|
<bpmn:sequenceFlow id="Flow_09" sourceRef="Task_DraftResponse" targetRef="Task_EmitEvent"/>
|
|
<bpmn:sequenceFlow id="Flow_10" sourceRef="Task_EmitEvent" targetRef="End"/>
|
|
</bpmn:process>
|
|
</bpmn:definitions>
|