You've already forked uapf-validation-ready
Import UAPF package
Initial template import
This commit is contained in:
7
.gitea/template
Normal file
7
.gitea/template
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Expand placeholders across docs, manifests, and workflow templates
|
||||||
|
README.md
|
||||||
|
enterprise/**
|
||||||
|
packages/**
|
||||||
|
.github/**
|
||||||
|
.gitea/**
|
||||||
|
tools/**
|
||||||
13
.gitea/workflows/validate.yml
Normal file
13
.gitea/workflows/validate.yml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
name: Validate Process Assets
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
validate:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Run validation
|
||||||
|
run: tools/validate.sh
|
||||||
14
.github/workflows/validate.yml
vendored
Normal file
14
.github/workflows/validate.yml
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
name: Validate Process Assets
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
validate:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Run validation
|
||||||
|
run: tools/validate.sh
|
||||||
52
README.md
Normal file
52
README.md
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
# UAPF Validation Ready Template
|
||||||
|
|
||||||
|
This template provides a complete Level-4 process package with validation schema support.
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
uapf-validation-ready/
|
||||||
|
├── enterprise/
|
||||||
|
│ └── enterprise.yaml # Enterprise-level index
|
||||||
|
├── demo-process/ # Example process package
|
||||||
|
│ ├── uapf.yaml # Package configuration
|
||||||
|
│ ├── bpmn/ # BPMN process models
|
||||||
|
│ │ └── process.bpmn.xml # Document review workflow
|
||||||
|
│ ├── dmn/ # DMN decision models
|
||||||
|
│ │ └── decisions.dmn.xml # Approval requirements
|
||||||
|
│ ├── cmmn/ # CMMN case models
|
||||||
|
│ │ └── case.cmmn.xml # Exception handling
|
||||||
|
│ ├── resources/ # Resource mappings
|
||||||
|
│ │ └── mappings.yaml
|
||||||
|
│ ├── metadata/ # Process metadata
|
||||||
|
│ │ ├── ownership.yaml
|
||||||
|
│ │ └── lifecycle.yaml
|
||||||
|
│ └── docs/ # Documentation
|
||||||
|
│ └── notes.md
|
||||||
|
└── validation/ # Validation schemas
|
||||||
|
└── schemas/
|
||||||
|
└── README.md
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Process: Document Review & Approval
|
||||||
|
|
||||||
|
This template demonstrates a document review and approval process with:
|
||||||
|
|
||||||
|
- **BPMN Process**: Submit → Validate Format → Review → Approve/Reject → Publish
|
||||||
|
- **DMN Decision**: Dynamic approval routing based on document type and value
|
||||||
|
- **CMMN Case**: Exception handling for review issues
|
||||||
|
- **Validation**: Schema-based validation for all artifacts
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- ✅ Complete Level-4 process package
|
||||||
|
- ✅ Validation schema support
|
||||||
|
- ✅ Multiple approval levels
|
||||||
|
- ✅ Exception handling
|
||||||
|
- ✅ Template variable support
|
||||||
|
- ✅ Enterprise indexing
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
This template is used when creating new ProcessGit repositories that require validation-ready processes.
|
||||||
309
demo-process/bpmn/process.bpmn.xml
Normal file
309
demo-process/bpmn/process.bpmn.xml
Normal file
@@ -0,0 +1,309 @@
|
|||||||
|
<?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:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
id="Definitions_DocumentReview"
|
||||||
|
targetNamespace="http://processgit.io/bpmn/document-review">
|
||||||
|
|
||||||
|
<bpmn:process id="DocumentReviewApproval" name="Document Review and Approval Process" isExecutable="true">
|
||||||
|
|
||||||
|
<!-- Start Event -->
|
||||||
|
<bpmn:startEvent id="StartEvent_1" name="Document Submitted">
|
||||||
|
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
||||||
|
</bpmn:startEvent>
|
||||||
|
|
||||||
|
<!-- Submit Document Task -->
|
||||||
|
<bpmn:userTask id="Task_SubmitDocument" name="Submit Document">
|
||||||
|
<bpmn:incoming>Flow_1</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_2</bpmn:outgoing>
|
||||||
|
</bpmn:userTask>
|
||||||
|
|
||||||
|
<!-- Validate Format Task (Automated) -->
|
||||||
|
<bpmn:serviceTask id="Task_ValidateFormat" name="Validate Format">
|
||||||
|
<bpmn:incoming>Flow_2</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_3</bpmn:outgoing>
|
||||||
|
</bpmn:serviceTask>
|
||||||
|
|
||||||
|
<!-- Exclusive Gateway - Validation Result -->
|
||||||
|
<bpmn:exclusiveGateway id="Gateway_ValidationCheck" name="Format Valid?">
|
||||||
|
<bpmn:incoming>Flow_3</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_Valid</bpmn:outgoing>
|
||||||
|
<bpmn:outgoing>Flow_Invalid</bpmn:outgoing>
|
||||||
|
</bpmn:exclusiveGateway>
|
||||||
|
|
||||||
|
<!-- Reject Document Task (Invalid Format) -->
|
||||||
|
<bpmn:userTask id="Task_RejectInvalidFormat" name="Reject Document - Invalid Format">
|
||||||
|
<bpmn:incoming>Flow_Invalid</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_Rejected</bpmn:outgoing>
|
||||||
|
</bpmn:userTask>
|
||||||
|
|
||||||
|
<!-- Review Document Task -->
|
||||||
|
<bpmn:userTask id="Task_ReviewDocument" name="Review Document">
|
||||||
|
<bpmn:incoming>Flow_Valid</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_4</bpmn:outgoing>
|
||||||
|
</bpmn:userTask>
|
||||||
|
|
||||||
|
<!-- Business Rule Task - Determine Approval Level -->
|
||||||
|
<bpmn:businessRuleTask id="Task_DetermineApprovalLevel" name="Determine Approval Requirements">
|
||||||
|
<bpmn:incoming>Flow_4</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_5</bpmn:outgoing>
|
||||||
|
</bpmn:businessRuleTask>
|
||||||
|
|
||||||
|
<!-- Exclusive Gateway - Approval Decision -->
|
||||||
|
<bpmn:exclusiveGateway id="Gateway_ApprovalDecision" name="Approved?">
|
||||||
|
<bpmn:incoming>Flow_5</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_Approved</bpmn:outgoing>
|
||||||
|
<bpmn:outgoing>Flow_RejectedReview</bpmn:outgoing>
|
||||||
|
<bpmn:outgoing>Flow_NeedsRevision</bpmn:outgoing>
|
||||||
|
</bpmn:exclusiveGateway>
|
||||||
|
|
||||||
|
<!-- Approve Document Task -->
|
||||||
|
<bpmn:userTask id="Task_ApproveDocument" name="Approve Document">
|
||||||
|
<bpmn:incoming>Flow_Approved</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_6</bpmn:outgoing>
|
||||||
|
</bpmn:userTask>
|
||||||
|
|
||||||
|
<!-- Reject Document Task -->
|
||||||
|
<bpmn:userTask id="Task_RejectDocument" name="Reject Document">
|
||||||
|
<bpmn:incoming>Flow_RejectedReview</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_Rejected</bpmn:outgoing>
|
||||||
|
</bpmn:userTask>
|
||||||
|
|
||||||
|
<!-- Request Revision Task -->
|
||||||
|
<bpmn:userTask id="Task_RequestRevision" name="Request Revision">
|
||||||
|
<bpmn:incoming>Flow_NeedsRevision</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_RevisionRequested</bpmn:outgoing>
|
||||||
|
</bpmn:userTask>
|
||||||
|
|
||||||
|
<!-- Publish Document Task -->
|
||||||
|
<bpmn:serviceTask id="Task_PublishDocument" name="Publish Approved Document">
|
||||||
|
<bpmn:incoming>Flow_6</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_7</bpmn:outgoing>
|
||||||
|
</bpmn:serviceTask>
|
||||||
|
|
||||||
|
<!-- Notify Submitter Task -->
|
||||||
|
<bpmn:serviceTask id="Task_NotifySubmitter" name="Notify Submitter">
|
||||||
|
<bpmn:incoming>Flow_7</bpmn:incoming>
|
||||||
|
<bpmn:incoming>Flow_Rejected</bpmn:incoming>
|
||||||
|
<bpmn:incoming>Flow_RevisionRequested</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_8</bpmn:outgoing>
|
||||||
|
</bpmn:serviceTask>
|
||||||
|
|
||||||
|
<!-- End Event -->
|
||||||
|
<bpmn:endEvent id="EndEvent_1" name="Process Complete">
|
||||||
|
<bpmn:incoming>Flow_8</bpmn:incoming>
|
||||||
|
</bpmn:endEvent>
|
||||||
|
|
||||||
|
<!-- Sequence Flows -->
|
||||||
|
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_1" targetRef="Task_SubmitDocument"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_2" sourceRef="Task_SubmitDocument" targetRef="Task_ValidateFormat"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_3" sourceRef="Task_ValidateFormat" targetRef="Gateway_ValidationCheck"/>
|
||||||
|
|
||||||
|
<bpmn:sequenceFlow id="Flow_Valid" name="Yes" sourceRef="Gateway_ValidationCheck" targetRef="Task_ReviewDocument">
|
||||||
|
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">formatValid == true</bpmn:conditionExpression>
|
||||||
|
</bpmn:sequenceFlow>
|
||||||
|
|
||||||
|
<bpmn:sequenceFlow id="Flow_Invalid" name="No" sourceRef="Gateway_ValidationCheck" targetRef="Task_RejectInvalidFormat">
|
||||||
|
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">formatValid == false</bpmn:conditionExpression>
|
||||||
|
</bpmn:sequenceFlow>
|
||||||
|
|
||||||
|
<bpmn:sequenceFlow id="Flow_4" sourceRef="Task_ReviewDocument" targetRef="Task_DetermineApprovalLevel"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_5" sourceRef="Task_DetermineApprovalLevel" targetRef="Gateway_ApprovalDecision"/>
|
||||||
|
|
||||||
|
<bpmn:sequenceFlow id="Flow_Approved" name="Approved" sourceRef="Gateway_ApprovalDecision" targetRef="Task_ApproveDocument">
|
||||||
|
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">decision == "approved"</bpmn:conditionExpression>
|
||||||
|
</bpmn:sequenceFlow>
|
||||||
|
|
||||||
|
<bpmn:sequenceFlow id="Flow_RejectedReview" name="Rejected" sourceRef="Gateway_ApprovalDecision" targetRef="Task_RejectDocument">
|
||||||
|
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">decision == "rejected"</bpmn:conditionExpression>
|
||||||
|
</bpmn:sequenceFlow>
|
||||||
|
|
||||||
|
<bpmn:sequenceFlow id="Flow_NeedsRevision" name="Needs Revision" sourceRef="Gateway_ApprovalDecision" targetRef="Task_RequestRevision">
|
||||||
|
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">decision == "revision"</bpmn:conditionExpression>
|
||||||
|
</bpmn:sequenceFlow>
|
||||||
|
|
||||||
|
<bpmn:sequenceFlow id="Flow_6" sourceRef="Task_ApproveDocument" targetRef="Task_PublishDocument"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_7" sourceRef="Task_PublishDocument" targetRef="Task_NotifySubmitter"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_Rejected" sourceRef="Task_RejectDocument" targetRef="Task_NotifySubmitter"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_Rejected" sourceRef="Task_RejectInvalidFormat" targetRef="Task_NotifySubmitter"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_RevisionRequested" sourceRef="Task_RequestRevision" targetRef="Task_NotifySubmitter"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_8" sourceRef="Task_NotifySubmitter" targetRef="EndEvent_1"/>
|
||||||
|
|
||||||
|
</bpmn:process>
|
||||||
|
|
||||||
|
<!-- Diagram -->
|
||||||
|
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||||
|
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DocumentReviewApproval">
|
||||||
|
|
||||||
|
<bpmndi:BPMNShape id="StartEvent_1_di" bpmnElement="StartEvent_1">
|
||||||
|
<dc:Bounds x="152" y="212" width="36" height="36"/>
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="137" y="255" width="66" height="27"/>
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
|
||||||
|
<bpmndi:BPMNShape id="Task_SubmitDocument_di" bpmnElement="Task_SubmitDocument">
|
||||||
|
<dc:Bounds x="240" y="190" width="100" height="80"/>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
|
||||||
|
<bpmndi:BPMNShape id="Task_ValidateFormat_di" bpmnElement="Task_ValidateFormat">
|
||||||
|
<dc:Bounds x="390" y="190" width="100" height="80"/>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
|
||||||
|
<bpmndi:BPMNShape id="Gateway_ValidationCheck_di" bpmnElement="Gateway_ValidationCheck" isMarkerVisible="true">
|
||||||
|
<dc:Bounds x="540" y="205" width="50" height="50"/>
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="526" y="175" width="78" height="14"/>
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
|
||||||
|
<bpmndi:BPMNShape id="Task_RejectInvalidFormat_di" bpmnElement="Task_RejectInvalidFormat">
|
||||||
|
<dc:Bounds x="640" y="320" width="100" height="80"/>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
|
||||||
|
<bpmndi:BPMNShape id="Task_ReviewDocument_di" bpmnElement="Task_ReviewDocument">
|
||||||
|
<dc:Bounds x="640" y="190" width="100" height="80"/>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
|
||||||
|
<bpmndi:BPMNShape id="Task_DetermineApprovalLevel_di" bpmnElement="Task_DetermineApprovalLevel">
|
||||||
|
<dc:Bounds x="790" y="190" width="100" height="80"/>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
|
||||||
|
<bpmndi:BPMNShape id="Gateway_ApprovalDecision_di" bpmnElement="Gateway_ApprovalDecision" isMarkerVisible="true">
|
||||||
|
<dc:Bounds x="940" y="205" width="50" height="50"/>
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="936" y="175" width="58" height="14"/>
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
|
||||||
|
<bpmndi:BPMNShape id="Task_ApproveDocument_di" bpmnElement="Task_ApproveDocument">
|
||||||
|
<dc:Bounds x="1040" y="80" width="100" height="80"/>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
|
||||||
|
<bpmndi:BPMNShape id="Task_RejectDocument_di" bpmnElement="Task_RejectDocument">
|
||||||
|
<dc:Bounds x="1040" y="320" width="100" height="80"/>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
|
||||||
|
<bpmndi:BPMNShape id="Task_RequestRevision_di" bpmnElement="Task_RequestRevision">
|
||||||
|
<dc:Bounds x="1040" y="190" width="100" height="80"/>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
|
||||||
|
<bpmndi:BPMNShape id="Task_PublishDocument_di" bpmnElement="Task_PublishDocument">
|
||||||
|
<dc:Bounds x="1190" y="80" width="100" height="80"/>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
|
||||||
|
<bpmndi:BPMNShape id="Task_NotifySubmitter_di" bpmnElement="Task_NotifySubmitter">
|
||||||
|
<dc:Bounds x="1340" y="190" width="100" height="80"/>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
|
||||||
|
<bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="EndEvent_1">
|
||||||
|
<dc:Bounds x="1492" y="212" width="36" height="36"/>
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="1473" y="255" width="74" height="27"/>
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
|
||||||
|
<!-- Edges -->
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
|
||||||
|
<di:waypoint x="188" y="230"/>
|
||||||
|
<di:waypoint x="240" y="230"/>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
|
||||||
|
<bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2">
|
||||||
|
<di:waypoint x="340" y="230"/>
|
||||||
|
<di:waypoint x="390" y="230"/>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
|
||||||
|
<bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3">
|
||||||
|
<di:waypoint x="490" y="230"/>
|
||||||
|
<di:waypoint x="540" y="230"/>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
|
||||||
|
<bpmndi:BPMNEdge id="Flow_Valid_di" bpmnElement="Flow_Valid">
|
||||||
|
<di:waypoint x="590" y="230"/>
|
||||||
|
<di:waypoint x="640" y="230"/>
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="602" y="212" width="25" height="14"/>
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
|
||||||
|
<bpmndi:BPMNEdge id="Flow_Invalid_di" bpmnElement="Flow_Invalid">
|
||||||
|
<di:waypoint x="565" y="255"/>
|
||||||
|
<di:waypoint x="565" y="360"/>
|
||||||
|
<di:waypoint x="640" y="360"/>
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="573" y="305" width="15" height="14"/>
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
|
||||||
|
<bpmndi:BPMNEdge id="Flow_4_di" bpmnElement="Flow_4">
|
||||||
|
<di:waypoint x="740" y="230"/>
|
||||||
|
<di:waypoint x="790" y="230"/>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
|
||||||
|
<bpmndi:BPMNEdge id="Flow_5_di" bpmnElement="Flow_5">
|
||||||
|
<di:waypoint x="890" y="230"/>
|
||||||
|
<di:waypoint x="940" y="230"/>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
|
||||||
|
<bpmndi:BPMNEdge id="Flow_Approved_di" bpmnElement="Flow_Approved">
|
||||||
|
<di:waypoint x="965" y="205"/>
|
||||||
|
<di:waypoint x="965" y="120"/>
|
||||||
|
<di:waypoint x="1040" y="120"/>
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="973" y="160" width="49" height="14"/>
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
|
||||||
|
<bpmndi:BPMNEdge id="Flow_RejectedReview_di" bpmnElement="Flow_RejectedReview">
|
||||||
|
<di:waypoint x="965" y="255"/>
|
||||||
|
<di:waypoint x="965" y="360"/>
|
||||||
|
<di:waypoint x="1040" y="360"/>
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="973" y="305" width="45" height="14"/>
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
|
||||||
|
<bpmndi:BPMNEdge id="Flow_NeedsRevision_di" bpmnElement="Flow_NeedsRevision">
|
||||||
|
<di:waypoint x="990" y="230"/>
|
||||||
|
<di:waypoint x="1040" y="230"/>
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="982" y="212" width="76" height="14"/>
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
|
||||||
|
<bpmndi:BPMNEdge id="Flow_6_di" bpmnElement="Flow_6">
|
||||||
|
<di:waypoint x="1140" y="120"/>
|
||||||
|
<di:waypoint x="1190" y="120"/>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
|
||||||
|
<bpmndi:BPMNEdge id="Flow_7_di" bpmnElement="Flow_7">
|
||||||
|
<di:waypoint x="1290" y="120"/>
|
||||||
|
<di:waypoint x="1315" y="120"/>
|
||||||
|
<di:waypoint x="1315" y="230"/>
|
||||||
|
<di:waypoint x="1340" y="230"/>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
|
||||||
|
<bpmndi:BPMNEdge id="Flow_Rejected_di" bpmnElement="Flow_Rejected">
|
||||||
|
<di:waypoint x="1140" y="360"/>
|
||||||
|
<di:waypoint x="1240" y="360"/>
|
||||||
|
<di:waypoint x="1240" y="230"/>
|
||||||
|
<di:waypoint x="1340" y="230"/>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
|
||||||
|
<bpmndi:BPMNEdge id="Flow_RevisionRequested_di" bpmnElement="Flow_RevisionRequested">
|
||||||
|
<di:waypoint x="1140" y="230"/>
|
||||||
|
<di:waypoint x="1340" y="230"/>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
|
||||||
|
<bpmndi:BPMNEdge id="Flow_8_di" bpmnElement="Flow_8">
|
||||||
|
<di:waypoint x="1440" y="230"/>
|
||||||
|
<di:waypoint x="1492" y="230"/>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
|
||||||
|
</bpmndi:BPMNPlane>
|
||||||
|
</bpmndi:BPMNDiagram>
|
||||||
|
|
||||||
|
</bpmn:definitions>
|
||||||
273
demo-process/cmmn/case.cmmn.xml
Normal file
273
demo-process/cmmn/case.cmmn.xml
Normal file
@@ -0,0 +1,273 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<cmmn:definitions xmlns:cmmn="http://www.omg.org/spec/CMMN/20151109/MODEL"
|
||||||
|
xmlns:cmmndi="http://www.omg.org/spec/CMMN/20151109/CMMNDI"
|
||||||
|
xmlns:dc="http://www.omg.org/spec/CMMN/20151109/DC"
|
||||||
|
xmlns:di="http://www.omg.org/spec/CMMN/20151109/DI"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
id="DocumentReviewException"
|
||||||
|
targetNamespace="http://processgit.io/cmmn/document-review-exception">
|
||||||
|
|
||||||
|
<cmmn:case id="Case_DocumentReviewException" name="Document Review Exception Case">
|
||||||
|
|
||||||
|
<cmmn:casePlanModel id="CasePlanModel_1" name="Document Review Exception Management">
|
||||||
|
|
||||||
|
<!-- Case File -->
|
||||||
|
<cmmn:caseFileModel id="CaseFileModel_1">
|
||||||
|
<cmmn:caseFileItem id="CaseFile_DocumentDetails" name="Document Details" definitionRef="DocumentDetails"/>
|
||||||
|
<cmmn:caseFileItem id="CaseFile_ExceptionInfo" name="Exception Information" definitionRef="ExceptionInfo"/>
|
||||||
|
<cmmn:caseFileItem id="CaseFile_Resolution" name="Resolution" definitionRef="Resolution"/>
|
||||||
|
</cmmn:caseFileModel>
|
||||||
|
|
||||||
|
<!-- Plan Items -->
|
||||||
|
|
||||||
|
<!-- Stage: Exception Assessment -->
|
||||||
|
<cmmn:planItem id="PI_ExceptionAssessment" definitionRef="Stage_ExceptionAssessment">
|
||||||
|
<cmmn:entryCriterion id="EntryCriterion_1" sentryRef="Sentry_CaseStart"/>
|
||||||
|
</cmmn:planItem>
|
||||||
|
|
||||||
|
<!-- Stage: Resolution Actions -->
|
||||||
|
<cmmn:planItem id="PI_ResolutionActions" definitionRef="Stage_ResolutionActions">
|
||||||
|
<cmmn:entryCriterion id="EntryCriterion_2" sentryRef="Sentry_AssessmentComplete"/>
|
||||||
|
</cmmn:planItem>
|
||||||
|
|
||||||
|
<!-- Stage: Escalation (Optional) -->
|
||||||
|
<cmmn:planItem id="PI_Escalation" definitionRef="Stage_Escalation">
|
||||||
|
<cmmn:entryCriterion id="EntryCriterion_3" sentryRef="Sentry_EscalationNeeded"/>
|
||||||
|
</cmmn:planItem>
|
||||||
|
|
||||||
|
<!-- Milestone: Exception Resolved -->
|
||||||
|
<cmmn:planItem id="PI_ExceptionResolved" definitionRef="Milestone_ExceptionResolved">
|
||||||
|
<cmmn:entryCriterion id="EntryCriterion_4" sentryRef="Sentry_ResolutionComplete"/>
|
||||||
|
</cmmn:planItem>
|
||||||
|
|
||||||
|
<!-- Sentries -->
|
||||||
|
<cmmn:sentry id="Sentry_CaseStart">
|
||||||
|
<cmmn:planItemOnPart id="PlanItemOnPart_1" sourceRef="PI_ExceptionAssessment">
|
||||||
|
<cmmn:standardEvent>create</cmmn:standardEvent>
|
||||||
|
</cmmn:planItemOnPart>
|
||||||
|
</cmmn:sentry>
|
||||||
|
|
||||||
|
<cmmn:sentry id="Sentry_AssessmentComplete">
|
||||||
|
<cmmn:planItemOnPart id="PlanItemOnPart_2" sourceRef="PI_ExceptionAssessment">
|
||||||
|
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||||
|
</cmmn:planItemOnPart>
|
||||||
|
</cmmn:sentry>
|
||||||
|
|
||||||
|
<cmmn:sentry id="Sentry_EscalationNeeded">
|
||||||
|
<cmmn:ifPart id="IfPart_1">
|
||||||
|
<cmmn:condition xsi:type="cmmn:tExpression">
|
||||||
|
<cmmn:body>exceptionType == "critical" || exceptionAge > 72</cmmn:body>
|
||||||
|
</cmmn:condition>
|
||||||
|
</cmmn:ifPart>
|
||||||
|
</cmmn:sentry>
|
||||||
|
|
||||||
|
<cmmn:sentry id="Sentry_ResolutionComplete">
|
||||||
|
<cmmn:planItemOnPart id="PlanItemOnPart_3" sourceRef="PI_ResolutionActions">
|
||||||
|
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||||
|
</cmmn:planItemOnPart>
|
||||||
|
</cmmn:sentry>
|
||||||
|
|
||||||
|
<!-- Stage Definitions -->
|
||||||
|
|
||||||
|
<!-- Exception Assessment Stage -->
|
||||||
|
<cmmn:stage id="Stage_ExceptionAssessment" name="Exception Assessment">
|
||||||
|
|
||||||
|
<cmmn:planItem id="PI_CaptureException" definitionRef="Task_CaptureException"/>
|
||||||
|
|
||||||
|
<cmmn:planItem id="PI_ClassifyException" definitionRef="Task_ClassifyException">
|
||||||
|
<cmmn:entryCriterion id="EntryCriterion_5" sentryRef="Sentry_ExceptionCaptured"/>
|
||||||
|
</cmmn:planItem>
|
||||||
|
|
||||||
|
<cmmn:planItem id="PI_DetermineImpact" definitionRef="Task_DetermineImpact">
|
||||||
|
<cmmn:entryCriterion id="EntryCriterion_6" sentryRef="Sentry_ExceptionClassified"/>
|
||||||
|
</cmmn:planItem>
|
||||||
|
|
||||||
|
<cmmn:planItem id="PI_AssignOwner" definitionRef="Task_AssignOwner">
|
||||||
|
<cmmn:entryCriterion id="EntryCriterion_7" sentryRef="Sentry_ImpactDetermined"/>
|
||||||
|
</cmmn:planItem>
|
||||||
|
|
||||||
|
<cmmn:sentry id="Sentry_ExceptionCaptured">
|
||||||
|
<cmmn:planItemOnPart id="PlanItemOnPart_4" sourceRef="PI_CaptureException">
|
||||||
|
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||||
|
</cmmn:planItemOnPart>
|
||||||
|
</cmmn:sentry>
|
||||||
|
|
||||||
|
<cmmn:sentry id="Sentry_ExceptionClassified">
|
||||||
|
<cmmn:planItemOnPart id="PlanItemOnPart_5" sourceRef="PI_ClassifyException">
|
||||||
|
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||||
|
</cmmn:planItemOnPart>
|
||||||
|
</cmmn:sentry>
|
||||||
|
|
||||||
|
<cmmn:sentry id="Sentry_ImpactDetermined">
|
||||||
|
<cmmn:planItemOnPart id="PlanItemOnPart_6" sourceRef="PI_DetermineImpact">
|
||||||
|
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||||
|
</cmmn:planItemOnPart>
|
||||||
|
</cmmn:sentry>
|
||||||
|
|
||||||
|
</cmmn:stage>
|
||||||
|
|
||||||
|
<!-- Resolution Actions Stage -->
|
||||||
|
<cmmn:stage id="Stage_ResolutionActions" name="Resolution Actions">
|
||||||
|
|
||||||
|
<cmmn:planItem id="PI_InvestigateIssue" definitionRef="Task_InvestigateIssue"/>
|
||||||
|
|
||||||
|
<cmmn:planItem id="PI_CorrectDocumentFormat" definitionRef="Task_CorrectDocumentFormat">
|
||||||
|
<cmmn:itemControl id="ItemControl_1">
|
||||||
|
<cmmn:manualActivationRule id="ManualActivationRule_1"/>
|
||||||
|
</cmmn:itemControl>
|
||||||
|
</cmmn:planItem>
|
||||||
|
|
||||||
|
<cmmn:planItem id="PI_ObtainMissingInfo" definitionRef="Task_ObtainMissingInfo">
|
||||||
|
<cmmn:itemControl id="ItemControl_2">
|
||||||
|
<cmmn:manualActivationRule id="ManualActivationRule_2"/>
|
||||||
|
</cmmn:itemControl>
|
||||||
|
</cmmn:planItem>
|
||||||
|
|
||||||
|
<cmmn:planItem id="PI_RequestClarification" definitionRef="Task_RequestClarification">
|
||||||
|
<cmmn:itemControl id="ItemControl_3">
|
||||||
|
<cmmn:manualActivationRule id="ManualActivationRule_3"/>
|
||||||
|
</cmmn:itemControl>
|
||||||
|
</cmmn:planItem>
|
||||||
|
|
||||||
|
<cmmn:planItem id="PI_ReassignReviewer" definitionRef="Task_ReassignReviewer">
|
||||||
|
<cmmn:itemControl id="ItemControl_4">
|
||||||
|
<cmmn:manualActivationRule id="ManualActivationRule_4"/>
|
||||||
|
</cmmn:itemControl>
|
||||||
|
</cmmn:planItem>
|
||||||
|
|
||||||
|
<cmmn:planItem id="PI_ImplementSolution" definitionRef="Task_ImplementSolution">
|
||||||
|
<cmmn:entryCriterion id="EntryCriterion_8" sentryRef="Sentry_InvestigationComplete"/>
|
||||||
|
</cmmn:planItem>
|
||||||
|
|
||||||
|
<cmmn:planItem id="PI_VerifyResolution" definitionRef="Task_VerifyResolution">
|
||||||
|
<cmmn:entryCriterion id="EntryCriterion_9" sentryRef="Sentry_SolutionImplemented"/>
|
||||||
|
</cmmn:planItem>
|
||||||
|
|
||||||
|
<cmmn:sentry id="Sentry_InvestigationComplete">
|
||||||
|
<cmmn:planItemOnPart id="PlanItemOnPart_7" sourceRef="PI_InvestigateIssue">
|
||||||
|
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||||
|
</cmmn:planItemOnPart>
|
||||||
|
</cmmn:sentry>
|
||||||
|
|
||||||
|
<cmmn:sentry id="Sentry_SolutionImplemented">
|
||||||
|
<cmmn:planItemOnPart id="PlanItemOnPart_8" sourceRef="PI_ImplementSolution">
|
||||||
|
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||||
|
</cmmn:planItemOnPart>
|
||||||
|
</cmmn:sentry>
|
||||||
|
|
||||||
|
</cmmn:stage>
|
||||||
|
|
||||||
|
<!-- Escalation Stage -->
|
||||||
|
<cmmn:stage id="Stage_Escalation" name="Escalation">
|
||||||
|
|
||||||
|
<cmmn:planItem id="PI_NotifyStakeholders" definitionRef="Task_NotifyStakeholders"/>
|
||||||
|
|
||||||
|
<cmmn:planItem id="PI_ConveneReviewBoard" definitionRef="Task_ConveneReviewBoard">
|
||||||
|
<cmmn:entryCriterion id="EntryCriterion_10" sentryRef="Sentry_StakeholdersNotified"/>
|
||||||
|
</cmmn:planItem>
|
||||||
|
|
||||||
|
<cmmn:planItem id="PI_DevelopActionPlan" definitionRef="Task_DevelopActionPlan">
|
||||||
|
<cmmn:entryCriterion id="EntryCriterion_11" sentryRef="Sentry_BoardConvened"/>
|
||||||
|
</cmmn:planItem>
|
||||||
|
|
||||||
|
<cmmn:planItem id="PI_ApproveException" definitionRef="Task_ApproveException">
|
||||||
|
<cmmn:entryCriterion id="EntryCriterion_12" sentryRef="Sentry_ActionPlanDeveloped"/>
|
||||||
|
</cmmn:planItem>
|
||||||
|
|
||||||
|
<cmmn:sentry id="Sentry_StakeholdersNotified">
|
||||||
|
<cmmn:planItemOnPart id="PlanItemOnPart_9" sourceRef="PI_NotifyStakeholders">
|
||||||
|
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||||
|
</cmmn:planItemOnPart>
|
||||||
|
</cmmn:sentry>
|
||||||
|
|
||||||
|
<cmmn:sentry id="Sentry_BoardConvened">
|
||||||
|
<cmmn:planItemOnPart id="PlanItemOnPart_10" sourceRef="PI_ConveneReviewBoard">
|
||||||
|
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||||
|
</cmmn:planItemOnPart>
|
||||||
|
</cmmn:sentry>
|
||||||
|
|
||||||
|
<cmmn:sentry id="Sentry_ActionPlanDeveloped">
|
||||||
|
<cmmn:planItemOnPart id="PlanItemOnPart_11" sourceRef="PI_DevelopActionPlan">
|
||||||
|
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||||
|
</cmmn:planItemOnPart>
|
||||||
|
</cmmn:sentry>
|
||||||
|
|
||||||
|
</cmmn:stage>
|
||||||
|
|
||||||
|
<!-- Task Definitions -->
|
||||||
|
|
||||||
|
<!-- Exception Assessment Tasks -->
|
||||||
|
<cmmn:humanTask id="Task_CaptureException" name="Capture Exception Details"/>
|
||||||
|
<cmmn:humanTask id="Task_ClassifyException" name="Classify Exception Type"/>
|
||||||
|
<cmmn:humanTask id="Task_DetermineImpact" name="Determine Business Impact"/>
|
||||||
|
<cmmn:humanTask id="Task_AssignOwner" name="Assign Owner"/>
|
||||||
|
|
||||||
|
<!-- Resolution Actions Tasks -->
|
||||||
|
<cmmn:humanTask id="Task_InvestigateIssue" name="Investigate Root Cause"/>
|
||||||
|
<cmmn:humanTask id="Task_CorrectDocumentFormat" name="Correct Document Format"/>
|
||||||
|
<cmmn:humanTask id="Task_ObtainMissingInfo" name="Obtain Missing Information"/>
|
||||||
|
<cmmn:humanTask id="Task_RequestClarification" name="Request Clarification"/>
|
||||||
|
<cmmn:humanTask id="Task_ReassignReviewer" name="Reassign to Different Reviewer"/>
|
||||||
|
<cmmn:humanTask id="Task_ImplementSolution" name="Implement Solution"/>
|
||||||
|
<cmmn:humanTask id="Task_VerifyResolution" name="Verify Resolution"/>
|
||||||
|
|
||||||
|
<!-- Escalation Tasks -->
|
||||||
|
<cmmn:humanTask id="Task_NotifyStakeholders" name="Notify Stakeholders"/>
|
||||||
|
<cmmn:humanTask id="Task_ConveneReviewBoard" name="Convene Review Board"/>
|
||||||
|
<cmmn:humanTask id="Task_DevelopActionPlan" name="Develop Action Plan"/>
|
||||||
|
<cmmn:humanTask id="Task_ApproveException" name="Approve Exception"/>
|
||||||
|
|
||||||
|
<!-- Milestone Definition -->
|
||||||
|
<cmmn:milestone id="Milestone_ExceptionResolved" name="Exception Resolved"/>
|
||||||
|
|
||||||
|
</cmmn:casePlanModel>
|
||||||
|
|
||||||
|
</cmmn:case>
|
||||||
|
|
||||||
|
<!-- Case File Item Definitions -->
|
||||||
|
<cmmn:caseFileItemDefinition id="DocumentDetails" name="Document Details"/>
|
||||||
|
<cmmn:caseFileItemDefinition id="ExceptionInfo" name="Exception Information"/>
|
||||||
|
<cmmn:caseFileItemDefinition id="Resolution" name="Resolution"/>
|
||||||
|
|
||||||
|
<!-- Diagram -->
|
||||||
|
<cmmndi:CMMNDI>
|
||||||
|
<cmmndi:CMMNDiagram id="CMMNDiagram_1">
|
||||||
|
<cmmndi:Size width="1200" height="800"/>
|
||||||
|
|
||||||
|
<cmmndi:CMMNShape id="CMMNShape_CasePlan" cmmnElementRef="CasePlanModel_1">
|
||||||
|
<dc:Bounds x="50" y="50" width="1100" height="700"/>
|
||||||
|
</cmmndi:CMMNShape>
|
||||||
|
|
||||||
|
<!-- Exception Assessment Stage -->
|
||||||
|
<cmmndi:CMMNShape id="CMMNShape_ExceptionAssessment" cmmnElementRef="PI_ExceptionAssessment">
|
||||||
|
<dc:Bounds x="100" y="100" width="300" height="250"/>
|
||||||
|
</cmmndi:CMMNShape>
|
||||||
|
|
||||||
|
<!-- Resolution Actions Stage -->
|
||||||
|
<cmmndi:CMMNShape id="CMMNShape_ResolutionActions" cmmnElementRef="PI_ResolutionActions">
|
||||||
|
<dc:Bounds x="450" y="100" width="350" height="350"/>
|
||||||
|
</cmmndi:CMMNShape>
|
||||||
|
|
||||||
|
<!-- Escalation Stage -->
|
||||||
|
<cmmndi:CMMNShape id="CMMNShape_Escalation" cmmnElementRef="PI_Escalation">
|
||||||
|
<dc:Bounds x="850" y="100" width="250" height="250"/>
|
||||||
|
</cmmndi:CMMNShape>
|
||||||
|
|
||||||
|
<!-- Exception Resolved Milestone -->
|
||||||
|
<cmmndi:CMMNShape id="CMMNShape_ExceptionResolved" cmmnElementRef="PI_ExceptionResolved">
|
||||||
|
<dc:Bounds x="950" y="500" width="100" height="80"/>
|
||||||
|
</cmmndi:CMMNShape>
|
||||||
|
|
||||||
|
<cmmndi:CMMNShape id="EntryCriterion_1_di" cmmnElementRef="EntryCriterion_1">
|
||||||
|
<dc:Bounds x="270" y="126" width="20" height="28" />
|
||||||
|
</cmmndi:CMMNShape>
|
||||||
|
<cmmndi:CMMNShape id="EntryCriterion_2_di" cmmnElementRef="EntryCriterion_2">
|
||||||
|
<dc:Bounds x="420" y="126" width="20" height="28" />
|
||||||
|
</cmmndi:CMMNShape>
|
||||||
|
<cmmndi:CMMNShape id="EntryCriterion_3_di" cmmnElementRef="EntryCriterion_3">
|
||||||
|
<dc:Bounds x="440" y="306" width="20" height="28" />
|
||||||
|
</cmmndi:CMMNShape>
|
||||||
|
</cmmndi:CMMNDiagram>
|
||||||
|
</cmmndi:CMMNDI>
|
||||||
|
|
||||||
|
</cmmn:definitions>
|
||||||
346
demo-process/dmn/decisions.dmn.xml
Normal file
346
demo-process/dmn/decisions.dmn.xml
Normal file
@@ -0,0 +1,346 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/"
|
||||||
|
xmlns:dmndi="https://www.omg.org/spec/DMN/20191111/DMNDI/"
|
||||||
|
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
|
||||||
|
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
|
||||||
|
id="DocumentApprovalDecision"
|
||||||
|
name="Document Approval Decision"
|
||||||
|
namespace="http://processgit.io/dmn/document-approval">
|
||||||
|
|
||||||
|
<decision id="Decision_ApprovalRequirements" name="Approval Requirements">
|
||||||
|
<informationRequirement id="InformationRequirement_1">
|
||||||
|
<requiredInput href="#InputData_DocumentType"/>
|
||||||
|
</informationRequirement>
|
||||||
|
<informationRequirement id="InformationRequirement_2">
|
||||||
|
<requiredInput href="#InputData_DocumentValue"/>
|
||||||
|
</informationRequirement>
|
||||||
|
<informationRequirement id="InformationRequirement_3">
|
||||||
|
<requiredInput href="#InputData_Department"/>
|
||||||
|
</informationRequirement>
|
||||||
|
|
||||||
|
<decisionTable id="DecisionTable_1" hitPolicy="FIRST">
|
||||||
|
|
||||||
|
<!-- Input Columns -->
|
||||||
|
<input id="Input_DocumentType" label="Document Type">
|
||||||
|
<inputExpression id="InputExpression_DocumentType" typeRef="string">
|
||||||
|
<text>documentType</text>
|
||||||
|
</inputExpression>
|
||||||
|
</input>
|
||||||
|
|
||||||
|
<input id="Input_Value" label="Document Value ($)">
|
||||||
|
<inputExpression id="InputExpression_Value" typeRef="number">
|
||||||
|
<text>documentValue</text>
|
||||||
|
</inputExpression>
|
||||||
|
</input>
|
||||||
|
|
||||||
|
<input id="Input_Department" label="Department">
|
||||||
|
<inputExpression id="InputExpression_Department" typeRef="string">
|
||||||
|
<text>department</text>
|
||||||
|
</inputExpression>
|
||||||
|
</input>
|
||||||
|
|
||||||
|
<!-- Output Columns -->
|
||||||
|
<output id="Output_ApprovalLevel" label="Approval Level" name="approvalLevel" typeRef="string"/>
|
||||||
|
<output id="Output_RequiredApprovers" label="Required Approvers" name="requiredApprovers" typeRef="number"/>
|
||||||
|
<output id="Output_ApprovalAuthority" label="Approval Authority" name="approvalAuthority" typeRef="string"/>
|
||||||
|
<output id="Output_ReviewTime" label="Max Review Time (hours)" name="reviewTimeHours" typeRef="number"/>
|
||||||
|
|
||||||
|
<!-- Decision Rules -->
|
||||||
|
|
||||||
|
<!-- Financial - High Value -->
|
||||||
|
<rule id="Rule_1">
|
||||||
|
<inputEntry id="InputEntry_1_1">
|
||||||
|
<text>"Contract","Purchase Order","Financial Statement"</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_1_2">
|
||||||
|
<text>>= 100000</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_1_3">
|
||||||
|
<text>-</text>
|
||||||
|
</inputEntry>
|
||||||
|
<outputEntry id="OutputEntry_1_1">
|
||||||
|
<text>"Executive"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_1_2">
|
||||||
|
<text>3</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_1_3">
|
||||||
|
<text>"CFO, CEO, Board Member"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_1_4">
|
||||||
|
<text>72</text>
|
||||||
|
</outputEntry>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Financial - Medium Value -->
|
||||||
|
<rule id="Rule_2">
|
||||||
|
<inputEntry id="InputEntry_2_1">
|
||||||
|
<text>"Contract","Purchase Order"</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_2_2">
|
||||||
|
<text>[10000..100000)</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_2_3">
|
||||||
|
<text>-</text>
|
||||||
|
</inputEntry>
|
||||||
|
<outputEntry id="OutputEntry_2_1">
|
||||||
|
<text>"Senior Management"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_2_2">
|
||||||
|
<text>2</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_2_3">
|
||||||
|
<text>"Director, VP Finance"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_2_4">
|
||||||
|
<text>48</text>
|
||||||
|
</outputEntry>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Financial - Low Value -->
|
||||||
|
<rule id="Rule_3">
|
||||||
|
<inputEntry id="InputEntry_3_1">
|
||||||
|
<text>"Purchase Order"</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_3_2">
|
||||||
|
<text>< 10000</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_3_3">
|
||||||
|
<text>-</text>
|
||||||
|
</inputEntry>
|
||||||
|
<outputEntry id="OutputEntry_3_1">
|
||||||
|
<text>"Manager"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_3_2">
|
||||||
|
<text>1</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_3_3">
|
||||||
|
<text>"Department Manager"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_3_4">
|
||||||
|
<text>24</text>
|
||||||
|
</outputEntry>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Legal Documents -->
|
||||||
|
<rule id="Rule_4">
|
||||||
|
<inputEntry id="InputEntry_4_1">
|
||||||
|
<text>"Legal Agreement","NDA","Compliance Document"</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_4_2">
|
||||||
|
<text>-</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_4_3">
|
||||||
|
<text>-</text>
|
||||||
|
</inputEntry>
|
||||||
|
<outputEntry id="OutputEntry_4_1">
|
||||||
|
<text>"Legal"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_4_2">
|
||||||
|
<text>2</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_4_3">
|
||||||
|
<text>"Legal Counsel, CLO"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_4_4">
|
||||||
|
<text>48</text>
|
||||||
|
</outputEntry>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- HR Policy Documents -->
|
||||||
|
<rule id="Rule_5">
|
||||||
|
<inputEntry id="InputEntry_5_1">
|
||||||
|
<text>"HR Policy","Employee Handbook"</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_5_2">
|
||||||
|
<text>-</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_5_3">
|
||||||
|
<text>"Human Resources"</text>
|
||||||
|
</inputEntry>
|
||||||
|
<outputEntry id="OutputEntry_5_1">
|
||||||
|
<text>"HR Leadership"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_5_2">
|
||||||
|
<text>2</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_5_3">
|
||||||
|
<text>"HR Director, CHRO"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_5_4">
|
||||||
|
<text>48</text>
|
||||||
|
</outputEntry>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Technical Documentation -->
|
||||||
|
<rule id="Rule_6">
|
||||||
|
<inputEntry id="InputEntry_6_1">
|
||||||
|
<text>"Technical Specification","Architecture Document","API Documentation"</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_6_2">
|
||||||
|
<text>-</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_6_3">
|
||||||
|
<text>"Engineering"</text>
|
||||||
|
</inputEntry>
|
||||||
|
<outputEntry id="OutputEntry_6_1">
|
||||||
|
<text>"Technical"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_6_2">
|
||||||
|
<text>2</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_6_3">
|
||||||
|
<text>"Tech Lead, Engineering Manager"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_6_4">
|
||||||
|
<text>24</text>
|
||||||
|
</outputEntry>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Marketing Materials -->
|
||||||
|
<rule id="Rule_7">
|
||||||
|
<inputEntry id="InputEntry_7_1">
|
||||||
|
<text>"Marketing Material","Press Release","Blog Post"</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_7_2">
|
||||||
|
<text>-</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_7_3">
|
||||||
|
<text>"Marketing"</text>
|
||||||
|
</inputEntry>
|
||||||
|
<outputEntry id="OutputEntry_7_1">
|
||||||
|
<text>"Marketing"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_7_2">
|
||||||
|
<text>1</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_7_3">
|
||||||
|
<text>"Marketing Manager"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_7_4">
|
||||||
|
<text>12</text>
|
||||||
|
</outputEntry>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Standard Operating Procedures -->
|
||||||
|
<rule id="Rule_8">
|
||||||
|
<inputEntry id="InputEntry_8_1">
|
||||||
|
<text>"SOP","Process Document","Work Instruction"</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_8_2">
|
||||||
|
<text>-</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_8_3">
|
||||||
|
<text>-</text>
|
||||||
|
</inputEntry>
|
||||||
|
<outputEntry id="OutputEntry_8_1">
|
||||||
|
<text>"Process Owner"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_8_2">
|
||||||
|
<text>2</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_8_3">
|
||||||
|
<text>"Process Owner, Quality Manager"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_8_4">
|
||||||
|
<text>36</text>
|
||||||
|
</outputEntry>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Training Materials -->
|
||||||
|
<rule id="Rule_9">
|
||||||
|
<inputEntry id="InputEntry_9_1">
|
||||||
|
<text>"Training Material","User Guide","Tutorial"</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_9_2">
|
||||||
|
<text>-</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_9_3">
|
||||||
|
<text>-</text>
|
||||||
|
</inputEntry>
|
||||||
|
<outputEntry id="OutputEntry_9_1">
|
||||||
|
<text>"Standard"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_9_2">
|
||||||
|
<text>1</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_9_3">
|
||||||
|
<text>"Department Manager"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_9_4">
|
||||||
|
<text>24</text>
|
||||||
|
</outputEntry>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Default Rule -->
|
||||||
|
<rule id="Rule_Default">
|
||||||
|
<inputEntry id="InputEntry_Default_1">
|
||||||
|
<text>-</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_Default_2">
|
||||||
|
<text>-</text>
|
||||||
|
</inputEntry>
|
||||||
|
<inputEntry id="InputEntry_Default_3">
|
||||||
|
<text>-</text>
|
||||||
|
</inputEntry>
|
||||||
|
<outputEntry id="OutputEntry_Default_1">
|
||||||
|
<text>"Standard"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_Default_2">
|
||||||
|
<text>1</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_Default_3">
|
||||||
|
<text>"Manager"</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_Default_4">
|
||||||
|
<text>24</text>
|
||||||
|
</outputEntry>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
</decisionTable>
|
||||||
|
</decision>
|
||||||
|
|
||||||
|
<!-- Input Data -->
|
||||||
|
<inputData id="InputData_DocumentType" name="Document Type"/>
|
||||||
|
<inputData id="InputData_DocumentValue" name="Document Value"/>
|
||||||
|
<inputData id="InputData_Department" name="Department"/>
|
||||||
|
|
||||||
|
<!-- Diagram -->
|
||||||
|
<dmndi:DMNDI>
|
||||||
|
<dmndi:DMNDiagram id="DMNDiagram_1">
|
||||||
|
|
||||||
|
<dmndi:DMNShape id="DMNShape_Decision" dmnElementRef="Decision_ApprovalRequirements">
|
||||||
|
<dc:Bounds x="300" y="80" width="180" height="80"/>
|
||||||
|
</dmndi:DMNShape>
|
||||||
|
|
||||||
|
<dmndi:DMNShape id="DMNShape_InputDocType" dmnElementRef="InputData_DocumentType">
|
||||||
|
<dc:Bounds x="150" y="230" width="125" height="45"/>
|
||||||
|
</dmndi:DMNShape>
|
||||||
|
|
||||||
|
<dmndi:DMNShape id="DMNShape_InputValue" dmnElementRef="InputData_DocumentValue">
|
||||||
|
<dc:Bounds x="325" y="230" width="125" height="45"/>
|
||||||
|
</dmndi:DMNShape>
|
||||||
|
|
||||||
|
<dmndi:DMNShape id="DMNShape_InputDepartment" dmnElementRef="InputData_Department">
|
||||||
|
<dc:Bounds x="500" y="230" width="125" height="45"/>
|
||||||
|
</dmndi:DMNShape>
|
||||||
|
|
||||||
|
<dmndi:DMNEdge id="DMNEdge_1" dmnElementRef="InformationRequirement_1">
|
||||||
|
<di:waypoint x="212" y="230"/>
|
||||||
|
<di:waypoint x="360" y="160"/>
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
|
||||||
|
<dmndi:DMNEdge id="DMNEdge_2" dmnElementRef="InformationRequirement_2">
|
||||||
|
<di:waypoint x="387" y="230"/>
|
||||||
|
<di:waypoint x="390" y="160"/>
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
|
||||||
|
<dmndi:DMNEdge id="DMNEdge_3" dmnElementRef="InformationRequirement_3">
|
||||||
|
<di:waypoint x="562" y="230"/>
|
||||||
|
<di:waypoint x="420" y="160"/>
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
|
||||||
|
</dmndi:DMNDiagram>
|
||||||
|
</dmndi:DMNDI>
|
||||||
|
|
||||||
|
</definitions>
|
||||||
44
demo-process/docs/notes.md
Normal file
44
demo-process/docs/notes.md
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
# Document Review & Approval Process
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
This process handles the review and approval workflow for various document types within the organization.
|
||||||
|
|
||||||
|
## Process Flow
|
||||||
|
1. **Document Submission**: User submits a document for review
|
||||||
|
2. **Format Validation**: Automated validation of document format and structure
|
||||||
|
3. **Review**: Designated reviewers assess the document content
|
||||||
|
4. **Approval Determination**: Business rules determine required approval levels based on document type and value
|
||||||
|
5. **Decision**: Document is approved, rejected, or sent back for revision
|
||||||
|
6. **Publication**: Approved documents are published to the appropriate repository
|
||||||
|
|
||||||
|
## Key Features
|
||||||
|
- Automated format validation
|
||||||
|
- Dynamic approval routing based on document type and value
|
||||||
|
- Exception handling through CMMN case management
|
||||||
|
- Multiple outcome paths (approve/reject/revise)
|
||||||
|
|
||||||
|
## Approval Levels
|
||||||
|
- **Standard**: Single manager approval for routine documents
|
||||||
|
- **Manager**: Department manager approval for low-value transactions
|
||||||
|
- **Senior Management**: Director/VP approval for medium-value transactions
|
||||||
|
- **Executive**: C-level approval for high-value or critical documents
|
||||||
|
- **Legal**: Legal counsel approval for contracts and compliance documents
|
||||||
|
- **Technical**: Engineering leadership approval for technical specifications
|
||||||
|
|
||||||
|
## Document Types Supported
|
||||||
|
- Contracts and Purchase Orders
|
||||||
|
- Financial Statements
|
||||||
|
- Legal Agreements and NDAs
|
||||||
|
- HR Policies
|
||||||
|
- Technical Specifications
|
||||||
|
- Marketing Materials
|
||||||
|
- Standard Operating Procedures
|
||||||
|
- Training Materials
|
||||||
|
|
||||||
|
## Exception Handling
|
||||||
|
When issues arise during the review process, a CMMN case is created to manage:
|
||||||
|
- Format correction
|
||||||
|
- Missing information requests
|
||||||
|
- Reviewer reassignment
|
||||||
|
- Stakeholder escalation
|
||||||
|
- Resolution verification
|
||||||
7
demo-process/metadata/lifecycle.yaml
Normal file
7
demo-process/metadata/lifecycle.yaml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
kind: uapf.metadata.lifecycle
|
||||||
|
status: draft
|
||||||
|
effectiveFrom: null
|
||||||
|
effectiveUntil: null
|
||||||
|
reviewCycle: quarterly
|
||||||
|
lastReview: null
|
||||||
|
nextReview: null
|
||||||
7
demo-process/metadata/ownership.yaml
Normal file
7
demo-process/metadata/ownership.yaml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
kind: uapf.metadata.ownership
|
||||||
|
owners:
|
||||||
|
- type: team
|
||||||
|
id: "{{.RepoOwner}}"
|
||||||
|
name: "{{.RepoOwner}}"
|
||||||
|
created: "2025-01-01"
|
||||||
|
updated: "2025-01-01"
|
||||||
3
demo-process/resources/mappings.yaml
Normal file
3
demo-process/resources/mappings.yaml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
kind: uapf.resources.mapping
|
||||||
|
targets: []
|
||||||
|
bindings: []
|
||||||
25
demo-process/uapf.yaml
Normal file
25
demo-process/uapf.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
kind: uapf.package
|
||||||
|
id: uapf.validation-ready
|
||||||
|
name: Validation Ready Process
|
||||||
|
description: Process with validation schemas
|
||||||
|
level: 4
|
||||||
|
version: 0.1.0
|
||||||
|
includes: []
|
||||||
|
cornerstones:
|
||||||
|
bpmn: true
|
||||||
|
dmn: true
|
||||||
|
cmmn: true
|
||||||
|
resources: true
|
||||||
|
validation: true
|
||||||
|
paths:
|
||||||
|
bpmn: bpmn
|
||||||
|
dmn: dmn
|
||||||
|
cmmn: cmmn
|
||||||
|
resources: resources
|
||||||
|
metadata: metadata
|
||||||
|
validation: ../validation
|
||||||
|
owners:
|
||||||
|
- type: team
|
||||||
|
id: "{{.RepoOwner}}"
|
||||||
|
contact: "{{.RepoOwner}}@processgit.local"
|
||||||
|
lifecycle: draft
|
||||||
10
enterprise/enterprise.yaml
Normal file
10
enterprise/enterprise.yaml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
kind: uapf.enterprise.index
|
||||||
|
level: 0
|
||||||
|
enterprise:
|
||||||
|
id: "{{.RepoName}}"
|
||||||
|
name: "{{.RepoName}}"
|
||||||
|
description: Enterprise process collection for {{.RepoOwner}}
|
||||||
|
packages:
|
||||||
|
- ref: ../demo-process
|
||||||
|
level: 4
|
||||||
|
domain: operations
|
||||||
25
tools/validate.sh
Executable file
25
tools/validate.sh
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
log() {
|
||||||
|
printf '%s\n' "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
log "Checking required files"
|
||||||
|
REQUIRED_PATHS="enterprise/enterprise.index.json packages"
|
||||||
|
for path in $REQUIRED_PATHS; do
|
||||||
|
if [ ! -e "$path" ]; then
|
||||||
|
log "Missing required path: $path"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
log "Validating XML assets when xmllint is available"
|
||||||
|
if command -v xmllint >/dev/null 2>&1; then
|
||||||
|
find . -type f \( -name '*.bpmn' -o -name '*.dmn' -o -name '*.cmmn' \) -print0 |
|
||||||
|
xargs -0 -r -n1 xmllint --noout
|
||||||
|
else
|
||||||
|
log "xmllint not installed; skipping XML validation"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "Validation complete"
|
||||||
41
validation/schemas/README.md
Normal file
41
validation/schemas/README.md
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# Validation Schemas
|
||||||
|
|
||||||
|
This directory contains validation schemas for process artifacts.
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
Validation schemas ensure that process definitions, configurations, and resources conform to organizational standards and best practices.
|
||||||
|
|
||||||
|
## Schema Types
|
||||||
|
|
||||||
|
### BPMN Schemas
|
||||||
|
- Process model validation rules
|
||||||
|
- Task naming conventions
|
||||||
|
- Gateway configuration requirements
|
||||||
|
|
||||||
|
### DMN Schemas
|
||||||
|
- Decision table structure validation
|
||||||
|
- Input/output data type validation
|
||||||
|
- Hit policy compliance
|
||||||
|
|
||||||
|
### CMMN Schemas
|
||||||
|
- Case model validation rules
|
||||||
|
- Sentry and milestone configuration
|
||||||
|
- Stage dependency validation
|
||||||
|
|
||||||
|
### Resource Schemas
|
||||||
|
- Resource mapping validation
|
||||||
|
- Binding configuration rules
|
||||||
|
- Target definition standards
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
Schemas in this directory are automatically applied during:
|
||||||
|
- Process package validation
|
||||||
|
- CI/CD pipeline checks
|
||||||
|
- Pre-commit hooks
|
||||||
|
- Repository template instantiation
|
||||||
|
|
||||||
|
## Adding New Schemas
|
||||||
|
1. Create schema file in appropriate subdirectory
|
||||||
|
2. Follow JSON Schema or XML Schema standards
|
||||||
|
3. Document validation rules and examples
|
||||||
|
4. Update validation configuration to reference new schema
|
||||||
Reference in New Issue
Block a user