1
0

Initial template import

This commit is contained in:
ProcessGit Templates
2026-02-05 21:19:43 +00:00
commit b4d44661e0
15 changed files with 1176 additions and 0 deletions

View 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>

View 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 &gt; 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>

View 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>&gt;= 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>&lt; 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>

View 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

View File

@@ -0,0 +1,7 @@
kind: uapf.metadata.lifecycle
status: draft
effectiveFrom: null
effectiveUntil: null
reviewCycle: quarterly
lastReview: null
nextReview: null

View File

@@ -0,0 +1,7 @@
kind: uapf.metadata.ownership
owners:
- type: team
id: "{{.RepoOwner}}"
name: "{{.RepoOwner}}"
created: "2025-01-01"
updated: "2025-01-01"

View File

@@ -0,0 +1,3 @@
kind: uapf.resources.mapping
targets: []
bindings: []

25
demo-process/uapf.yaml Normal file
View 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