Details
-
Type:
New Feature
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 1.4.0
-
Component/s: Transport: (new transport)
-
Labels:None
-
Similar Issues:None
Description
My idea is to create a generic BPM provider where:
1. Mule events can initiate and advance processes in a BPMS (dispatcher)
2. the processes running in the BPMS can generate Mule events (receiver)
The BPMS could be external or embedded as a library within Mule.
Examples:
bpm://purchaseOrder would start a new process named "purchaseOrder"
bpm://purchaseOrder?id=5435 would advance the already running process of type "purchaseOrder" with process ID = 5435 to its next state
I've added an initial attempt at this provider to the sandbox (r2421), though it's completely tied to JBoss jBpm for now.
My idea is to define a simple, generic interface for interacting with any BPMS:
createProcess();
advanceProcess(Object processId);
abortProcess(Object processId);
And another interface for generating Mule events from a running process:
sendMuleEvent(String uri, Object payload, Map properties);
dispatchMuleEvent(String uri, Object payload, Map properties);
Then supporting any given BPMS is just a matter of implementing these interfaces for that BPMS. We could start with, for example: JBoss jBpm, OSWorkflow, BeanFlow. Perhaps we could even create an implementation of these interfaces for BPEL, since many people are using it as a BPMS (though that isn't what it's really for).