[Design of JBoss jBPM] - Re: process definition as a resource
by camunda
Heiko wrote :
| 1) a changed pdl file, but classes remain the same
| 2) same pdl, but classes changed
| 3) changed pdl and classes changed
|
| IMO 1) and 3) should lead to a new version of that process, i.e. demanding an explicit version increment in the pdl, whereas 2) simply associated a different resource set to with process (i think bernd called it patching/bug fixes)
|
I see the use cases a bit different:
1) Fix a process (patching/bug fixing)
a) with changed classes
b) with changed jpdl
c) or both
2) Deploy a rael new version
with changed classes
and with changed jpdl
The distinction between fix and new version cannot be based dependent on the changed artefacts but has to be made from the user.
1a is simply a redeployment on the server
1b creates a new process version of same process in database
2 creates a new process in database and adds the deployment classes.
I would like to keep process db versioning for use case 1b. If you think of long running processes being forced to release a new version (with classes and stuff as a new deployment artefact) just because one state was forgotten seems unhandy for me. And then you have to develop sophisticated mechanisms to undeploy not longer used processes. With the db versioning it just "fades out".
But maybe I am too used to the current process versioning concept already and like it too much ;-) At least I can say, that it is good for marketing to support it ;-)
@Tom: Classloading work pretty well if you correctly use scoped classloading of AS with different parallel versions if the deployer and service take care of it correctly. The deployer I wrote for jbpm 3 works productive at the customer without problems...
For the execution modes: Yeah, differentiate these and support each of them would be quite interesting!
Even if I would prefer "persistent dynamic" for most use cases, because then you have all information together in the database (good for reporting or BI as well, or? In fact BI/ETL tools normally talk to databases not to XML files in the classpath ;-)).
But on the other hand persistent process resource could be really an interesting choice for some scenarios, I have to think more about and play with it a bit... What scares me is to loose the foreign keys to the process definition. And I could imagine implementing all the nuts and bolts of it isn't quite easy. And the question is: where is the big advantage of it? But during writing, I start to like it more and more ;-)
The idea about the embedded execution modes are really very interesting, since you find these kind of customer tables quite often and it could provide a good migration strategy towards jbpm :-)
Cheers
Bernd
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4210940#4210940
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4210940
16 years
[Design of JBoss jBPM] - deletion problem
by tom.baeyens@jboss.com
"jeff" wrote : hello, tom... i am looking forward to receive your reply...
|
| i came up with some problems again...
| i would like to run a persistent execution mode test...
| i worked quite well when deploy, start a new process instance with a process definition,
| but when i resume a persisted process instance, something i don't know what to do happened..
|
| my source code & jvm stack:
|
| public class PersistentExecutionModeTest extends EnvironmentFactoryTestCase {
|
| SessionFactory sessionFactory;
| Session session;
| Transaction transaction;
|
| public void testDeploy() { // seems ok
| // /*
| JbpmConfiguration environmentFactory = (JbpmConfiguration)getEnvironmentFactory();
| ProcessService processService = environmentFactory.get(ProcessService.class);
|
| ClientProcessDefinition processDefinition = ProcessDefinitionBuilder
| .startProcess("test")
|
| .startActivity("start", WaitState.class)
| .initial()
| .flow("end","end")
| .endActivity()
|
| .startActivity("end", AutomaticActivity.class)
| .endActivity()
|
| .endProcess();
|
| Deployment deployment = new DeploymentImpl();
| deployment.addObject("testProcesssss", processDefinition);
|
| ((ProcessServiceImpl) processService).deploy(deployment);
| // */
| }
|
| public void testStartProcessInstance() { // seems ok, 2
|
| JbpmConfiguration environmentFactory = (JbpmConfiguration) getEnvironmentFactory();
| ExecutionService executionService = environmentFactory.get(ExecutionService.class);
| Execution execution = executionService.startProcessInstanceById("test:1", "request17");
| }
|
| public void testResumeProcessInstance(){ // something wrong...
|
| JbpmConfiguration environmentFactory = (JbpmConfiguration)getEnvironmentFactory();
| ExecutionService executionService = environmentFactory.get(ExecutionService.class);
| Execution execution = executionService.signalExecutionById("test/request17", "end"); // exception occured here
|
| }
|
| }
|
| here is problems:
| Hibernate:
| /* delete org.jbpm.pvm.internal.model.ExecutionImpl */ delete
| from
| JBPM_EXECUTION
| where
| DBID_=?
| and DBVERSION_=?
| 10:36:37,578 WRN | [JDBCExceptionReporter] SQL Error: 1451, SQLState: 23000
| 10:36:37,578 SEV | [JDBCExceptionReporter] Cannot delete or update a parent row: a foreign key constraint fails (`jbpm_pvm/jbpm_execution`, CONSTRAINT `FK_EXEC_INSTANCE` FOREIGN KEY (`INSTANCE_`) REFERENCES `jbpm_execution` (`DBID_`))
| ### EXCEPTION ###########################################
| 10:36:37,578 SEV | [AbstractFlushingEventListener] Could not synchronize database state with session
| org.hibernate.exception.ConstraintViolationException: could not delete: [org.jbpm.pvm.internal.model.ExecutionImpl#4]
| at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
| at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
| at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2546)
| at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2702)
| at org.hibernate.action.EntityDeleteAction.execute(EntityDeleteAction.java:77)
| at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
| at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
| at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:172)
| at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
| at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
| at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
| at org.jbpm.pvm.internal.tx.HibernateSessionResource.prepare(HibernateSessionResource.java:54)
| at org.jbpm.pvm.internal.tx.StandardTransaction.commit(StandardTransaction.java:106)
| at org.jbpm.pvm.internal.tx.StandardTransaction.complete(StandardTransaction.java:65)
| at org.jbpm.pvm.internal.tx.StandardTransactionInterceptor.execute(StandardTransactionInterceptor.java:61)
| at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.execute(EnvironmentInterceptor.java:40)
| at org.jbpm.pvm.internal.svc.RetryInterceptor.execute(RetryInterceptor.java:52)
| at org.jbpm.pvm.internal.model.ProcessInstanceEndedSynchronization.afterCompletion(ProcessInstanceEndedSynchronization.java:52)
| at org.jbpm.pvm.internal.tx.StandardSynchronization.afterCompletion(StandardSynchronization.java:41)
| at org.jbpm.pvm.internal.tx.StandardTransaction.afterCompletion(StandardTransaction.java:213)
| at org.jbpm.pvm.internal.tx.StandardTransaction.commit(StandardTransaction.java:153)
| at org.jbpm.pvm.internal.tx.StandardTransaction.complete(StandardTransaction.java:65)
| at org.jbpm.pvm.internal.tx.StandardTransactionInterceptor.execute(StandardTransactionInterceptor.java:61)
| at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.execute(EnvironmentInterceptor.java:40)
| at org.jbpm.pvm.internal.svc.RetryInterceptor.execute(RetryInterceptor.java:52)
| at org.jbpm.pvm.internal.svc.ExecutionServiceImpl.signalExecutionById(ExecutionServiceImpl.java:97)
| at org.jbpm.pvm.executionmode.persistence.PersistentExecutionModeTest.testResumeProcessInstance(PersistentExecutionModeTest.java:81)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at junit.framework.TestCase.runTest(TestCase.java:164)
| at org.jbpm.test.BaseJbpmTestCase.runTest(BaseJbpmTestCase.java:81)
| at junit.framework.TestCase.runBare(TestCase.java:130)
| at junit.framework.TestResult$1.protect(TestResult.java:106)
| at junit.framework.TestResult.runProtected(TestResult.java:124)
| at junit.framework.TestResult.run(TestResult.java:109)
| at junit.framework.TestCase.run(TestCase.java:120)
| at junit.framework.TestSuite.runTest(TestSuite.java:230)
| at junit.framework.TestSuite.run(TestSuite.java:225)
| at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
| at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
| at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
| at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
| at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
| at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
|
| BY THE WAY,
| at this line: Execution execution = executionService.signalExecutionById("test/request17", "end");
| as referenced in the previous version manual, here should be call the method with the parameters ("test:1/request17", "end")?
| but i got exception as nothing found, and i trace the source code to DefaultIdGenerator#createId
| ....
| if (parent!=null) {
| base = parent.getId();
| } else if (processDefinition.getKey()!=null){ // processDefinition.getKey() = "test"
| base = processDefinition.getKey();
| } else {
| base = processDefinition.getId();
| }
| ....
| is there anything wrong with my process definition? or because of my wrongful use of the API?
|
|
| regards, jeff
|
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4210938#4210938
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4210938
16 years
[Design of JBoss jBPM] - Re: oryx and jbpm
by kukeltje
"tom.baeyens(a)jboss.com" wrote :
| "eikish" wrote : It seems that developers are mostly creating visual XForms syntax editors but not form editors that use XForms underneath if you know what I mean....
| |
|
| i don't and i would like to know. can you explain that a bit more ?
|
I think what he means is the following (correct me if I'm wrong)
XForms is xhtml, meaning that you have the full set of html elements and css available to design a form. Tables, divs, you name it and it is available. Within this xhtml, there are specific xforms elements (namespaces again :-)) for the behaviour of the form (e.g. is an element from the original xsd conditionally required or not) and there are elements for e.g. input (types), label, grouping etc... If you just look at these xforms elements and display them in a really rudimentary way (like oryx does), you ignore all the html, css etc... That is why they almost look the same in the browser in the lower screenshout, it is a realy simple form. This way you are in fact doing nothing more then semi visually editing the syntax of the xform.
Most you can do is re-order some elements visiually by dragging and dropping besides editing properties of elements like you can in the gpd. It's better then nothing and it is a start, but it is not really desiging forms. Dragging and dropping in an xml tree would be comparable one customer told me. Not quite, but he meant to indicate the real benefits. I wanted to look into extending the Oryx editor, but what I want would take way to much time and so I currently go for editing the xhtml forms myself in the JBoss Tools html editor and in the same time look into making VPE templates for the xforms input elements.
The Orbeon editor goes further, and is way more usable, but is tied to orbeon.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4210880#4210880
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4210880
16 years
[Design of JBoss jBPM] - Re: oryx and jbpm
by tom.baeyens@jboss.com
"eikish" wrote : Hi, I'm that "Eiki" :)
|
Hi Eirikur, nice to meet you with your real name :-)
"eikish" wrote : It seems that developers are mostly creating visual XForms syntax editors but not form editors that use XForms underneath if you know what I mean....
|
i don't and i would like to know. can you explain that a bit more ?
"eikish" wrote : I think with Oryx this strategy would be best as well but I'm worried about backward compatability. We are using jBPM 3.3 and don't see that v.4 will be out any time soon so I need to make sure we build (or you as well?) a jpdl extension to oryx that will work on jBPM 3.3 as well...
|
| Will JPDL4 work on 3.3?
|
we aim to supply migration support including a tool for translating jbpm 3 processes to jpdl 4.
jbpm 4 will not be backwards compatible with jbpm 3. though the basic structure would be the same. if you have the jpdl 3 plugin, it should not take a big effort to port it to 4.
if you're willing to lead it, we'ld like to host and maintain the oryx extension to import/export oryx to jpdl 4. we can help with setting up the module in our codebase.
what kind of dependencies are involved in creating an oryx extension ? is that development maven based ?
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4210841#4210841
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4210841
16 years
[Design of JBoss jBPM] - Re: oryx and jbpm
by kukeltje
"eikish" wrote : Hi, I'm that "Eiki" :)
|
Welcome
"eikish" wrote :
| Unlike the Orbeon editor ours isn't itself based on xforms just web2.0 magic and right now it's closed source although we are planning to make our platform available for other developers and are open to suggestions ;)
|
Web 2.0.... That I know.... there I can contribute.... hahaha
"eikish" wrote :
| The oryx xforms editor is a little strange to me as well as many of the other editors out there. It seems that developers are mostly creating visual XForms syntax editors but not form editors that use XForms underneath if you know what I mean....anyway that's off topic
|
It's not realy off topic... it makes it easier or more difficult for e.g. others to extend it if they want/need.... see my remark about your version
"eikish" wrote :
| Looking at the JPDL4 editor (only seen the alpha1) I see jboss is taking the road of integrating the positioning of the elements into the xml instead of the gpd.xml file. This is a smart move in my view and will make it easier to create designers/exporters for jpdl.
|
@Tom: yeeehaaa.... hahahaha
"eikish" wrote :
| I think with Oryx this strategy would be best as well but I'm worried about backward compatability. We are using jBPM 3.3 and don't see that v.4 will be out any time soon so I need to make sure we build (or you as well?) a jpdl extension to oryx that will work on jBPM 3.3 as well...
|
July 1st is the target date
"eikish" wrote :
| Will JPDL4 work on 3.3?
|
No
Maybe Chiba and your editor should become JBoss projects :-)
btw, I just use chiba/xforms for the tasks, not tasklists... tasklists are plain jsf
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4210739#4210739
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4210739
16 years