Topic: wftk -- Process definition example -- closed source project[ wftk home ] [ process definition ] [ discussion ] |
This is an attempt at the basic process outlined in the closed source software
development scenario. This scenario is the first one which involves creation of a project plan which is then
executed as a subprocess. (2/24/00) Revised to conform to the new data-tag structures I thought out yesterday.
<?xml version="1.0"?> <workflow name="Closed source release project" author="Michael: michael@vivtek.com>"> <role name="Analyst"></role> <data name="Description" type="text"></data> <data name="Mailing list"> <list><data type="text"></data></list> </data> <sequence> <task label="Analyze" role="Analyst"> <data name="changesource" storage="database/select * from changerequests where status='open'" readonly="yes"></data> <data name="changes" type="structure" value="${changesource}"></data> </task> <data name="changes.status" value="in progress"></data> <data name="changes.project" value="${Current process}"></data> <task label="Plan" role="Analyst"> <data name="Project plan" type="document:application/xml-workflow"></data> </task> <start name="${Project plan}" location="deliverable" mode="merged"></start> <data name="changes.status" value="complete"></data> </sequence> </workflow>More data type shenanigans This time I tossed in a collection of records. I'm thinking that if a data item is a collection of something, then the way you fill that collection is to select from a universe of items. So you should be able to specify the universe that can be selected from, and that is what I'm doing with that record select statement. All in all, there will certainly be a lot of interaction with databases, so it makes sense to have rich ways of specifying that interaction.
Another aspect I just tossed in is the setting of data values by the system, not merely by agents during tasks. And of
course I did it rather weirdly, by setting the value of one field in each record of a set. It seems to me that collections
need to be smart enough to pass actions on to their elements, and that records need to be smart enough to figure out how
to select and update field values as necessary. I think it's obvious what these
${Current process}
Different modes of <start>
Another modifier that we'll eventually need for Coming back to the default start mode... It should be "task" and would show in the parent process as a single task, but would appear in the list of active processes as an independent process, as long as it's a named workflow. If it's an anonymous subprocess, then I guess its tasks would have to appear in the parent process. Meaning it's merged? I guess this needs some more thought, too. |