task component
tom.baeyens Oct 23, 2007 9:54 AMhere is a short description of the task component as i have it in mind:
* a task is a runtime task instance. each task is one record in the database. all tasks for all people are in one table. people should be able to look at different 'views' on that table. the most typical view is the query that selects all tasks for which the authenticated user is directly assigned to the task. but all other kind of queries should be possible. e.g. a manager might want to see all tasks for his subordinates.
* task module must be decoupled from identity component. to achieve that, all references to users and groups are done with plain strings. i refer to them (users and groups) as actors.
* tasks must be assignable to people directly. the actor property (column) in the task object (record) references a user.
* tasks must also be assignable to a set of candidates. in this case, the actorId field is null. a set of candidate actorIds must be associatable with the task; in task UI's, a separation should be made between tasks on which you can work and tasks for which you are a candidate. Each of the candidates of a task can try to 'take' the task. That means that the task will be removed from all the other candidate's group task lists and it will appear in the person's personal task list. The list of candidates should still be remembered.
* tasks must be able to have variables. towards the user of the task API, the variable key's are java.lang.String's and the values are java.lang.Object's. an as-broad-as-possible collection of java types must be supported out of the box. also it should be configurable and pluggable to support new types as variables. this is the same requirement as for process variables, so the process variable mechanism of the pvm should be reused for this.
* swimlanes should be supported as process roles. a swimlane instance will remember the candidates and actor for multiple tasks in the process that are to be associated to the same person.
* sub tasks must be supported.
* a task node should be included in the task component as an integration between the task component and the pvm process execution.
* all of this must work in
1) plain java without persistence (meaning no dependency on hibernate or jdbc)
2) plain java with hibernate persistence
3) enterprise java with hibernate persistence