User Tools

Site Tools


bpwiki:process_order_fulfillment

Order Fulfillment & Stock Maintenance Processes

Example from BPMN 2.0 by Example, page 5.

++++ Order Fulfillment Process code |

{
	events: {
		start: {
			se_orderRec: {
				name: “Order received”,
				type: message
			}
		},
		end: {
			ee_paymentRec: “Payment received”,
			ee_customerInf: “Customer informed”,
			ee_articleRem: “Article removed”
		},
		intermediate: {
			ie_undeliverable: {
				name: “undeliverable”,
				type: error
			},
			ie_lateDelivery: {
				name: “late Delivery”,
				type: escalation,
				nonInterrupting: true
			}
		}
	},
	activities: {
		at_checkAva: “Check availability”,
		at_shipArticle: “Ship article”,
		task_infCustomer: “Inform customer”,
		task_infCustomer2: “Inform customer”,
		at_remArticle:
			“Remove article from calatogue”,
		process_finSettlement: {
			name: “Financial settlement”,
			markers: [subprocess]
		},
		process_procurement: {
			name: “Procurement”,
			activityType: call,
			markers: [subprocess],
			boundary: [
				ie_lateDelivery,
				ie_undeliverable
			],
			events: {
				start: {
					se_start: “”
				},
				intermediate: {
					ie_lateDelivery: {
						“throwing”: true,
						“type”: “escalation”,
						“name”: “Late delivery”
					},
					ie_articleReceived: {
						“type”: “message”,
						“name”: “Article received”
					}
				},
				end: {
					ee_articleRemoved: “Article  procured”,
					ee_underiverable: {
						“type”: “error”,
						“name”: “undeliverable”
					}
				}
			},
			activities: {
				task_checkAvaliability: “Check availability with supplier”,
				task_order: “Order from supplier”
			},
			gateways: {
				gw_deliverable: “Deliverable?”
			},
			flow: {
				f1: [
					se_start,
					task_checkAvaliability
				],
				f2: [
					task_checkAvaliability,
					gw_deliverable
				],
				f3: [
					gw_deliverable,
					task_order,
					“< = 2 days”
				],
				f4: [
					gw_deliverable,
					ie_lateDelivery,
					“> 2 days”
				],
				f5: [
					gw_deliverable,
					ee_underiverable,
					“no”
				],
				f6: [
					ie_lateDelivery,
					task_order
				],
				f7: [
					ie_articleReceived,
					ee_articleRemoved
				],
				f8: [
					task_order,
					ie_articleReceived
				]
			}
		}
	},
	gateways: {
		g_articleAvail: “Article available”
	},
	flow: {
		f1: [ se_orderRec, at_checkAva ],
		f2: [ at_checkAva, g_articleAvail ],
		f3: [
			g_articleAvail,
			at_shipArticle,
			“yes”
		],
		f4: [ at_shipArticle, process_finSettlement ],
		f5: [ process_finSettlement, ee_paymentRec ],
		
		//branch at g_articleAvail
		f6: [
			g_articleAvail,
			process_procurement,
			“no”
		],
		f7: [ process_procurement, at_shipArticle ],
		//end
		
		/* boundary events handling
			- ie_lateDelivery */
		f8: [ ie_lateDelivery, task_infCustomer ],
		f9: [ task_infCustomer, ee_customerInf ],
		//end
		
		/* boundary events handling
			- ie_undeliverable */
		f10: [ ie_undeliverable, task_infCustomer2 ],
		f11: [ task_infCustomer2, at_remArticle ],
		f12: [ at_remArticle, ee_articleRem ]
		//end
	}
}

++++

++++ Stock Maintenance Process code |

{
	events: {
		start: {
			se_stockLevel: {
				type: conditional,
				name: “Stock level below minimum”
			}
		},
		intermediate: {
			ie_undeliverable: {
				type: error,
				name: “undeliverable”
			}
		},
		end: {
			ee_articleProcured: “Article procured”,
			ee_articleRemoved: “Article removed”
		}
	},
	activities: {
		process_procurement: {
			name: “Procurement”,
			activityType: call,
			markers: [subprocess],
			boundary: [
				ie_lateDelivery,
				ie_undeliverable
			],
			events: {
				start: {
					se_start: “”
				},
				intermediate: {
					ie_lateDelivery: {
						“throwing”: true,
						“type”: “escalation”,
						“name”: “Late delivery”
					},
					ie_articleReceived: {
						“type”: “message”,
						“name”: “Article received”
					}
				},
				end: {
					ee_articleRemoved: “Article  procured”,
					ee_underiverable: {
						“type”: “error”,
						“name”: “undeliverable”
					}
				}
			},
			activities: {
				task_checkAvaliability: “Check availability with supplier”,
				task_order: “Order from supplier”
			},
			gateways: {
				gw_deliverable: “Deliverable?”
			},
			flow: {
				f1: [
					se_start,
					task_checkAvaliability
				],
				f2: [
					task_checkAvaliability,
					gw_deliverable
				],
				f3: [
					gw_deliverable,
					task_order,
					“< = 2 days”
				],
				f4: [
					gw_deliverable,
					ie_lateDelivery,
					“> 2 days”
				],
				f5: [
					gw_deliverable,
					ee_underiverable,
					“no”
				],
				f6: [
					ie_lateDelivery,
					task_order
				],
				f7: [
					ie_articleReceived,
					ee_articleRemoved
				],
				f8: [
					task_order,
					ie_articleReceived
				]
			}
		},
		task_removeArticle: “Remove article from catalogue”
	},
	flow: {
		f1: [
			se_stockLevel,
			process_procurement
		],
		f2: [
			process_procurement,
			ee_articleProcured
		],
		f3: [
			ie_undeliverable,
			task_removeArticle
		],
		f4: [
			task_removeArticle,
			ee_articleRemoved
		]
	}
}

++++



bpwiki/process_order_fulfillment.txt · Last modified: 2017/09/19 14:31 (external edit)