[Design of JBoss jBPM] - Re: process definition as a resource
by tom.baeyens@jboss.com
"heiko.braun(a)jboss.com" wrote : I am very much in favor of what you call "Persistent Process Resource", which basically means just storing execution state and history in the DB.
| Anything else, and most importantly, all class resources should be retrieved through the classloader. This already answers your question regarding the clustering: Leave it to the deployment/classloading framework of the AS.
|
downside is that this would not support process versioning as we're used to. (at least not without hacks) maybe we should consider support this as a separate execution mode.
so if we assume that versioning is done by the client in the process file, then this would really fit the jboss deployer architecture. (finally !)
"heiko.braun(a)jboss.com" wrote : But in general we should aim at the plain non clustered AS integration first
| and then worry about clustering when we need it. You can easily relay questions like this if you leverage the AS infrastructure too a large degree.
|
if possible, we should look at the DB for clustering. if we stick with that, they our clustering works in any environment. so those type of solutions are preferrable.
but on top of that, we can always look at how we can improve jboss specific clustering. (like described above)
"heiko.braun(a)jboss.com" wrote : I do actually have uncommitted AS integration code on my disk, that installs the process engine as a service and adds the corresponding deployers so that you can drop *.par archives into the deploy folder. Quiet similiar to what Bernd described in his Blog, just for AS 5.
|
loading versioned classes lead to real complex solutions. and i'm not sure if those tricky things are justified.
if a user deploys a new version of a process, it's always possible to update the classnames that are referenced and append _V2 or something to the classname. users can always reference new classes by pointing to different classnames. and then we don't have to come up with the very complex classloading to load similarly named classes in different process definition scopes.
"heiko.braun(a)jboss.com" wrote : I would say, to begin with we should aim at
|
| 1) Persistent Process Resource as execution mode inside the AS
| 2) Add a service and deployer
| 3) Fix the classloading (classloader registry, reassociation upon reboot)
| 4) Deal with different versioning strategies upn deployment and server boot.
|
| We need to get this sorted before diving into clustering topics.
you're forgetting the basic BPM Suite use case: if you want the process versioning to work on every platform to give a non-coding-only-poin-and-click demo, then you need the dynamic persistent use case. so that should be 0) and for the next efforts, i indeed agree with your list
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4210608#4210608
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4210608
17 years, 1 month
[Design of JBoss jBPM] - Re: process definition as a resource
by heiko.braun@jboss.com
I am very much in favor of what you call "Persistent Process Resource", which basically means just storing execution state and history in the DB.
Anything else, and most importantly, all class resources should be retrieved through the classloader. This already answers your question regarding the clustering: Leave it to the deployment/classloading framework of the AS.
But in general we should aim at the plain non clustered AS integration first
and then worry about clustering when we need it. But you easily relay questions like this if you leverage the AS infrastructure too a large degree.
I do actually have uncommitted AS integration code on my disk, that installs the process engine as a service and adds the corresponding deployers so tat you can drop *.par archives intio the deploy folder. Quiet similiar to what Bernd described in his Blog, just for AS 5.
I would say, to begin with we should aim at
1) Persistent Process Resource as execution mode inside the AS
2) Add a service and deployer
3) Fix the classloading (classloader registry, reassociation upon reboot)
4) Deal with diferent versioning strategies upn deployment and server boot.
We need to get this sorted before diving into clustering topics.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4210594#4210594
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4210594
17 years, 1 month
[Design of JBoss jBPM] - task and swimlane roles
by tom.baeyens@jboss.com
heiko,
i'm splitting the user and group roles. does this look ok to you ?
public enum RoleType {
|
| USER,
|
| GROUP
|
| }
In TaskService:
/** add a role to a given task.
| * @param roleType identifies if this is a user role or a group role
| * @param refId identifies the user or group
| * @param role specifies the role that the user or group fullfills for this task. */
| void addTaskRole(long taskDbid, String refId, RoleType roleType, String role);
|
| /** get roles related to a given task.
| * @param roleType if not null it will filter the roles
| * @param role if not null it will filter the roles */
| List<UserRole> getTaskRoles(long taskDbid, RoleType roleType, String role);
|
| /** removes a role to a given task. Nothing happens (no exception) if
| * the role does not exist.
| * @param roleType identifies if this is a user role or a group role
| * @param refId identifies the user or group
| * @param role specifies the role that the user or group fullfills for this task. */
| void removeTaskRole(long taskDbid, String refId, RoleType roleType, String userRoleType);
|
then the same methods for associating roles with swimlanes
void addSwimlaneRole(long taskDbid, String refId, RoleType roleType, String role);
| List<UserRole> getSwimlaneRoles(long taskDbid, RoleType roleType, String role);
| void removeSwimlaneRole(long taskDbid, String refId, RoleType roleType, String userRoleType);
does this make sense in the context of the discussions we had about it ?
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4210593#4210593
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4210593
17 years, 1 month
[Design of JBoss jBPM] - Re: process definition as a resource
by kukeltje
"tom.baeyens(a)jboss.com" wrote : jbpm users typically deploy the process to the db and then store the instances in the DB as well.
|
I think most do not realy do this 'on purpose'. It's how it works.
"tom.baeyens(a)jboss.com" wrote :
| another aspect that becomes more complicated in 'persistent process resource' execution mode is deployment in a clustered environment. when using the DB to store process definitions, this is the single entry point accessible from all nodes. but how would we deploy a resource to all nodes in a cluster ? and how would the process definitions be cached in memory ?
|
Uhhmm.... JBoss Cache?
Funny is that I kind of semi use jBPM in this resource way. I extend the processdefinition with my own xml tags for which I do not develop a specific jpdl parser or whatever. Runtime, I read the xml nodes with xpath from the processdefinition in the processarchive (will show this in the presentation also on the community day)
I'll think about the other thinks though. Not fully grasp all differences yet, but that might be because it is to late (04:00 am)
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4210560#4210560
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4210560
17 years, 1 month