Lance, Alex, As promissed in IRC, some use cases:
Use Case: Unique Version Naming A process repository contains a collection of process definitions retrievable by their QName. Each version of a process has a distinct QName. A process is deployed on ODE from the repository using definition "FooProcess/2006/11/1". A new version of the process becomes available called "FooProcess/2006/12/23", the new version of the process is to be deployed in ODE and take over processing for the older version. Use Case: Process Reuse An enterprise creates a process to describe the interaction with its suppliers. The process definition is named "SupplierProcess". The enterprise deals with multiple suppliers all communicating over distinct dedicated communication channel. The "SupplierProcess" is to be deployed for each supplier. Each time a new supplier is signed up, the process is deployed again on the new channel. Each time a supplier quits, the process for that supplier is undeployed. Use Case: Third Party Process Definitions A third-party prepares a process definition that is named according to third-party's naming scheme (i.e. "thirdParty:ProcessFoo"). Process is to be deployed into an ODE instance employing a different naming scheme ( i.e. "myScheme:MyProcess"). Use Case: Unique Versoin Naming x Process Reuse x Third Part Process Definitions Any combination of the above use cases. Also, I have several axioms that I think are very reasonable and limit the solution space: * System must be able to deploy any valid definition without needing the user to edit the definition (NOEDIT) * Subject to endpoint restrictions, deployer must be able to designate any valid definition as the replacement version of any perviously deployed definition (REPLACEMENT) * Subject to endpoint restrictions, system must be able to deploy a valid definition regardless of any other definitions already deployed in the system (NONINTERFERENCE). -Maciej
