You've already forked incident-triage
Import UAPF package
Import UAPF package: incident-triage.uapf
This commit is contained in:
111
algorithms/evaluate_dmn.card.yaml
Normal file
111
algorithms/evaluate_dmn.card.yaml
Normal file
@@ -0,0 +1,111 @@
|
||||
kind: uapf.algorithm.card
|
||||
id: algo.incident_triage.evaluate_dmn
|
||||
version: 1.0.0
|
||||
name: DMN decision evaluator
|
||||
intent: |
|
||||
Wraps a DMN 1.3 decision-table evaluation as a callable UAPF-IP
|
||||
capability. The triage BPMN invokes the three DMN tables in this
|
||||
package (priority, ownership, routing) natively via businessRuleTask;
|
||||
this card describes the dmn.evaluate@1 capability for cases where the
|
||||
same evaluation is needed outside the BPMN runtime (operator manual
|
||||
re-evaluation, batch backfill, regression testing).
|
||||
|
||||
Engine-internal DMN evaluation and this capability call return the
|
||||
same output for the same input — that property is the only thing
|
||||
this card asserts.
|
||||
algorithm_kind: rule_table
|
||||
|
||||
io:
|
||||
inputs:
|
||||
- id: package_id
|
||||
type: string
|
||||
documentation: UAPF package id whose dmn/ cornerstone holds the table.
|
||||
- id: decision_id
|
||||
type: string
|
||||
constraints:
|
||||
enum: [priority, ownership, routing]
|
||||
documentation: Which DMN decision to evaluate in this package.
|
||||
- id: inputs
|
||||
type: object
|
||||
documentation: |
|
||||
Decision-input columns as a flat object. For priority:
|
||||
{severity, service_tier, ai_suggested_priority, classification}.
|
||||
For ownership: {classification, host_domain, source}.
|
||||
For routing: {classification, priority, ownership}.
|
||||
outputs:
|
||||
- id: output
|
||||
type: object
|
||||
documentation: |
|
||||
Object with the decision-output columns. priority -> {priority}.
|
||||
ownership -> {ownership}. routing -> {group_slug}.
|
||||
- id: hit_rule_ids
|
||||
type: array
|
||||
documentation: Rule ids that matched (FIRST hit-policy produces 1; ANY may produce N).
|
||||
- id: hit_policy
|
||||
type: string
|
||||
constraints:
|
||||
enum: [FIRST, UNIQUE, ANY, PRIORITY, OUTPUT_ORDER, COLLECT, RULE_ORDER]
|
||||
|
||||
implementation:
|
||||
type: external
|
||||
medium: mcp_tool
|
||||
uri: uapf-ip://capability/dmn.evaluate@1
|
||||
hash: sha256:0000000000000000000000000000000000000000000000000000000000000000
|
||||
runtime:
|
||||
capability: dmn.evaluate@1
|
||||
note: |
|
||||
Host-fulfilled UAPF-IP capability. The OpenITSM host reads the
|
||||
DMN file from the package's dmn/ cornerstone and applies the
|
||||
DMN 1.3 hit-policy semantics. Same decision artifact, same
|
||||
output as the in-process engine evaluation.
|
||||
|
||||
determinism: deterministic
|
||||
side_effects: pure
|
||||
complexity:
|
||||
typical_latency_ms: 5
|
||||
max_latency_ms: 5000
|
||||
failure_mode: |
|
||||
Throws if the requested package_id is not loaded by the runtime, or
|
||||
if the named decision_id is not present in that package's dmn/
|
||||
directory. Triage callers fall back to safe defaults (P4, lvrtc,
|
||||
helpdesk-l1) so the case still completes.
|
||||
|
||||
owners:
|
||||
- type: team
|
||||
id: openitsm-stewards
|
||||
contact: stewards@openitsm.algomation.io
|
||||
|
||||
lifecycle:
|
||||
status: draft
|
||||
|
||||
tests:
|
||||
- name: priority-critical-tier1
|
||||
description: |
|
||||
The priority table should rule P1 for a critical+tier_1 input
|
||||
regardless of AI suggestion.
|
||||
inputs:
|
||||
package_id: "lv.itsm.incident.triage"
|
||||
decision_id: "priority"
|
||||
inputs:
|
||||
severity: "critical"
|
||||
service_tier: "tier_1"
|
||||
ai_suggested_priority: "P3"
|
||||
classification: "network.outage.link_down"
|
||||
expected_outputs:
|
||||
output:
|
||||
priority: "P1"
|
||||
hit_policy: "FIRST"
|
||||
- name: routing-security-to-soc
|
||||
description: |
|
||||
Routing of a security.incident at P1 should land on soc-l2.
|
||||
inputs:
|
||||
package_id: "lv.itsm.incident.triage"
|
||||
decision_id: "routing"
|
||||
inputs:
|
||||
classification: "security.incident"
|
||||
priority: "P1"
|
||||
ownership: "lvrtc"
|
||||
expected_outputs:
|
||||
output:
|
||||
group_slug: "soc-l2"
|
||||
hit_policy: "FIRST"
|
||||
Reference in New Issue
Block a user