You've already forked uapf-decision-first
Import UAPF package
Initial template import
This commit is contained in:
5
.gitea/template
Normal file
5
.gitea/template
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# Expand placeholders across decision-first assets
|
||||||
|
README.md
|
||||||
|
decisions/**
|
||||||
|
packages/**
|
||||||
|
enterprise/**
|
||||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# {{.RepoName}}
|
||||||
|
|
||||||
|
UAPF decision-first template with a primary DMN asset and supporting process shell.
|
||||||
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
|
||||||
125
decisions/loan-approval/dmn/decision.dmn.xml
Normal file
125
decisions/loan-approval/dmn/decision.dmn.xml
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
<?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="LoanApprovalDecisions"
|
||||||
|
name="Loan Approval Decisions"
|
||||||
|
namespace="http://processgit.local/dmn">
|
||||||
|
|
||||||
|
<decision id="Decision_LoanApproval" name="Loan Approval">
|
||||||
|
<informationRequirement id="InfoReq_1">
|
||||||
|
<requiredDecision href="#Decision_RiskCategory"/>
|
||||||
|
</informationRequirement>
|
||||||
|
<decisionTable id="DecisionTable_LoanApproval">
|
||||||
|
<input id="Input_Risk" label="Risk Category">
|
||||||
|
<inputExpression id="InputExpression_Risk" typeRef="string">
|
||||||
|
<text>riskCategory</text>
|
||||||
|
</inputExpression>
|
||||||
|
</input>
|
||||||
|
<output id="Output_Approval" label="Loan Approved" name="loanApproved" typeRef="boolean"/>
|
||||||
|
<output id="Output_ReviewRequired" label="Review Required" name="reviewRequired" typeRef="boolean"/>
|
||||||
|
|
||||||
|
<rule id="Rule_1">
|
||||||
|
<inputEntry id="InputEntry_1_1">
|
||||||
|
<text>"LOW"</text>
|
||||||
|
</inputEntry>
|
||||||
|
<outputEntry id="OutputEntry_1_1">
|
||||||
|
<text>true</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_1_2">
|
||||||
|
<text>false</text>
|
||||||
|
</outputEntry>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<rule id="Rule_2">
|
||||||
|
<inputEntry id="InputEntry_2_1">
|
||||||
|
<text>"MEDIUM"</text>
|
||||||
|
</inputEntry>
|
||||||
|
<outputEntry id="OutputEntry_2_1">
|
||||||
|
<text>true</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_2_2">
|
||||||
|
<text>true</text>
|
||||||
|
</outputEntry>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<rule id="Rule_3">
|
||||||
|
<inputEntry id="InputEntry_3_1">
|
||||||
|
<text>"HIGH"</text>
|
||||||
|
</inputEntry>
|
||||||
|
<outputEntry id="OutputEntry_3_1">
|
||||||
|
<text>false</text>
|
||||||
|
</outputEntry>
|
||||||
|
<outputEntry id="OutputEntry_3_2">
|
||||||
|
<text>true</text>
|
||||||
|
</outputEntry>
|
||||||
|
</rule>
|
||||||
|
</decisionTable>
|
||||||
|
</decision>
|
||||||
|
|
||||||
|
<decision id="Decision_RiskCategory" name="Risk Category">
|
||||||
|
<informationRequirement id="InfoReq_2">
|
||||||
|
<requiredInput href="#InputData_CreditScore"/>
|
||||||
|
</informationRequirement>
|
||||||
|
<decisionTable id="DecisionTable_RiskCategory">
|
||||||
|
<input id="Input_CreditScore" label="Credit Score">
|
||||||
|
<inputExpression id="InputExpression_CreditScore" typeRef="number">
|
||||||
|
<text>creditScore</text>
|
||||||
|
</inputExpression>
|
||||||
|
</input>
|
||||||
|
<output id="Output_RiskCategory" label="Risk Category" name="riskCategory" typeRef="string"/>
|
||||||
|
|
||||||
|
<rule id="Rule_Risk_1">
|
||||||
|
<inputEntry id="InputEntry_Risk_1_1">
|
||||||
|
<text>>= 700</text>
|
||||||
|
</inputEntry>
|
||||||
|
<outputEntry id="OutputEntry_Risk_1_1">
|
||||||
|
<text>"LOW"</text>
|
||||||
|
</outputEntry>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<rule id="Rule_Risk_2">
|
||||||
|
<inputEntry id="InputEntry_Risk_2_1">
|
||||||
|
<text>[600..700)</text>
|
||||||
|
</inputEntry>
|
||||||
|
<outputEntry id="OutputEntry_Risk_2_1">
|
||||||
|
<text>"MEDIUM"</text>
|
||||||
|
</outputEntry>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<rule id="Rule_Risk_3">
|
||||||
|
<inputEntry id="InputEntry_Risk_3_1">
|
||||||
|
<text>< 600</text>
|
||||||
|
</inputEntry>
|
||||||
|
<outputEntry id="OutputEntry_Risk_3_1">
|
||||||
|
<text>"HIGH"</text>
|
||||||
|
</outputEntry>
|
||||||
|
</rule>
|
||||||
|
</decisionTable>
|
||||||
|
</decision>
|
||||||
|
|
||||||
|
<inputData id="InputData_CreditScore" name="Credit Score"/>
|
||||||
|
|
||||||
|
<dmndi:DMNDI>
|
||||||
|
<dmndi:DMNDiagram id="DMNDiagram_1">
|
||||||
|
<dmndi:DMNShape id="DMNShape_Decision_LoanApproval" dmnElementRef="Decision_LoanApproval">
|
||||||
|
<dc:Bounds x="160" y="80" width="180" height="80"/>
|
||||||
|
</dmndi:DMNShape>
|
||||||
|
<dmndi:DMNShape id="DMNShape_Decision_RiskCategory" dmnElementRef="Decision_RiskCategory">
|
||||||
|
<dc:Bounds x="160" y="220" width="180" height="80"/>
|
||||||
|
</dmndi:DMNShape>
|
||||||
|
<dmndi:DMNShape id="DMNShape_Input_CreditScore" dmnElementRef="InputData_CreditScore">
|
||||||
|
<dc:Bounds x="187" y="360" width="125" height="45"/>
|
||||||
|
</dmndi:DMNShape>
|
||||||
|
<dmndi:DMNEdge id="DMNEdge_InfoReq_1" dmnElementRef="InfoReq_1">
|
||||||
|
<di:waypoint x="250" y="220"/>
|
||||||
|
<di:waypoint x="250" y="160"/>
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="DMNEdge_InfoReq_2" dmnElementRef="InfoReq_2">
|
||||||
|
<di:waypoint x="250" y="360"/>
|
||||||
|
<di:waypoint x="250" y="300"/>
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
</dmndi:DMNDiagram>
|
||||||
|
</dmndi:DMNDI>
|
||||||
|
</definitions>
|
||||||
16
decisions/loan-approval/metadata/lifecycle.yaml
Normal file
16
decisions/loan-approval/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 decision logic creation
|
||||||
|
|
||||||
|
reviews:
|
||||||
|
nextReview: "2026-04-10"
|
||||||
|
frequency: quarterly
|
||||||
|
|
||||||
|
approvals: []
|
||||||
13
decisions/loan-approval/metadata/ownership.yaml
Normal file
13
decisions/loan-approval/metadata/ownership.yaml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
owner:
|
||||||
|
team: "{{.RepoOwner}}"
|
||||||
|
contact: "{{.RepoOwner}}@processgit.local"
|
||||||
|
department: Risk Management
|
||||||
|
|
||||||
|
stakeholders:
|
||||||
|
- name: Credit Team
|
||||||
|
role: Decision Logic Owner
|
||||||
|
contact: credit@processgit.local
|
||||||
|
|
||||||
|
- name: Compliance
|
||||||
|
role: Regulatory Review
|
||||||
|
contact: compliance@processgit.local
|
||||||
9
decisions/loan-approval/resources/mappings.yaml
Normal file
9
decisions/loan-approval/resources/mappings.yaml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
version: "1.0"
|
||||||
|
mappings:
|
||||||
|
- decisionId: Decision_RiskCategory
|
||||||
|
type: calculation
|
||||||
|
description: Calculates risk category based on credit score
|
||||||
|
|
||||||
|
- decisionId: Decision_LoanApproval
|
||||||
|
type: business-rule
|
||||||
|
description: Determines loan approval based on risk category
|
||||||
18
decisions/loan-approval/uapf.yaml
Normal file
18
decisions/loan-approval/uapf.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
kind: uapf.decision
|
||||||
|
id: uapf.loan-approval-decision
|
||||||
|
name: Loan Approval Decision
|
||||||
|
description: Reusable loan approval decision logic
|
||||||
|
level: 4
|
||||||
|
version: 0.1.0
|
||||||
|
cornerstones:
|
||||||
|
dmn: true
|
||||||
|
resources: true
|
||||||
|
paths:
|
||||||
|
dmn: dmn
|
||||||
|
resources: resources
|
||||||
|
metadata: metadata
|
||||||
|
owners:
|
||||||
|
- type: team
|
||||||
|
id: "{{.RepoOwner}}"
|
||||||
|
contact: "{{.RepoOwner}}@processgit.local"
|
||||||
|
lifecycle: draft
|
||||||
13
enterprise/enterprise.yaml
Normal file
13
enterprise/enterprise.yaml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
kind: uapf.enterprise.index
|
||||||
|
level: 0
|
||||||
|
enterprise:
|
||||||
|
id: "{{.RepoName}}"
|
||||||
|
name: "{{.RepoName}}"
|
||||||
|
description: Decision-first architecture with reusable decisions
|
||||||
|
packages:
|
||||||
|
- ref: ../decisions/loan-approval
|
||||||
|
level: 4
|
||||||
|
domain: decisioning
|
||||||
|
- ref: ../decision-process
|
||||||
|
level: 4
|
||||||
|
domain: operations
|
||||||
Reference in New Issue
Block a user