You've already forked uapf-multi-process-package
Import UAPF package
Initial template import
This commit is contained in:
82
processes/demo-process1/bpmn/process.bpmn.xml
Normal file
82
processes/demo-process1/bpmn/process.bpmn.xml
Normal file
@@ -0,0 +1,82 @@
|
||||
<?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:camunda="http://camunda.org/schema/1.0/bpmn"
|
||||
id="Definitions_OrderFulfillment"
|
||||
targetNamespace="http://bpmn.io/schema/bpmn">
|
||||
<bpmn:process id="OrderFulfillmentProcess" name="Order Fulfillment Process" isExecutable="true">
|
||||
|
||||
<bpmn:startEvent id="StartEvent_OrderReceived" name="Order Received">
|
||||
<bpmn:outgoing>Flow_ToValidateOrder</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToValidateOrder" sourceRef="StartEvent_OrderReceived" targetRef="Task_ValidateOrder"/>
|
||||
|
||||
<bpmn:userTask id="Task_ValidateOrder" name="Validate Order" camunda:assignee="order.validator">
|
||||
<bpmn:incoming>Flow_ToValidateOrder</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_ToCheckInventory</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToCheckInventory" sourceRef="Task_ValidateOrder" targetRef="Task_CheckInventory"/>
|
||||
|
||||
<bpmn:serviceTask id="Task_CheckInventory" name="Check Inventory" camunda:type="external" camunda:topic="inventory-check">
|
||||
<bpmn:incoming>Flow_ToCheckInventory</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_ToInventoryGateway</bpmn:outgoing>
|
||||
</bpmn:serviceTask>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToInventoryGateway" sourceRef="Task_CheckInventory" targetRef="Gateway_InventoryAvailable"/>
|
||||
|
||||
<bpmn:exclusiveGateway id="Gateway_InventoryAvailable" name="Inventory Available?">
|
||||
<bpmn:incoming>Flow_ToInventoryGateway</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_ToPickPack</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_ToBackorder</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToPickPack" name="Yes" sourceRef="Gateway_InventoryAvailable" targetRef="Task_PickAndPack">
|
||||
<bpmn:conditionExpression>#{inventoryAvailable == true}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToBackorder" name="No" sourceRef="Gateway_InventoryAvailable" targetRef="Task_CreateBackorder">
|
||||
<bpmn:conditionExpression>#{inventoryAvailable == false}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
|
||||
<bpmn:userTask id="Task_PickAndPack" name="Pick and Pack Items" camunda:assignee="warehouse.worker">
|
||||
<bpmn:incoming>Flow_ToPickPack</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_ToShipOrder</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToShipOrder" sourceRef="Task_PickAndPack" targetRef="Task_ShipOrder"/>
|
||||
|
||||
<bpmn:serviceTask id="Task_ShipOrder" name="Ship Order" camunda:type="external" camunda:topic="shipping">
|
||||
<bpmn:incoming>Flow_ToShipOrder</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_ToOrderComplete</bpmn:outgoing>
|
||||
</bpmn:serviceTask>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToOrderComplete" sourceRef="Task_ShipOrder" targetRef="EndEvent_OrderComplete"/>
|
||||
|
||||
<bpmn:endEvent id="EndEvent_OrderComplete" name="Order Complete">
|
||||
<bpmn:incoming>Flow_ToOrderComplete</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
|
||||
<bpmn:serviceTask id="Task_CreateBackorder" name="Create Backorder" camunda:type="external" camunda:topic="backorder">
|
||||
<bpmn:incoming>Flow_ToBackorder</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_ToNotifyCustomer</bpmn:outgoing>
|
||||
</bpmn:serviceTask>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToNotifyCustomer" sourceRef="Task_CreateBackorder" targetRef="Task_NotifyCustomer"/>
|
||||
|
||||
<bpmn:sendTask id="Task_NotifyCustomer" name="Notify Customer" camunda:type="mail">
|
||||
<bpmn:incoming>Flow_ToNotifyCustomer</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_ToBackorderComplete</bpmn:outgoing>
|
||||
</bpmn:sendTask>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToBackorderComplete" sourceRef="Task_NotifyCustomer" targetRef="EndEvent_BackorderCreated"/>
|
||||
|
||||
<bpmn:endEvent id="EndEvent_BackorderCreated" name="Backorder Created">
|
||||
<bpmn:incoming>Flow_ToBackorderComplete</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
|
||||
</bpmn:process>
|
||||
</bpmn:definitions>
|
||||
129
processes/demo-process1/cmmn/case.cmmn.xml
Normal file
129
processes/demo-process1/cmmn/case.cmmn.xml
Normal file
@@ -0,0 +1,129 @@
|
||||
<?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:camunda="http://camunda.org/schema/1.0/cmmn"
|
||||
id="Definitions_OrderException"
|
||||
targetNamespace="http://bpmn.io/schema/cmmn">
|
||||
|
||||
<cmmn:case id="Case_OrderExceptionHandling" name="Order Exception Handling">
|
||||
<cmmn:casePlanModel id="CasePlanModel_OrderException" name="Order Exception Case">
|
||||
|
||||
<!-- Stage: Investigation -->
|
||||
<cmmn:stage id="Stage_Investigation" name="Investigation">
|
||||
<cmmn:planItem id="PlanItem_ReviewOrder" definitionRef="Task_ReviewOrder"/>
|
||||
<cmmn:planItem id="PlanItem_ContactCustomer" definitionRef="Task_ContactCustomer"/>
|
||||
<cmmn:planItem id="PlanItem_CheckInventory" definitionRef="Task_CheckInventory"/>
|
||||
</cmmn:stage>
|
||||
|
||||
<!-- Stage: Resolution -->
|
||||
<cmmn:stage id="Stage_Resolution" name="Resolution">
|
||||
<cmmn:planItem id="PlanItem_DecideResolution" definitionRef="Task_DecideResolution"/>
|
||||
<cmmn:planItem id="PlanItem_ProcessRefund" definitionRef="Task_ProcessRefund"/>
|
||||
<cmmn:planItem id="PlanItem_ArrangeReplacement" definitionRef="Task_ArrangeReplacement"/>
|
||||
<cmmn:planItem id="PlanItem_EscalateToManager" definitionRef="Task_EscalateToManager"/>
|
||||
<cmmn:entryCriterion id="EntryCriterion_ResolutionStart" sentryRef="Sentry_InvestigationComplete"/>
|
||||
</cmmn:stage>
|
||||
|
||||
<!-- Stage: Closure -->
|
||||
<cmmn:stage id="Stage_Closure" name="Closure">
|
||||
<cmmn:planItem id="PlanItem_NotifyCustomer" definitionRef="Task_NotifyCustomer"/>
|
||||
<cmmn:planItem id="PlanItem_UpdateRecords" definitionRef="Task_UpdateRecords"/>
|
||||
<cmmn:planItem id="PlanItem_CloseCase" definitionRef="Task_CloseCase"/>
|
||||
<cmmn:entryCriterion id="EntryCriterion_ClosureStart" sentryRef="Sentry_ResolutionComplete"/>
|
||||
</cmmn:stage>
|
||||
|
||||
<!-- Tasks -->
|
||||
<cmmn:humanTask id="Task_ReviewOrder" name="Review Order Details" camunda:assignee="order.specialist"/>
|
||||
|
||||
<cmmn:humanTask id="Task_ContactCustomer" name="Contact Customer" camunda:assignee="customer.service"/>
|
||||
|
||||
<cmmn:humanTask id="Task_CheckInventory" name="Check Inventory Status" camunda:assignee="warehouse.manager"/>
|
||||
|
||||
<cmmn:humanTask id="Task_DecideResolution" name="Decide Resolution" camunda:assignee="order.specialist" isBlocking="true"/>
|
||||
|
||||
<cmmn:humanTask id="Task_ProcessRefund" name="Process Refund" camunda:assignee="finance.clerk"/>
|
||||
|
||||
<cmmn:humanTask id="Task_ArrangeReplacement" name="Arrange Replacement" camunda:assignee="order.specialist"/>
|
||||
|
||||
<cmmn:humanTask id="Task_EscalateToManager" name="Escalate to Manager" camunda:assignee="order.manager"/>
|
||||
|
||||
<cmmn:humanTask id="Task_NotifyCustomer" name="Notify Customer of Resolution" camunda:assignee="customer.service"/>
|
||||
|
||||
<cmmn:processTask id="Task_UpdateRecords" name="Update Records" camunda:processRef="UpdateRecordsProcess"/>
|
||||
|
||||
<cmmn:humanTask id="Task_CloseCase" name="Close Case" camunda:assignee="order.specialist"/>
|
||||
|
||||
<!-- Sentries -->
|
||||
<cmmn:sentry id="Sentry_InvestigationComplete">
|
||||
<cmmn:planItemOnPart id="OnPart_InvestigationComplete" sourceRef="PlanItem_ReviewOrder">
|
||||
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||
</cmmn:planItemOnPart>
|
||||
</cmmn:sentry>
|
||||
|
||||
<cmmn:sentry id="Sentry_ResolutionComplete">
|
||||
<cmmn:planItemOnPart id="OnPart_ResolutionComplete" sourceRef="PlanItem_DecideResolution">
|
||||
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||
</cmmn:planItemOnPart>
|
||||
</cmmn:sentry>
|
||||
|
||||
<!-- Milestone -->
|
||||
<cmmn:planItem id="PlanItem_ExceptionResolved" definitionRef="Milestone_ExceptionResolved">
|
||||
<cmmn:entryCriterion id="EntryCriterion_MilestoneReached" sentryRef="Sentry_CaseComplete"/>
|
||||
</cmmn:planItem>
|
||||
|
||||
<cmmn:milestone id="Milestone_ExceptionResolved" name="Exception Resolved"/>
|
||||
|
||||
<cmmn:sentry id="Sentry_CaseComplete">
|
||||
<cmmn:planItemOnPart id="OnPart_CaseComplete" sourceRef="PlanItem_CloseCase">
|
||||
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||
</cmmn:planItemOnPart>
|
||||
</cmmn:sentry>
|
||||
|
||||
</cmmn:casePlanModel>
|
||||
</cmmn:case>
|
||||
|
||||
<cmmndi:CMMNDI>
|
||||
<cmmndi:CMMNDiagram id="CMMNDiagram_1">
|
||||
<!-- Case Plan Model Container -->
|
||||
<cmmndi:CMMNShape id="CasePlanModel_OrderException_di" cmmnElementRef="CasePlanModel_OrderException">
|
||||
<dc:Bounds x="100" y="50" width="900" height="400"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<!-- Stage: Investigation -->
|
||||
<cmmndi:CMMNShape id="Stage_Investigation_di" cmmnElementRef="Stage_Investigation" isExpanded="true">
|
||||
<dc:Bounds x="150" y="100" width="250" height="150"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<!-- Stage: Resolution -->
|
||||
<cmmndi:CMMNShape id="Stage_Resolution_di" cmmnElementRef="Stage_Resolution" isExpanded="true">
|
||||
<dc:Bounds x="450" y="100" width="250" height="150"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<!-- Stage: Closure -->
|
||||
<cmmndi:CMMNShape id="Stage_Closure_di" cmmnElementRef="Stage_Closure" isExpanded="true">
|
||||
<dc:Bounds x="750" y="100" width="200" height="150"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<!-- Milestone -->
|
||||
<cmmndi:CMMNShape id="PlanItem_ExceptionResolved_di" cmmnElementRef="PlanItem_ExceptionResolved">
|
||||
<dc:Bounds x="850" y="320" width="100" height="80"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<!-- Entry Criteria -->
|
||||
<cmmndi:CMMNShape id="EntryCriterion_ResolutionStart_di" cmmnElementRef="EntryCriterion_ResolutionStart">
|
||||
<dc:Bounds x="440" y="161" width="20" height="28"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<cmmndi:CMMNShape id="EntryCriterion_ClosureStart_di" cmmnElementRef="EntryCriterion_ClosureStart">
|
||||
<dc:Bounds x="740" y="161" width="20" height="28"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<cmmndi:CMMNShape id="EntryCriterion_MilestoneReached_di" cmmnElementRef="EntryCriterion_MilestoneReached">
|
||||
<dc:Bounds x="840" y="346" width="20" height="28"/>
|
||||
</cmmndi:CMMNShape>
|
||||
</cmmndi:CMMNDiagram>
|
||||
</cmmndi:CMMNDI>
|
||||
|
||||
</cmmn:definitions>
|
||||
134
processes/demo-process1/dmn/decisions.dmn.xml
Normal file
134
processes/demo-process1/dmn/decisions.dmn.xml
Normal file
@@ -0,0 +1,134 @@
|
||||
<?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"
|
||||
xmlns:camunda="http://camunda.org/schema/1.0/dmn"
|
||||
id="Definitions_ShippingMethod"
|
||||
name="Shipping Method Decisions"
|
||||
namespace="http://camunda.org/schema/1.0/dmn">
|
||||
|
||||
<decision id="Decision_ShippingMethod" name="Determine Shipping Method">
|
||||
<decisionTable id="DecisionTable_ShippingMethod" hitPolicy="FIRST">
|
||||
|
||||
<input id="Input_OrderValue" label="Order Value" camunda:inputVariable="orderValue">
|
||||
<inputExpression id="InputExpression_OrderValue" typeRef="double">
|
||||
<text>orderValue</text>
|
||||
</inputExpression>
|
||||
</input>
|
||||
|
||||
<input id="Input_CustomerTier" label="Customer Tier" camunda:inputVariable="customerTier">
|
||||
<inputExpression id="InputExpression_CustomerTier" typeRef="string">
|
||||
<text>customerTier</text>
|
||||
</inputExpression>
|
||||
</input>
|
||||
|
||||
<input id="Input_Destination" label="Destination" camunda:inputVariable="destination">
|
||||
<inputExpression id="InputExpression_Destination" typeRef="string">
|
||||
<text>destination</text>
|
||||
</inputExpression>
|
||||
</input>
|
||||
|
||||
<output id="Output_ShippingMethod" label="Shipping Method" name="shippingMethod" typeRef="string"/>
|
||||
|
||||
<output id="Output_ShippingCost" label="Shipping Cost" name="shippingCost" typeRef="double"/>
|
||||
|
||||
<!-- Rule 1: Premium customers, any value, any destination -> Express Free -->
|
||||
<rule id="Rule_PremiumExpress">
|
||||
<inputEntry id="InputEntry_R1_OrderValue">
|
||||
<text></text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R1_CustomerTier">
|
||||
<text>"premium"</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R1_Destination">
|
||||
<text></text>
|
||||
</inputEntry>
|
||||
<outputEntry id="OutputEntry_R1_Method">
|
||||
<text>"express"</text>
|
||||
</outputEntry>
|
||||
<outputEntry id="OutputEntry_R1_Cost">
|
||||
<text>0</text>
|
||||
</outputEntry>
|
||||
</rule>
|
||||
|
||||
<!-- Rule 2: High value orders (>500), standard customers, domestic -> Express -->
|
||||
<rule id="Rule_HighValueExpress">
|
||||
<inputEntry id="InputEntry_R2_OrderValue">
|
||||
<text>> 500</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R2_CustomerTier">
|
||||
<text>"standard"</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R2_Destination">
|
||||
<text>"domestic"</text>
|
||||
</inputEntry>
|
||||
<outputEntry id="OutputEntry_R2_Method">
|
||||
<text>"express"</text>
|
||||
</outputEntry>
|
||||
<outputEntry id="OutputEntry_R2_Cost">
|
||||
<text>15.00</text>
|
||||
</outputEntry>
|
||||
</rule>
|
||||
|
||||
<!-- Rule 3: Medium value orders (100-500), standard customers, domestic -> Standard -->
|
||||
<rule id="Rule_MediumValueStandard">
|
||||
<inputEntry id="InputEntry_R3_OrderValue">
|
||||
<text>[100..500]</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R3_CustomerTier">
|
||||
<text>"standard"</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R3_Destination">
|
||||
<text>"domestic"</text>
|
||||
</inputEntry>
|
||||
<outputEntry id="OutputEntry_R3_Method">
|
||||
<text>"standard"</text>
|
||||
</outputEntry>
|
||||
<outputEntry id="OutputEntry_R3_Cost">
|
||||
<text>8.00</text>
|
||||
</outputEntry>
|
||||
</rule>
|
||||
|
||||
<!-- Rule 4: Low value orders (<100), any tier, domestic -> Economy -->
|
||||
<rule id="Rule_LowValueEconomy">
|
||||
<inputEntry id="InputEntry_R4_OrderValue">
|
||||
<text>< 100</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R4_CustomerTier">
|
||||
<text></text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R4_Destination">
|
||||
<text>"domestic"</text>
|
||||
</inputEntry>
|
||||
<outputEntry id="OutputEntry_R4_Method">
|
||||
<text>"economy"</text>
|
||||
</outputEntry>
|
||||
<outputEntry id="OutputEntry_R4_Cost">
|
||||
<text>5.00</text>
|
||||
</outputEntry>
|
||||
</rule>
|
||||
|
||||
<!-- Rule 5: International orders -> International -->
|
||||
<rule id="Rule_International">
|
||||
<inputEntry id="InputEntry_R5_OrderValue">
|
||||
<text></text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R5_CustomerTier">
|
||||
<text></text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R5_Destination">
|
||||
<text>"international"</text>
|
||||
</inputEntry>
|
||||
<outputEntry id="OutputEntry_R5_Method">
|
||||
<text>"international"</text>
|
||||
</outputEntry>
|
||||
<outputEntry id="OutputEntry_R5_Cost">
|
||||
<text>25.00</text>
|
||||
</outputEntry>
|
||||
</rule>
|
||||
|
||||
</decisionTable>
|
||||
</decision>
|
||||
|
||||
</definitions>
|
||||
1
processes/demo-process1/docs/notes.md
Normal file
1
processes/demo-process1/docs/notes.md
Normal file
@@ -0,0 +1 @@
|
||||
Notes placeholder for process 1.
|
||||
11
processes/demo-process1/metadata/lifecycle.yaml
Normal file
11
processes/demo-process1/metadata/lifecycle.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
kind: uapf.metadata.lifecycle
|
||||
status: draft
|
||||
created: "2026-01-10T00:00:00Z"
|
||||
last_modified: "2026-01-10T00:00:00Z"
|
||||
version_history:
|
||||
- version: 0.1.0
|
||||
date: "2026-01-10T00:00:00Z"
|
||||
changes: Initial template creation
|
||||
author: "{{.RepoOwner}}"
|
||||
next_review: "2026-04-10T00:00:00Z"
|
||||
retirement_date: null
|
||||
16
processes/demo-process1/metadata/ownership.yaml
Normal file
16
processes/demo-process1/metadata/ownership.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
kind: uapf.metadata.ownership
|
||||
owner:
|
||||
type: team
|
||||
id: "{{.RepoOwner}}"
|
||||
name: "{{.RepoOwner}} Team"
|
||||
contact: "{{.RepoOwner}}@processgit.local"
|
||||
stakeholders:
|
||||
- type: team
|
||||
id: operations
|
||||
role: executor
|
||||
- type: team
|
||||
id: business-analysis
|
||||
role: reviewer
|
||||
governance:
|
||||
approval_required: true
|
||||
review_cycle: quarterly
|
||||
13
processes/demo-process1/resources/mappings.yaml
Normal file
13
processes/demo-process1/resources/mappings.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
kind: uapf.resources.mapping
|
||||
targets:
|
||||
- id: placeholder.agent
|
||||
type: ai_agent
|
||||
name: Placeholder Agent
|
||||
capabilities: []
|
||||
- id: placeholder.human
|
||||
type: human_role
|
||||
name: Placeholder Human
|
||||
- id: placeholder.system
|
||||
type: system_api
|
||||
name: Placeholder System
|
||||
bindings: []
|
||||
23
processes/demo-process1/uapf.yaml
Normal file
23
processes/demo-process1/uapf.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
kind: uapf.package
|
||||
id: uapf.demo-process1
|
||||
name: Order Fulfillment
|
||||
description: Order fulfillment process
|
||||
level: 4
|
||||
version: 0.1.0
|
||||
includes: []
|
||||
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
|
||||
115
processes/demo-process2/bpmn/process.bpmn.xml
Normal file
115
processes/demo-process2/bpmn/process.bpmn.xml
Normal file
@@ -0,0 +1,115 @@
|
||||
<?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:camunda="http://camunda.org/schema/1.0/bpmn"
|
||||
id="Definitions_ReturnProcessing"
|
||||
targetNamespace="http://bpmn.io/schema/bpmn">
|
||||
<bpmn:process id="ReturnProcessingProcess" name="Return Processing Process" isExecutable="true">
|
||||
|
||||
<bpmn:startEvent id="StartEvent_ReturnRequested" name="Return Requested">
|
||||
<bpmn:outgoing>Flow_ToCheckEligibility</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToCheckEligibility" sourceRef="StartEvent_ReturnRequested" targetRef="Task_CheckEligibility"/>
|
||||
|
||||
<bpmn:businessRuleTask id="Task_CheckEligibility" name="Check Return Eligibility" camunda:resultVariable="eligibilityResult" camunda:decisionRef="Decision_ReturnEligibility">
|
||||
<bpmn:incoming>Flow_ToCheckEligibility</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_ToEligibilityGateway</bpmn:outgoing>
|
||||
</bpmn:businessRuleTask>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToEligibilityGateway" sourceRef="Task_CheckEligibility" targetRef="Gateway_EligibilityCheck"/>
|
||||
|
||||
<bpmn:exclusiveGateway id="Gateway_EligibilityCheck" name="Return Eligible?">
|
||||
<bpmn:incoming>Flow_ToEligibilityGateway</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_ToApproveReturn</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_ToRejectReturn</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToApproveReturn" name="Yes" sourceRef="Gateway_EligibilityCheck" targetRef="Task_GenerateRMA">
|
||||
<bpmn:conditionExpression>#{eligible == true}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToRejectReturn" name="No" sourceRef="Gateway_EligibilityCheck" targetRef="Task_NotifyRejection">
|
||||
<bpmn:conditionExpression>#{eligible == false}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
|
||||
<bpmn:serviceTask id="Task_GenerateRMA" name="Generate RMA Number" camunda:type="external" camunda:topic="rma-generation">
|
||||
<bpmn:incoming>Flow_ToApproveReturn</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_ToSendLabel</bpmn:outgoing>
|
||||
</bpmn:serviceTask>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToSendLabel" sourceRef="Task_GenerateRMA" targetRef="Task_SendShippingLabel"/>
|
||||
|
||||
<bpmn:sendTask id="Task_SendShippingLabel" name="Send Shipping Label" camunda:type="mail">
|
||||
<bpmn:incoming>Flow_ToSendLabel</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_ToWaitForReturn</bpmn:outgoing>
|
||||
</bpmn:sendTask>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToWaitForReturn" sourceRef="Task_SendShippingLabel" targetRef="Event_ItemReceived"/>
|
||||
|
||||
<bpmn:intermediateCatchEvent id="Event_ItemReceived" name="Item Received">
|
||||
<bpmn:incoming>Flow_ToWaitForReturn</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_ToInspect</bpmn:outgoing>
|
||||
<bpmn:messageEventDefinition messageRef="Message_ItemReceived"/>
|
||||
</bpmn:intermediateCatchEvent>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToInspect" sourceRef="Event_ItemReceived" targetRef="Task_InspectItem"/>
|
||||
|
||||
<bpmn:userTask id="Task_InspectItem" name="Inspect Returned Item" camunda:assignee="quality.inspector">
|
||||
<bpmn:incoming>Flow_ToInspect</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_ToConditionGateway</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToConditionGateway" sourceRef="Task_InspectItem" targetRef="Gateway_ItemCondition"/>
|
||||
|
||||
<bpmn:exclusiveGateway id="Gateway_ItemCondition" name="Item Acceptable?">
|
||||
<bpmn:incoming>Flow_ToConditionGateway</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_ToProcessRefund</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_ToRejectRefund</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToProcessRefund" name="Yes" sourceRef="Gateway_ItemCondition" targetRef="Task_ProcessRefund">
|
||||
<bpmn:conditionExpression>#{itemAcceptable == true}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToRejectRefund" name="No" sourceRef="Gateway_ItemCondition" targetRef="Task_NotifyRejection">
|
||||
<bpmn:conditionExpression>#{itemAcceptable == false}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
|
||||
<bpmn:serviceTask id="Task_ProcessRefund" name="Process Refund" camunda:type="external" camunda:topic="refund-processing">
|
||||
<bpmn:incoming>Flow_ToProcessRefund</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_ToRestockItem</bpmn:outgoing>
|
||||
</bpmn:serviceTask>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToRestockItem" sourceRef="Task_ProcessRefund" targetRef="Task_RestockItem"/>
|
||||
|
||||
<bpmn:userTask id="Task_RestockItem" name="Restock Item" camunda:assignee="warehouse.worker">
|
||||
<bpmn:incoming>Flow_ToRestockItem</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_ToReturnComplete</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToReturnComplete" sourceRef="Task_RestockItem" targetRef="EndEvent_ReturnComplete"/>
|
||||
|
||||
<bpmn:endEvent id="EndEvent_ReturnComplete" name="Return Complete">
|
||||
<bpmn:incoming>Flow_ToReturnComplete</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
|
||||
<bpmn:sendTask id="Task_NotifyRejection" name="Notify Customer of Rejection" camunda:type="mail">
|
||||
<bpmn:incoming>Flow_ToRejectReturn</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_ToRejectRefund</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_ToReturnRejected</bpmn:outgoing>
|
||||
</bpmn:sendTask>
|
||||
|
||||
<bpmn:sequenceFlow id="Flow_ToReturnRejected" sourceRef="Task_NotifyRejection" targetRef="EndEvent_ReturnRejected"/>
|
||||
|
||||
<bpmn:endEvent id="EndEvent_ReturnRejected" name="Return Rejected">
|
||||
<bpmn:incoming>Flow_ToReturnRejected</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
|
||||
</bpmn:process>
|
||||
|
||||
<bpmn:message id="Message_ItemReceived" name="ItemReceivedMessage"/>
|
||||
|
||||
</bpmn:definitions>
|
||||
194
processes/demo-process2/cmmn/case.cmmn.xml
Normal file
194
processes/demo-process2/cmmn/case.cmmn.xml
Normal file
@@ -0,0 +1,194 @@
|
||||
<?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:camunda="http://camunda.org/schema/1.0/cmmn"
|
||||
id="Definitions_ReturnDispute"
|
||||
targetNamespace="http://bpmn.io/schema/cmmn">
|
||||
|
||||
<cmmn:case id="Case_ReturnDisputeHandling" name="Return Dispute Handling">
|
||||
<cmmn:casePlanModel id="CasePlanModel_ReturnDispute" name="Return Dispute Case">
|
||||
|
||||
<!-- Stage: Initial Assessment -->
|
||||
<cmmn:stage id="Stage_InitialAssessment" name="Initial Assessment">
|
||||
<cmmn:planItem id="PlanItem_ReviewDispute" definitionRef="Task_ReviewDispute"/>
|
||||
<cmmn:planItem id="PlanItem_GatherEvidence" definitionRef="Task_GatherEvidence"/>
|
||||
<cmmn:planItem id="PlanItem_ReviewPhotos" definitionRef="Task_ReviewPhotos"/>
|
||||
</cmmn:stage>
|
||||
|
||||
<!-- Stage: Investigation -->
|
||||
<cmmn:stage id="Stage_Investigation" name="Investigation">
|
||||
<cmmn:planItem id="PlanItem_ContactCustomer" definitionRef="Task_ContactCustomer"/>
|
||||
<cmmn:planItem id="PlanItem_ReviewPurchaseHistory" definitionRef="Task_ReviewPurchaseHistory"/>
|
||||
<cmmn:planItem id="PlanItem_InspectReturnedItem" definitionRef="Task_InspectReturnedItem"/>
|
||||
<cmmn:planItem id="PlanItem_ConsultExpert" definitionRef="Task_ConsultExpert"/>
|
||||
<cmmn:entryCriterion id="EntryCriterion_InvestigationStart" sentryRef="Sentry_AssessmentComplete"/>
|
||||
</cmmn:stage>
|
||||
|
||||
<!-- Stage: Resolution -->
|
||||
<cmmn:stage id="Stage_Resolution" name="Resolution">
|
||||
<cmmn:planItem id="PlanItem_MakeDecision" definitionRef="Task_MakeDecision"/>
|
||||
<cmmn:planItem id="PlanItem_ApproveRefund" definitionRef="Task_ApproveRefund"/>
|
||||
<cmmn:planItem id="PlanItem_OfferPartialRefund" definitionRef="Task_OfferPartialRefund"/>
|
||||
<cmmn:planItem id="PlanItem_DenyRefund" definitionRef="Task_DenyRefund"/>
|
||||
<cmmn:planItem id="PlanItem_OfferStoreCredit" definitionRef="Task_OfferStoreCredit"/>
|
||||
<cmmn:entryCriterion id="EntryCriterion_ResolutionStart" sentryRef="Sentry_InvestigationComplete"/>
|
||||
</cmmn:stage>
|
||||
|
||||
<!-- Stage: Communication -->
|
||||
<cmmn:stage id="Stage_Communication" name="Communication">
|
||||
<cmmn:planItem id="PlanItem_NotifyCustomer" definitionRef="Task_NotifyCustomer"/>
|
||||
<cmmn:planItem id="PlanItem_UpdateRecords" definitionRef="Task_UpdateRecords"/>
|
||||
<cmmn:planItem id="PlanItem_DocumentDecision" definitionRef="Task_DocumentDecision"/>
|
||||
<cmmn:entryCriterion id="EntryCriterion_CommunicationStart" sentryRef="Sentry_DecisionMade"/>
|
||||
</cmmn:stage>
|
||||
|
||||
<!-- Stage: Follow-up (optional) -->
|
||||
<cmmn:stage id="Stage_Followup" name="Follow-up" autoComplete="true">
|
||||
<cmmn:planItem id="PlanItem_CustomerSatisfactionSurvey" definitionRef="Task_CustomerSatisfactionSurvey"/>
|
||||
<cmmn:planItem id="PlanItem_ManagerReview" definitionRef="Task_ManagerReview"/>
|
||||
<cmmn:entryCriterion id="EntryCriterion_FollowupStart" sentryRef="Sentry_CustomerNotified"/>
|
||||
</cmmn:stage>
|
||||
|
||||
<!-- Tasks - Initial Assessment -->
|
||||
<cmmn:humanTask id="Task_ReviewDispute" name="Review Dispute Details" camunda:assignee="returns.specialist" isBlocking="true"/>
|
||||
|
||||
<cmmn:humanTask id="Task_GatherEvidence" name="Gather Evidence" camunda:assignee="returns.specialist"/>
|
||||
|
||||
<cmmn:humanTask id="Task_ReviewPhotos" name="Review Photos/Documentation" camunda:assignee="returns.specialist"/>
|
||||
|
||||
<!-- Tasks - Investigation -->
|
||||
<cmmn:humanTask id="Task_ContactCustomer" name="Contact Customer for Details" camunda:assignee="customer.service"/>
|
||||
|
||||
<cmmn:humanTask id="Task_ReviewPurchaseHistory" name="Review Purchase History" camunda:assignee="returns.specialist"/>
|
||||
|
||||
<cmmn:humanTask id="Task_InspectReturnedItem" name="Inspect Returned Item" camunda:assignee="quality.inspector"/>
|
||||
|
||||
<cmmn:humanTask id="Task_ConsultExpert" name="Consult Product Expert" camunda:assignee="product.specialist"/>
|
||||
|
||||
<!-- Tasks - Resolution -->
|
||||
<cmmn:humanTask id="Task_MakeDecision" name="Make Decision" camunda:assignee="returns.manager" isBlocking="true"/>
|
||||
|
||||
<cmmn:humanTask id="Task_ApproveRefund" name="Approve Full Refund" camunda:assignee="returns.specialist"/>
|
||||
|
||||
<cmmn:humanTask id="Task_OfferPartialRefund" name="Offer Partial Refund" camunda:assignee="returns.specialist"/>
|
||||
|
||||
<cmmn:humanTask id="Task_DenyRefund" name="Deny Refund" camunda:assignee="returns.specialist"/>
|
||||
|
||||
<cmmn:humanTask id="Task_OfferStoreCredit" name="Offer Store Credit" camunda:assignee="returns.specialist"/>
|
||||
|
||||
<!-- Tasks - Communication -->
|
||||
<cmmn:humanTask id="Task_NotifyCustomer" name="Notify Customer of Decision" camunda:assignee="customer.service"/>
|
||||
|
||||
<cmmn:processTask id="Task_UpdateRecords" name="Update Records" camunda:processRef="UpdateRecordsProcess"/>
|
||||
|
||||
<cmmn:humanTask id="Task_DocumentDecision" name="Document Decision and Rationale" camunda:assignee="returns.specialist"/>
|
||||
|
||||
<!-- Tasks - Follow-up -->
|
||||
<cmmn:humanTask id="Task_CustomerSatisfactionSurvey" name="Send Customer Satisfaction Survey" camunda:assignee="customer.service"/>
|
||||
|
||||
<cmmn:humanTask id="Task_ManagerReview" name="Manager Review of Case" camunda:assignee="returns.manager"/>
|
||||
|
||||
<!-- Sentries -->
|
||||
<cmmn:sentry id="Sentry_AssessmentComplete">
|
||||
<cmmn:planItemOnPart id="OnPart_AssessmentComplete" sourceRef="PlanItem_ReviewDispute">
|
||||
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||
</cmmn:planItemOnPart>
|
||||
</cmmn:sentry>
|
||||
|
||||
<cmmn:sentry id="Sentry_InvestigationComplete">
|
||||
<cmmn:planItemOnPart id="OnPart_InvestigationComplete" sourceRef="PlanItem_InspectReturnedItem">
|
||||
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||
</cmmn:planItemOnPart>
|
||||
</cmmn:sentry>
|
||||
|
||||
<cmmn:sentry id="Sentry_DecisionMade">
|
||||
<cmmn:planItemOnPart id="OnPart_DecisionMade" sourceRef="PlanItem_MakeDecision">
|
||||
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||
</cmmn:planItemOnPart>
|
||||
</cmmn:sentry>
|
||||
|
||||
<cmmn:sentry id="Sentry_CustomerNotified">
|
||||
<cmmn:planItemOnPart id="OnPart_CustomerNotified" sourceRef="PlanItem_NotifyCustomer">
|
||||
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||
</cmmn:planItemOnPart>
|
||||
</cmmn:sentry>
|
||||
|
||||
<cmmn:sentry id="Sentry_DisputeResolved">
|
||||
<cmmn:planItemOnPart id="OnPart_DisputeResolved" sourceRef="PlanItem_DocumentDecision">
|
||||
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||
</cmmn:planItemOnPart>
|
||||
</cmmn:sentry>
|
||||
|
||||
<!-- Milestone -->
|
||||
<cmmn:planItem id="PlanItem_DisputeResolved" definitionRef="Milestone_DisputeResolved">
|
||||
<cmmn:entryCriterion id="EntryCriterion_MilestoneReached" sentryRef="Sentry_DisputeResolved"/>
|
||||
</cmmn:planItem>
|
||||
|
||||
<cmmn:milestone id="Milestone_DisputeResolved" name="Dispute Resolved"/>
|
||||
|
||||
</cmmn:casePlanModel>
|
||||
</cmmn:case>
|
||||
|
||||
<cmmndi:CMMNDI>
|
||||
<cmmndi:CMMNDiagram id="CMMNDiagram_1">
|
||||
<!-- Case Plan Model Container -->
|
||||
<cmmndi:CMMNShape id="CasePlanModel_ReturnDispute_di" cmmnElementRef="CasePlanModel_ReturnDispute">
|
||||
<dc:Bounds x="80" y="40" width="1100" height="550"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<!-- Stage: Initial Assessment -->
|
||||
<cmmndi:CMMNShape id="Stage_InitialAssessment_di" cmmnElementRef="Stage_InitialAssessment" isExpanded="true">
|
||||
<dc:Bounds x="120" y="80" width="200" height="150"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<!-- Stage: Investigation -->
|
||||
<cmmndi:CMMNShape id="Stage_Investigation_di" cmmnElementRef="Stage_Investigation" isExpanded="true">
|
||||
<dc:Bounds x="360" y="80" width="200" height="150"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<!-- Stage: Resolution -->
|
||||
<cmmndi:CMMNShape id="Stage_Resolution_di" cmmnElementRef="Stage_Resolution" isExpanded="true">
|
||||
<dc:Bounds x="600" y="80" width="200" height="150"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<!-- Stage: Communication -->
|
||||
<cmmndi:CMMNShape id="Stage_Communication_di" cmmnElementRef="Stage_Communication" isExpanded="true">
|
||||
<dc:Bounds x="840" y="80" width="200" height="150"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<!-- Stage: Follow-up -->
|
||||
<cmmndi:CMMNShape id="Stage_Followup_di" cmmnElementRef="Stage_Followup" isExpanded="true">
|
||||
<dc:Bounds x="120" y="280" width="200" height="150"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<!-- Milestone -->
|
||||
<cmmndi:CMMNShape id="PlanItem_DisputeResolved_di" cmmnElementRef="PlanItem_DisputeResolved">
|
||||
<dc:Bounds x="940" y="450" width="100" height="80"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<!-- Entry Criteria -->
|
||||
<cmmndi:CMMNShape id="EntryCriterion_InvestigationStart_di" cmmnElementRef="EntryCriterion_InvestigationStart">
|
||||
<dc:Bounds x="350" y="141" width="20" height="28"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<cmmndi:CMMNShape id="EntryCriterion_ResolutionStart_di" cmmnElementRef="EntryCriterion_ResolutionStart">
|
||||
<dc:Bounds x="590" y="141" width="20" height="28"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<cmmndi:CMMNShape id="EntryCriterion_CommunicationStart_di" cmmnElementRef="EntryCriterion_CommunicationStart">
|
||||
<dc:Bounds x="830" y="141" width="20" height="28"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<cmmndi:CMMNShape id="EntryCriterion_FollowupStart_di" cmmnElementRef="EntryCriterion_FollowupStart">
|
||||
<dc:Bounds x="110" y="341" width="20" height="28"/>
|
||||
</cmmndi:CMMNShape>
|
||||
|
||||
<cmmndi:CMMNShape id="EntryCriterion_MilestoneReached_di" cmmnElementRef="EntryCriterion_MilestoneReached">
|
||||
<dc:Bounds x="930" y="476" width="20" height="28"/>
|
||||
</cmmndi:CMMNShape>
|
||||
</cmmndi:CMMNDiagram>
|
||||
</cmmndi:CMMNDI>
|
||||
|
||||
</cmmn:definitions>
|
||||
197
processes/demo-process2/dmn/decisions.dmn.xml
Normal file
197
processes/demo-process2/dmn/decisions.dmn.xml
Normal file
@@ -0,0 +1,197 @@
|
||||
<?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"
|
||||
xmlns:camunda="http://camunda.org/schema/1.0/dmn"
|
||||
id="Definitions_ReturnEligibility"
|
||||
name="Return Eligibility Decisions"
|
||||
namespace="http://camunda.org/schema/1.0/dmn">
|
||||
|
||||
<decision id="Decision_ReturnEligibility" name="Determine Return Eligibility">
|
||||
<decisionTable id="DecisionTable_ReturnEligibility" hitPolicy="FIRST">
|
||||
|
||||
<input id="Input_DaysSincePurchase" label="Days Since Purchase" camunda:inputVariable="daysSincePurchase">
|
||||
<inputExpression id="InputExpression_DaysSincePurchase" typeRef="integer">
|
||||
<text>daysSincePurchase</text>
|
||||
</inputExpression>
|
||||
</input>
|
||||
|
||||
<input id="Input_ProductCategory" label="Product Category" camunda:inputVariable="productCategory">
|
||||
<inputExpression id="InputExpression_ProductCategory" typeRef="string">
|
||||
<text>productCategory</text>
|
||||
</inputExpression>
|
||||
</input>
|
||||
|
||||
<input id="Input_ItemCondition" label="Item Condition" camunda:inputVariable="itemCondition">
|
||||
<inputExpression id="InputExpression_ItemCondition" typeRef="string">
|
||||
<text>itemCondition</text>
|
||||
</inputExpression>
|
||||
</input>
|
||||
|
||||
<input id="Input_HasReceipt" label="Has Receipt" camunda:inputVariable="hasReceipt">
|
||||
<inputExpression id="InputExpression_HasReceipt" typeRef="boolean">
|
||||
<text>hasReceipt</text>
|
||||
</inputExpression>
|
||||
</input>
|
||||
|
||||
<output id="Output_Eligible" label="Eligible" name="eligible" typeRef="boolean"/>
|
||||
|
||||
<output id="Output_RefundType" label="Refund Type" name="refundType" typeRef="string"/>
|
||||
|
||||
<output id="Output_RestockingFee" label="Restocking Fee" name="restockingFee" typeRef="double"/>
|
||||
|
||||
<!-- Rule 1: Within 30 days, new condition, has receipt -> Full refund -->
|
||||
<rule id="Rule_FullRefund">
|
||||
<inputEntry id="InputEntry_R1_Days">
|
||||
<text><= 30</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R1_Category">
|
||||
<text></text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R1_Condition">
|
||||
<text>"new", "unopened"</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R1_Receipt">
|
||||
<text>true</text>
|
||||
</inputEntry>
|
||||
<outputEntry id="OutputEntry_R1_Eligible">
|
||||
<text>true</text>
|
||||
</outputEntry>
|
||||
<outputEntry id="OutputEntry_R1_RefundType">
|
||||
<text>"full"</text>
|
||||
</outputEntry>
|
||||
<outputEntry id="OutputEntry_R1_Fee">
|
||||
<text>0</text>
|
||||
</outputEntry>
|
||||
</rule>
|
||||
|
||||
<!-- Rule 2: 31-60 days, electronics, opened but good condition -> Partial refund with 15% fee -->
|
||||
<rule id="Rule_ElectronicsPartial">
|
||||
<inputEntry id="InputEntry_R2_Days">
|
||||
<text>[31..60]</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R2_Category">
|
||||
<text>"electronics"</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R2_Condition">
|
||||
<text>"opened", "good"</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R2_Receipt">
|
||||
<text>true</text>
|
||||
</inputEntry>
|
||||
<outputEntry id="OutputEntry_R2_Eligible">
|
||||
<text>true</text>
|
||||
</outputEntry>
|
||||
<outputEntry id="OutputEntry_R2_RefundType">
|
||||
<text>"partial"</text>
|
||||
</outputEntry>
|
||||
<outputEntry id="OutputEntry_R2_Fee">
|
||||
<text>15.00</text>
|
||||
</outputEntry>
|
||||
</rule>
|
||||
|
||||
<!-- Rule 3: Within 90 days, clothing, good condition, has receipt -> Full refund -->
|
||||
<rule id="Rule_ClothingFullRefund">
|
||||
<inputEntry id="InputEntry_R3_Days">
|
||||
<text><= 90</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R3_Category">
|
||||
<text>"clothing", "accessories"</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R3_Condition">
|
||||
<text>"new", "unworn"</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R3_Receipt">
|
||||
<text>true</text>
|
||||
</inputEntry>
|
||||
<outputEntry id="OutputEntry_R3_Eligible">
|
||||
<text>true</text>
|
||||
</outputEntry>
|
||||
<outputEntry id="OutputEntry_R3_RefundType">
|
||||
<text>"full"</text>
|
||||
</outputEntry>
|
||||
<outputEntry id="OutputEntry_R3_Fee">
|
||||
<text>0</text>
|
||||
</outputEntry>
|
||||
</rule>
|
||||
|
||||
<!-- Rule 4: Within 60 days, no receipt -> Store credit only -->
|
||||
<rule id="Rule_NoReceiptCredit">
|
||||
<inputEntry id="InputEntry_R4_Days">
|
||||
<text><= 60</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R4_Category">
|
||||
<text></text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R4_Condition">
|
||||
<text>"new", "unopened", "good"</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R4_Receipt">
|
||||
<text>false</text>
|
||||
</inputEntry>
|
||||
<outputEntry id="OutputEntry_R4_Eligible">
|
||||
<text>true</text>
|
||||
</outputEntry>
|
||||
<outputEntry id="OutputEntry_R4_RefundType">
|
||||
<text>"store_credit"</text>
|
||||
</outputEntry>
|
||||
<outputEntry id="OutputEntry_R4_Fee">
|
||||
<text>0</text>
|
||||
</outputEntry>
|
||||
</rule>
|
||||
|
||||
<!-- Rule 5: Over 60 days -> Not eligible -->
|
||||
<rule id="Rule_TooOld">
|
||||
<inputEntry id="InputEntry_R5_Days">
|
||||
<text>> 60</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R5_Category">
|
||||
<text></text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R5_Condition">
|
||||
<text></text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R5_Receipt">
|
||||
<text></text>
|
||||
</inputEntry>
|
||||
<outputEntry id="OutputEntry_R5_Eligible">
|
||||
<text>false</text>
|
||||
</outputEntry>
|
||||
<outputEntry id="OutputEntry_R5_RefundType">
|
||||
<text>"none"</text>
|
||||
</outputEntry>
|
||||
<outputEntry id="OutputEntry_R5_Fee">
|
||||
<text>0</text>
|
||||
</outputEntry>
|
||||
</rule>
|
||||
|
||||
<!-- Rule 6: Damaged or used condition -> Not eligible -->
|
||||
<rule id="Rule_DamagedItem">
|
||||
<inputEntry id="InputEntry_R6_Days">
|
||||
<text></text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R6_Category">
|
||||
<text></text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R6_Condition">
|
||||
<text>"damaged", "worn", "used"</text>
|
||||
</inputEntry>
|
||||
<inputEntry id="InputEntry_R6_Receipt">
|
||||
<text></text>
|
||||
</inputEntry>
|
||||
<outputEntry id="OutputEntry_R6_Eligible">
|
||||
<text>false</text>
|
||||
</outputEntry>
|
||||
<outputEntry id="OutputEntry_R6_RefundType">
|
||||
<text>"none"</text>
|
||||
</outputEntry>
|
||||
<outputEntry id="OutputEntry_R6_Fee">
|
||||
<text>0</text>
|
||||
</outputEntry>
|
||||
</rule>
|
||||
|
||||
</decisionTable>
|
||||
</decision>
|
||||
|
||||
</definitions>
|
||||
1
processes/demo-process2/docs/notes.md
Normal file
1
processes/demo-process2/docs/notes.md
Normal file
@@ -0,0 +1 @@
|
||||
Notes placeholder for process 2.
|
||||
11
processes/demo-process2/metadata/lifecycle.yaml
Normal file
11
processes/demo-process2/metadata/lifecycle.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
kind: uapf.metadata.lifecycle
|
||||
status: draft
|
||||
created: "2026-01-10T00:00:00Z"
|
||||
last_modified: "2026-01-10T00:00:00Z"
|
||||
version_history:
|
||||
- version: 0.1.0
|
||||
date: "2026-01-10T00:00:00Z"
|
||||
changes: Initial template creation
|
||||
author: "{{.RepoOwner}}"
|
||||
next_review: "2026-04-10T00:00:00Z"
|
||||
retirement_date: null
|
||||
16
processes/demo-process2/metadata/ownership.yaml
Normal file
16
processes/demo-process2/metadata/ownership.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
kind: uapf.metadata.ownership
|
||||
owner:
|
||||
type: team
|
||||
id: "{{.RepoOwner}}"
|
||||
name: "{{.RepoOwner}} Team"
|
||||
contact: "{{.RepoOwner}}@processgit.local"
|
||||
stakeholders:
|
||||
- type: team
|
||||
id: operations
|
||||
role: executor
|
||||
- type: team
|
||||
id: business-analysis
|
||||
role: reviewer
|
||||
governance:
|
||||
approval_required: true
|
||||
review_cycle: quarterly
|
||||
13
processes/demo-process2/resources/mappings.yaml
Normal file
13
processes/demo-process2/resources/mappings.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
kind: uapf.resources.mapping
|
||||
targets:
|
||||
- id: placeholder.agent
|
||||
type: ai_agent
|
||||
name: Placeholder Agent
|
||||
capabilities: []
|
||||
- id: placeholder.human
|
||||
type: human_role
|
||||
name: Placeholder Human
|
||||
- id: placeholder.system
|
||||
type: system_api
|
||||
name: Placeholder System
|
||||
bindings: []
|
||||
23
processes/demo-process2/uapf.yaml
Normal file
23
processes/demo-process2/uapf.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
kind: uapf.package
|
||||
id: uapf.demo-process2
|
||||
name: Return Processing
|
||||
description: Return processing workflow
|
||||
level: 4
|
||||
version: 0.1.0
|
||||
includes: []
|
||||
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