You've already forked uapf-decision-first
Import UAPF package
Initial template import
This commit is contained in:
142
decision-process/bpmn/process.bpmn.xml
Normal file
142
decision-process/bpmn/process.bpmn.xml
Normal file
@@ -0,0 +1,142 @@
|
||||
<?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"
|
||||
id="Definitions_LoanProcess"
|
||||
targetNamespace="http://bpmn.io/schema/bpmn">
|
||||
<bpmn:process id="LoanApplicationProcess" name="Loan Application Process" isExecutable="true">
|
||||
<bpmn:startEvent id="StartEvent_1" name="Loan Application Received">
|
||||
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_1" targetRef="Task_Validate"/>
|
||||
|
||||
<bpmn:userTask id="Task_Validate" name="Validate Application">
|
||||
<bpmn:incoming>Flow_1</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_2</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_2" sourceRef="Task_Validate" targetRef="Task_CheckCredit"/>
|
||||
|
||||
<bpmn:serviceTask id="Task_CheckCredit" name="Check Credit Score">
|
||||
<bpmn:incoming>Flow_2</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_3</bpmn:outgoing>
|
||||
</bpmn:serviceTask>
|
||||
<bpmn:sequenceFlow id="Flow_3" sourceRef="Task_CheckCredit" targetRef="Task_ApprovalDecision"/>
|
||||
|
||||
<bpmn:businessRuleTask id="Task_ApprovalDecision" name="Loan Approval Decision">
|
||||
<bpmn:incoming>Flow_3</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_4</bpmn:outgoing>
|
||||
</bpmn:businessRuleTask>
|
||||
<bpmn:sequenceFlow id="Flow_4" sourceRef="Task_ApprovalDecision" targetRef="Gateway_Approved"/>
|
||||
|
||||
<bpmn:exclusiveGateway id="Gateway_Approved" name="Approved?">
|
||||
<bpmn:incoming>Flow_4</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_Approved</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_Rejected</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:sequenceFlow id="Flow_Approved" name="Yes" sourceRef="Gateway_Approved" targetRef="Task_Disburse"/>
|
||||
<bpmn:sequenceFlow id="Flow_Rejected" name="No" sourceRef="Gateway_Approved" targetRef="Task_Reject"/>
|
||||
|
||||
<bpmn:serviceTask id="Task_Disburse" name="Disburse Loan">
|
||||
<bpmn:incoming>Flow_Approved</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_5</bpmn:outgoing>
|
||||
</bpmn:serviceTask>
|
||||
<bpmn:sequenceFlow id="Flow_5" sourceRef="Task_Disburse" targetRef="EndEvent_Approved"/>
|
||||
|
||||
<bpmn:sendTask id="Task_Reject" name="Send Rejection Notice">
|
||||
<bpmn:incoming>Flow_Rejected</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_6</bpmn:outgoing>
|
||||
</bpmn:sendTask>
|
||||
<bpmn:sequenceFlow id="Flow_6" sourceRef="Task_Reject" targetRef="EndEvent_Rejected"/>
|
||||
|
||||
<bpmn:endEvent id="EndEvent_Approved" name="Loan Approved">
|
||||
<bpmn:incoming>Flow_5</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
|
||||
<bpmn:endEvent id="EndEvent_Rejected" name="Loan Rejected">
|
||||
<bpmn:incoming>Flow_6</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
</bpmn:process>
|
||||
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="LoanApplicationProcess">
|
||||
<bpmndi:BPMNShape id="StartEvent_1_di" bpmnElement="StartEvent_1">
|
||||
<dc:Bounds x="152" y="102" width="36" height="36"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="134" y="145" width="73" height="27"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Task_Validate_di" bpmnElement="Task_Validate">
|
||||
<dc:Bounds x="240" y="80" width="100" height="80"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Task_CheckCredit_di" bpmnElement="Task_CheckCredit">
|
||||
<dc:Bounds x="400" y="80" width="100" height="80"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Task_ApprovalDecision_di" bpmnElement="Task_ApprovalDecision">
|
||||
<dc:Bounds x="560" y="80" width="100" height="80"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_Approved_di" bpmnElement="Gateway_Approved" isMarkerVisible="true">
|
||||
<dc:Bounds x="715" y="95" width="50" height="50"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="714" y="71" width="53" height="14"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Task_Disburse_di" bpmnElement="Task_Disburse">
|
||||
<dc:Bounds x="820" y="80" width="100" height="80"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Task_Reject_di" bpmnElement="Task_Reject">
|
||||
<dc:Bounds x="690" y="200" width="100" height="80"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="EndEvent_Approved_di" bpmnElement="EndEvent_Approved">
|
||||
<dc:Bounds x="982" y="102" width="36" height="36"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="963" y="145" width="74" height="14"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="EndEvent_Rejected_di" bpmnElement="EndEvent_Rejected">
|
||||
<dc:Bounds x="862" y="222" width="36" height="36"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="845" y="265" width="71" height="14"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
|
||||
<di:waypoint x="188" y="120"/>
|
||||
<di:waypoint x="240" y="120"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2">
|
||||
<di:waypoint x="340" y="120"/>
|
||||
<di:waypoint x="400" y="120"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3">
|
||||
<di:waypoint x="500" y="120"/>
|
||||
<di:waypoint x="560" y="120"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_4_di" bpmnElement="Flow_4">
|
||||
<di:waypoint x="660" y="120"/>
|
||||
<di:waypoint x="715" y="120"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_Approved_di" bpmnElement="Flow_Approved">
|
||||
<di:waypoint x="765" y="120"/>
|
||||
<di:waypoint x="820" y="120"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="783" y="102" width="19" height="14"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_Rejected_di" bpmnElement="Flow_Rejected">
|
||||
<di:waypoint x="740" y="145"/>
|
||||
<di:waypoint x="740" y="200"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="748" y="170" width="15" height="14"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_5_di" bpmnElement="Flow_5">
|
||||
<di:waypoint x="920" y="120"/>
|
||||
<di:waypoint x="982" y="120"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_6_di" bpmnElement="Flow_6">
|
||||
<di:waypoint x="790" y="240"/>
|
||||
<di:waypoint x="862" y="240"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</bpmn:definitions>
|
||||
92
decision-process/cmmn/case.cmmn.xml
Normal file
92
decision-process/cmmn/case.cmmn.xml
Normal file
@@ -0,0 +1,92 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<definitions xmlns="http://www.omg.org/spec/CMMN/20151109/MODEL"
|
||||
xmlns:dc="http://www.omg.org/spec/CMMN/20151109/DC"
|
||||
xmlns:di="http://www.omg.org/spec/CMMN/20151109/DI"
|
||||
xmlns:cmmndi="http://www.omg.org/spec/CMMN/20151109/CMMNDI"
|
||||
id="LoanApplicationCase"
|
||||
targetNamespace="http://processgit.local/cmmn">
|
||||
|
||||
<case id="Case_LoanApplication" name="Loan Application Case">
|
||||
<casePlanModel id="CasePlanModel_1" name="Loan Application Management">
|
||||
|
||||
<planItem id="PlanItem_Validate" definitionRef="HumanTask_Validate">
|
||||
<entryCriterion id="EntryCriterion_1" sentryRef="Sentry_Start"/>
|
||||
</planItem>
|
||||
|
||||
<planItem id="PlanItem_CreditCheck" definitionRef="Task_CreditCheck">
|
||||
<entryCriterion id="EntryCriterion_2" sentryRef="Sentry_AfterValidation"/>
|
||||
</planItem>
|
||||
|
||||
<planItem id="PlanItem_Decision" definitionRef="Task_Decision">
|
||||
<entryCriterion id="EntryCriterion_3" sentryRef="Sentry_AfterCredit"/>
|
||||
</planItem>
|
||||
|
||||
<planItem id="PlanItem_Disburse" definitionRef="Task_Disburse">
|
||||
<entryCriterion id="EntryCriterion_4" sentryRef="Sentry_Approved"/>
|
||||
</planItem>
|
||||
|
||||
<sentry id="Sentry_Start">
|
||||
<planItemOnPart id="OnPart_1" sourceRef="PlanItem_Validate">
|
||||
<standardEvent>create</standardEvent>
|
||||
</planItemOnPart>
|
||||
</sentry>
|
||||
|
||||
<sentry id="Sentry_AfterValidation">
|
||||
<planItemOnPart id="OnPart_2" sourceRef="PlanItem_Validate">
|
||||
<standardEvent>complete</standardEvent>
|
||||
</planItemOnPart>
|
||||
</sentry>
|
||||
|
||||
<sentry id="Sentry_AfterCredit">
|
||||
<planItemOnPart id="OnPart_3" sourceRef="PlanItem_CreditCheck">
|
||||
<standardEvent>complete</standardEvent>
|
||||
</planItemOnPart>
|
||||
</sentry>
|
||||
|
||||
<sentry id="Sentry_Approved">
|
||||
<planItemOnPart id="OnPart_4" sourceRef="PlanItem_Decision">
|
||||
<standardEvent>complete</standardEvent>
|
||||
</planItemOnPart>
|
||||
<ifPart id="IfPart_1">
|
||||
<condition id="Condition_1">
|
||||
<body>loanApproved == true</body>
|
||||
</condition>
|
||||
</ifPart>
|
||||
</sentry>
|
||||
|
||||
<humanTask id="HumanTask_Validate" name="Validate Application"/>
|
||||
<task id="Task_CreditCheck" name="Check Credit Score"/>
|
||||
<task id="Task_Decision" name="Loan Approval Decision"/>
|
||||
<task id="Task_Disburse" name="Disburse Loan"/>
|
||||
</casePlanModel>
|
||||
</case>
|
||||
|
||||
<cmmndi:CMMNDI>
|
||||
<cmmndi:CMMNDiagram id="CMMNDiagram_1">
|
||||
<cmmndi:CMMNShape id="CMMNShape_CasePlan_1" cmmnElementRef="CasePlanModel_1">
|
||||
<dc:Bounds x="50" y="50" width="600" height="300"/>
|
||||
</cmmndi:CMMNShape>
|
||||
<cmmndi:CMMNShape id="CMMNShape_PlanItem_1" cmmnElementRef="PlanItem_Validate">
|
||||
<dc:Bounds x="100" y="100" width="100" height="80"/>
|
||||
</cmmndi:CMMNShape>
|
||||
<cmmndi:CMMNShape id="CMMNShape_PlanItem_2" cmmnElementRef="PlanItem_CreditCheck">
|
||||
<dc:Bounds x="250" y="100" width="100" height="80"/>
|
||||
</cmmndi:CMMNShape>
|
||||
<cmmndi:CMMNShape id="CMMNShape_PlanItem_3" cmmnElementRef="PlanItem_Decision">
|
||||
<dc:Bounds x="400" y="100" width="100" height="80"/>
|
||||
</cmmndi:CMMNShape>
|
||||
<cmmndi:CMMNShape id="CMMNShape_PlanItem_4" cmmnElementRef="PlanItem_Disburse">
|
||||
<dc:Bounds x="400" y="220" 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>
|
||||
</definitions>
|
||||
59
decision-process/dmn/decisions.dmn.xml
Normal file
59
decision-process/dmn/decisions.dmn.xml
Normal file
@@ -0,0 +1,59 @@
|
||||
<?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="ProcessDecisions"
|
||||
name="Process Decisions"
|
||||
namespace="http://processgit.local/dmn">
|
||||
|
||||
<!-- This DMN references the primary loan-approval decision -->
|
||||
<decision id="Decision_ProcessApproval" name="Process Approval Decision">
|
||||
<informationRequirement id="InfoReq_1">
|
||||
<requiredInput href="#InputData_ApplicationData"/>
|
||||
</informationRequirement>
|
||||
<decisionTable id="DecisionTable_ProcessApproval">
|
||||
<input id="Input_1" label="Application Complete">
|
||||
<inputExpression id="InputExpression_1" typeRef="boolean">
|
||||
<text>applicationComplete</text>
|
||||
</inputExpression>
|
||||
</input>
|
||||
<output id="Output_1" label="Proceed to Decision" name="proceedToDecision" typeRef="boolean"/>
|
||||
|
||||
<rule id="Rule_1">
|
||||
<inputEntry id="InputEntry_1_1">
|
||||
<text>true</text>
|
||||
</inputEntry>
|
||||
<outputEntry id="OutputEntry_1_1">
|
||||
<text>true</text>
|
||||
</outputEntry>
|
||||
</rule>
|
||||
|
||||
<rule id="Rule_2">
|
||||
<inputEntry id="InputEntry_2_1">
|
||||
<text>false</text>
|
||||
</inputEntry>
|
||||
<outputEntry id="OutputEntry_2_1">
|
||||
<text>false</text>
|
||||
</outputEntry>
|
||||
</rule>
|
||||
</decisionTable>
|
||||
</decision>
|
||||
|
||||
<inputData id="InputData_ApplicationData" name="Application Data"/>
|
||||
|
||||
<dmndi:DMNDI>
|
||||
<dmndi:DMNDiagram id="DMNDiagram_1">
|
||||
<dmndi:DMNShape id="DMNShape_Decision_1" dmnElementRef="Decision_ProcessApproval">
|
||||
<dc:Bounds x="160" y="80" width="180" height="80"/>
|
||||
</dmndi:DMNShape>
|
||||
<dmndi:DMNShape id="DMNShape_Input_1" dmnElementRef="InputData_ApplicationData">
|
||||
<dc:Bounds x="187" y="220" width="125" height="45"/>
|
||||
</dmndi:DMNShape>
|
||||
<dmndi:DMNEdge id="DMNEdge_1" dmnElementRef="InfoReq_1">
|
||||
<di:waypoint x="250" y="220"/>
|
||||
<di:waypoint x="250" y="160"/>
|
||||
</dmndi:DMNEdge>
|
||||
</dmndi:DMNDiagram>
|
||||
</dmndi:DMNDI>
|
||||
</definitions>
|
||||
16
decision-process/metadata/lifecycle.yaml
Normal file
16
decision-process/metadata/lifecycle.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
status: draft
|
||||
created: "2026-01-10"
|
||||
lastModified: "2026-01-10"
|
||||
version: 0.1.0
|
||||
|
||||
history:
|
||||
- version: 0.1.0
|
||||
date: "2026-01-10"
|
||||
author: "{{.RepoOwner}}"
|
||||
changes: Initial template creation with decision-first architecture
|
||||
|
||||
reviews:
|
||||
nextReview: "2026-04-10"
|
||||
frequency: quarterly
|
||||
|
||||
approvals: []
|
||||
17
decision-process/metadata/ownership.yaml
Normal file
17
decision-process/metadata/ownership.yaml
Normal file
@@ -0,0 +1,17 @@
|
||||
owner:
|
||||
team: "{{.RepoOwner}}"
|
||||
contact: "{{.RepoOwner}}@processgit.local"
|
||||
department: Lending Operations
|
||||
|
||||
stakeholders:
|
||||
- name: Credit Team
|
||||
role: Decision Logic Owner
|
||||
contact: credit@processgit.local
|
||||
|
||||
- name: Operations Team
|
||||
role: Process Owner
|
||||
contact: ops@processgit.local
|
||||
|
||||
- name: Compliance
|
||||
role: Regulatory Review
|
||||
contact: compliance@processgit.local
|
||||
26
decision-process/resources/mappings.yaml
Normal file
26
decision-process/resources/mappings.yaml
Normal file
@@ -0,0 +1,26 @@
|
||||
version: "1.0"
|
||||
mappings:
|
||||
- taskId: Task_Validate
|
||||
type: human
|
||||
resource: loan-officer
|
||||
role: Application Reviewer
|
||||
|
||||
- taskId: Task_CheckCredit
|
||||
type: system
|
||||
resource: credit-bureau-api
|
||||
endpoint: /api/credit-score
|
||||
|
||||
- taskId: Task_ApprovalDecision
|
||||
type: decision
|
||||
resource: loan-approval-decision
|
||||
reference: ../decisions/loan-approval
|
||||
|
||||
- taskId: Task_Disburse
|
||||
type: system
|
||||
resource: payment-system
|
||||
endpoint: /api/disburse
|
||||
|
||||
- taskId: Task_Reject
|
||||
type: agent
|
||||
resource: notification-service
|
||||
channel: email
|
||||
24
decision-process/uapf.yaml
Normal file
24
decision-process/uapf.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
kind: uapf.package
|
||||
id: uapf.decision-process
|
||||
name: Decision-First Loan Process
|
||||
description: Loan application process using reusable decision logic
|
||||
level: 4
|
||||
version: 0.1.0
|
||||
includes:
|
||||
- ../decisions/loan-approval
|
||||
cornerstones:
|
||||
bpmn: true
|
||||
dmn: true
|
||||
cmmn: true
|
||||
resources: true
|
||||
paths:
|
||||
bpmn: bpmn
|
||||
dmn: dmn
|
||||
cmmn: cmmn
|
||||
resources: resources
|
||||
metadata: metadata
|
||||
owners:
|
||||
- type: team
|
||||
id: "{{.RepoOwner}}"
|
||||
contact: "{{.RepoOwner}}@processgit.local"
|
||||
lifecycle: draft
|
||||
Reference in New Issue
Block a user