Lance,
For consideration, I would like to briefly review the design that I had
in mind for versioning in PXE. I think it's similar in spirit to what
you describe in your deployment spec.
First, each process definition would be identified by its fully
qualified name (/name/ and /namespace/ attributes) and a version
number. The process engine would manage the version number in a
monotonically increasing fashion, meaning that each time a process is
redeployed, the version number increases.
Process definitions may be either activated or retired. Activated
processes are available for instantiation whereas retired processes may
not be instantiated -- the initiating operations are effectively disabled.
New process definitions may "override" the initiating operations and
endpoints of retired process definitions to provide transparent
migration to existing service consumers. To prevent conflicts,
deploying a process definition using the same initiating operation(s)
and the same endpoint(s) of an already deployed process should fail.
Similarly, retired processes could be re-activated if no process
currently uses the same initiating operation(s) on the same endpoints.
Users would have different choices when it comes to managing version
numbers. First, they can always use the name+namespace as with most
XML-based specs. If they want to deploy multiple processes with the
same name+namespace tuple, they could adopt the internal version numbers
if they don't have anything better, or they could supply version
information as meta-data when deploying the process definition. This
meta-data could contain user-defined versioning tags, with values such
as "myBranch-v2", or "Oct. 12th 2006". The PM API should support
querying using both the internal version number and custom meta-data.
Some of this is covered by
http://pxe.intalio.org/confluence/display/PXE/BPEL+Management+API+Specification.
This design is relatively simple and does not account for migrating
instances between process versions, which is a more complex topic that
we should eventually discuss in relation with Jacob.
Is this in line with your current thinking?
alex