You've already forked dokumenta-semantiska-analize
Import UAPF package
UAPF v2.4.0 reverses the v2.3.0 decision to place algorithm card references on resource targets. The card belongs on the BPMN task itself, where it is visible as a first-class process element and its inputs/outputs render as visible data objects on the diagram. Changes from v3.0.0: - bpmn/semantic-document-analysis.bpmn: each of 3 service tasks now carries xmlns:uapf24=https://uapf.dev/bpmn/v2.4 + the uapf24:algorithmCardRef attribute pointing at the governing card, plus a <bpmn:ioSpecification> synthesised from the card's io block so inputs/outputs render as visible data objects - resources/mappings.yaml: algorithm_card dropped from each of the 3 targets (they go back to being just dispatch endpoints) - uapf.yaml + manifest.json: version 3.0.0 -> 3.1.0 - README rewritten with v3.1.0 delta + audit-question table Cards themselves are unchanged. DMN files are unchanged.
207 lines
10 KiB
XML
207 lines
10 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<bpmn:definitions
|
|
xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
|
|
xmlns:uapf="https://uapf.dev/bpmn-ext/v1"
|
|
xmlns:uapf24="https://uapf.dev/bpmn/v2.4"
|
|
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"
|
|
id="Definitions_SemanticAnalysis"
|
|
targetNamespace="https://uapf.dev/processes/semantic-document-analysis">
|
|
|
|
<bpmn:process id="Process_SemanticDocumentAnalysis"
|
|
name="Semantic document analysis"
|
|
isExecutable="true">
|
|
|
|
<bpmn:startEvent id="Start" name="Document text received"/>
|
|
|
|
<bpmn:serviceTask id="Task_DetectRedactPii"
|
|
name="Detect and redact PII"
|
|
uapf:capability="ai.redact@1"
|
|
uapf24:algorithmCardRef="algo.semantic_document_analysis.pii_redactor">
|
|
<bpmn:documentation>
|
|
Calls ai.redact@1 over the source text. Governed by Algorithm
|
|
Card algo.semantic_document_analysis.pii_redactor (see
|
|
algorithms/pii_redactor.card.yaml). Beyond masking, the host
|
|
runs the four Latvian PII regex detectors (personas kods, IBAN,
|
|
e-mail, phone) and returns the deterministic signal set the risk
|
|
decision consumes.
|
|
</bpmn:documentation>
|
|
<bpmn:ioSpecification>
|
|
<bpmn:dataInput id="content" name="content : string"/>
|
|
<bpmn:dataOutput id="redacted_content" name="redacted_content : string"/>
|
|
<bpmn:dataOutput id="detected_entity_types" name="detected_entity_types : array"/>
|
|
<bpmn:dataOutput id="personas_koda_present" name="personas_koda_present : boolean"/>
|
|
<bpmn:dataOutput id="financial_data_present" name="financial_data_present : boolean"/>
|
|
<bpmn:dataOutput id="contact_data_present" name="contact_data_present : boolean"/>
|
|
<bpmn:dataOutput id="pii_category_count" name="pii_category_count : integer"/>
|
|
<bpmn:inputSet>
|
|
<bpmn:dataInputRefs>content</bpmn:dataInputRefs>
|
|
</bpmn:inputSet>
|
|
<bpmn:outputSet>
|
|
<bpmn:dataOutputRefs>redacted_content</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>detected_entity_types</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>personas_koda_present</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>financial_data_present</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>contact_data_present</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>pii_category_count</bpmn:dataOutputRefs>
|
|
</bpmn:outputSet>
|
|
</bpmn:ioSpecification>
|
|
</bpmn:serviceTask>
|
|
|
|
<bpmn:businessRuleTask id="Decision_AssessRisk"
|
|
name="Assess personal-data risk"
|
|
uapf:decision="assess-personal-data-risk">
|
|
<bpmn:documentation>
|
|
DMN dmn/assess-personal-data-risk.dmn. Maps the PII signal set to
|
|
personalDataRisk (NONE | LOW | MEDIUM | HIGH).
|
|
</bpmn:documentation>
|
|
</bpmn:businessRuleTask>
|
|
|
|
<bpmn:businessRuleTask id="Decision_GdprRoute"
|
|
name="Decide GDPR processing route"
|
|
uapf:decision="gdpr-processing-route">
|
|
<bpmn:documentation>
|
|
DMN dmn/gdpr-processing-route.dmn. From personalDataRisk and
|
|
allowCentralization decides processingRoute (CENTRAL | LOCAL),
|
|
anonymizationRequired and redactionLevel.
|
|
</bpmn:documentation>
|
|
</bpmn:businessRuleTask>
|
|
|
|
<bpmn:serviceTask id="Task_ExtractSemantics"
|
|
name="Extract semantic metadata"
|
|
uapf:capability="ai.extract@1"
|
|
uapf:schemaRef="resources/schemas/vdvc-semantic-summary.schema.json"
|
|
uapf24:algorithmCardRef="algo.semantic_document_analysis.vdvc_semantic_extractor">
|
|
<bpmn:documentation>
|
|
Calls ai.extract@1 on redactedContent with the VDVC v1.1 output
|
|
schema. Governed by Algorithm Card
|
|
algo.semantic_document_analysis.vdvc_semantic_extractor (see
|
|
algorithms/vdvc_semantic_extractor.card.yaml). EU AI Act
|
|
Annex III high-risk; human oversight is mandatory and is
|
|
enforced downstream by the human-validation-gate DMN.
|
|
</bpmn:documentation>
|
|
<bpmn:ioSpecification>
|
|
<bpmn:dataInput id="redacted_content" name="redacted_content : string"/>
|
|
<bpmn:dataInput id="schema_ref" name="schema_ref : string"/>
|
|
<bpmn:dataOutput id="semantic_summary" name="semantic_summary : object"/>
|
|
<bpmn:dataOutput id="sensitivity_control" name="sensitivity_control : object"/>
|
|
<bpmn:dataOutput id="ai_confidence_score" name="ai_confidence_score : probability"/>
|
|
<bpmn:dataOutput id="output_pii_error_count" name="output_pii_error_count : integer"/>
|
|
<bpmn:inputSet>
|
|
<bpmn:dataInputRefs>redacted_content</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>schema_ref</bpmn:dataInputRefs>
|
|
</bpmn:inputSet>
|
|
<bpmn:outputSet>
|
|
<bpmn:dataOutputRefs>semantic_summary</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>sensitivity_control</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>ai_confidence_score</bpmn:dataOutputRefs>
|
|
<bpmn:dataOutputRefs>output_pii_error_count</bpmn:dataOutputRefs>
|
|
</bpmn:outputSet>
|
|
</bpmn:ioSpecification>
|
|
</bpmn:serviceTask>
|
|
|
|
<bpmn:businessRuleTask id="Decision_ValidationGate"
|
|
name="Determine human-validation status"
|
|
uapf:decision="human-validation-gate">
|
|
<bpmn:documentation>
|
|
DMN dmn/human-validation-gate.dmn. From output_pii_error_count,
|
|
ai_confidence_score and personalDataRisk decides
|
|
humanValidationStatus (REJECTED | PENDING_REVIEW | APPROVED_AUTO).
|
|
</bpmn:documentation>
|
|
</bpmn:businessRuleTask>
|
|
|
|
<bpmn:serviceTask id="Task_EmitResult"
|
|
name="Emit semantic-analysis-completed event"
|
|
uapf:capability="event.emit@1"
|
|
uapf:eventType="document.semantic-analysis.completed.v1"
|
|
uapf24:algorithmCardRef="algo.semantic_document_analysis.completion_event_emitter">
|
|
<bpmn:documentation>
|
|
Calls event.emit@1 to publish a CloudEvent. Governed by
|
|
Algorithm Card algo.semantic_document_analysis.completion_event_emitter
|
|
(see algorithms/completion_event_emitter.card.yaml).
|
|
</bpmn:documentation>
|
|
<bpmn:ioSpecification>
|
|
<bpmn:dataInput id="event_type" name="event_type : string"/>
|
|
<bpmn:dataInput id="payload" name="payload : object"/>
|
|
<bpmn:dataOutput id="published" name="published : boolean"/>
|
|
<bpmn:inputSet>
|
|
<bpmn:dataInputRefs>event_type</bpmn:dataInputRefs>
|
|
<bpmn:dataInputRefs>payload</bpmn:dataInputRefs>
|
|
</bpmn:inputSet>
|
|
<bpmn:outputSet>
|
|
<bpmn:dataOutputRefs>published</bpmn:dataOutputRefs>
|
|
</bpmn:outputSet>
|
|
</bpmn:ioSpecification>
|
|
</bpmn:serviceTask>
|
|
|
|
<bpmn:endEvent id="End" name="Semantic analysis complete"/>
|
|
|
|
<bpmn:sequenceFlow id="f1" sourceRef="Start" targetRef="Task_DetectRedactPii"/>
|
|
<bpmn:sequenceFlow id="f2" sourceRef="Task_DetectRedactPii" targetRef="Decision_AssessRisk"/>
|
|
<bpmn:sequenceFlow id="f3" sourceRef="Decision_AssessRisk" targetRef="Decision_GdprRoute"/>
|
|
<bpmn:sequenceFlow id="f4" sourceRef="Decision_GdprRoute" targetRef="Task_ExtractSemantics"/>
|
|
<bpmn:sequenceFlow id="f5" sourceRef="Task_ExtractSemantics" targetRef="Decision_ValidationGate"/>
|
|
<bpmn:sequenceFlow id="f6" sourceRef="Decision_ValidationGate" targetRef="Task_EmitResult"/>
|
|
<bpmn:sequenceFlow id="f7" sourceRef="Task_EmitResult" targetRef="End"/>
|
|
|
|
</bpmn:process>
|
|
|
|
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_SemanticDocumentAnalysis">
|
|
<bpmndi:BPMNShape id="Start_di" bpmnElement="Start">
|
|
<dc:Bounds x="152" y="102" width="36" height="36"/>
|
|
</bpmndi:BPMNShape>
|
|
<bpmndi:BPMNShape id="Task_DetectRedactPii_di" bpmnElement="Task_DetectRedactPii">
|
|
<dc:Bounds x="240" y="90" width="110" height="80"/>
|
|
</bpmndi:BPMNShape>
|
|
<bpmndi:BPMNShape id="Decision_AssessRisk_di" bpmnElement="Decision_AssessRisk">
|
|
<dc:Bounds x="410" y="90" width="110" height="80"/>
|
|
</bpmndi:BPMNShape>
|
|
<bpmndi:BPMNShape id="Decision_GdprRoute_di" bpmnElement="Decision_GdprRoute">
|
|
<dc:Bounds x="580" y="90" width="120" height="80"/>
|
|
</bpmndi:BPMNShape>
|
|
<bpmndi:BPMNShape id="Task_ExtractSemantics_di" bpmnElement="Task_ExtractSemantics">
|
|
<dc:Bounds x="760" y="90" width="110" height="80"/>
|
|
</bpmndi:BPMNShape>
|
|
<bpmndi:BPMNShape id="Decision_ValidationGate_di" bpmnElement="Decision_ValidationGate">
|
|
<dc:Bounds x="930" y="90" width="120" height="80"/>
|
|
</bpmndi:BPMNShape>
|
|
<bpmndi:BPMNShape id="Task_EmitResult_di" bpmnElement="Task_EmitResult">
|
|
<dc:Bounds x="1110" y="90" width="110" height="80"/>
|
|
</bpmndi:BPMNShape>
|
|
<bpmndi:BPMNShape id="End_di" bpmnElement="End">
|
|
<dc:Bounds x="1290" y="102" width="36" height="36"/>
|
|
</bpmndi:BPMNShape>
|
|
<bpmndi:BPMNEdge id="f1_di" bpmnElement="f1">
|
|
<di:waypoint x="188" y="120"/>
|
|
<di:waypoint x="240" y="120"/>
|
|
</bpmndi:BPMNEdge>
|
|
<bpmndi:BPMNEdge id="f2_di" bpmnElement="f2">
|
|
<di:waypoint x="350" y="120"/>
|
|
<di:waypoint x="410" y="120"/>
|
|
</bpmndi:BPMNEdge>
|
|
<bpmndi:BPMNEdge id="f3_di" bpmnElement="f3">
|
|
<di:waypoint x="520" y="120"/>
|
|
<di:waypoint x="580" y="120"/>
|
|
</bpmndi:BPMNEdge>
|
|
<bpmndi:BPMNEdge id="f4_di" bpmnElement="f4">
|
|
<di:waypoint x="700" y="120"/>
|
|
<di:waypoint x="760" y="120"/>
|
|
</bpmndi:BPMNEdge>
|
|
<bpmndi:BPMNEdge id="f5_di" bpmnElement="f5">
|
|
<di:waypoint x="870" y="120"/>
|
|
<di:waypoint x="930" y="120"/>
|
|
</bpmndi:BPMNEdge>
|
|
<bpmndi:BPMNEdge id="f6_di" bpmnElement="f6">
|
|
<di:waypoint x="1050" y="120"/>
|
|
<di:waypoint x="1110" y="120"/>
|
|
</bpmndi:BPMNEdge>
|
|
<bpmndi:BPMNEdge id="f7_di" bpmnElement="f7">
|
|
<di:waypoint x="1220" y="120"/>
|
|
<di:waypoint x="1290" y="120"/>
|
|
</bpmndi:BPMNEdge>
|
|
</bpmndi:BPMNPlane>
|
|
</bpmndi:BPMNDiagram>
|
|
</bpmn:definitions>
|