[jBPM Users] - Re: Problem with node state
by mafemuea
Hello
I post more information about my problem:
I use jBPM 3.2.6.
This is a part of workflow:
| .....
| <task-node name="Recepcion de catalogos">
| <description>
| RecepciÃÂón de catÃÂálogos
| </description>
| <task name="Recepcionar catalogos">
| <description>
| recepcionarCatalogos.do
| </description>
| <assignment class="*.*.*.bussiness.jbpm.handler.assignment.AsignaPoolActorTarea"></assignment>
| </task>
| <transition to="Esperar para desmontar"></transition>
| </task-node>
| <state name="Esperar para desmontar">
| <event type="node-enter">
| <action name="Esperar para desmontar" class="*.*.*.bussiness.jbpm.handler.action.ConfigurarPlanificadorDesmontaje"></action>
| </event>
| <transition to="Valor mayor 500 mil"></transition>
| </state>
| <decision name="Valor mayor 500 mil">
| <handler class="*.*.*.bussiness.jbpm.handler.decision.ValorMayor500milEuros"></handler>
| <transition to="Solicitud desmontaje" name="No"></transition>
| <transition to="Solicitud de escolta desmontaje" name="Si"></transition>
| </decision>
| .....
|
The handler class "ConfigurarPlanificadorDesmontaje":
| public void execute(ExecutionContext executionContext) throws Exception {
| try{
| logger.debug("[execute] Inicio");
| BusinessCalendar businessCalendar = new BusinessCalendar();
| Token token = executionContext.getToken();
| logger.debug("[execute] token name: " + executionContext.getToken());
| Timer timer = new Timer (token);
| timer.setName("TimerDesmontaje");
|
| Delegation delegation = new Delegation("*.*.*.bussiness.jbpm.handler.action.SalirPlanificadorDesmontaje");
| executionContext.getJbpmContext().getSession().save(delegation);
|
| Action action = new Action ();
| action.setName("Salir de planificador");
| action.setActionDelegation(delegation);
| timer.setAction(action);
| timer.setGraphElement(executionContext.getNode());
|
| String tiempo = "2 business minutes"; //TODO: Value dinamic, go to BD
| Duration duration = new Duration(tiempo);
| Date dueDateDate = businessCalendar.add(new Date(), duration);
| timer.setDueDate(dueDateDate);
|
| SchedulerService schedulerService = (SchedulerService) Services.getCurrentService(Services.SERVICENAME_SCHEDULER);
| schedulerService.createTimer(timer);
| logger.debug("[execute] Fin");
| }catch(Exception e){
| throw e;
| }
| }
|
|
And the handler class "SalirPlanificadorDesmontaje":
| public void execute(ExecutionContext context) throws Exception {
| try{
| logger.debug("[execute] Inicio");
|
| context.leaveNode();
| logger.debug("[execute] Fin");
| }catch (Exception e) {
| throw e;
| }
| }
|
When it finish the task "Recepcion de catalogos", my workflow should wait time (String tiempo = "2 business minutes"; //TODO: Value dinamic, go to BD) before running the decision node "Valor mayor 500 mil", but happend the error:
| org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: org.jbpm.graph.def.Action
|
| at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:219)
| at org.hibernate.type.EntityType.getIdentifier(EntityType.java:397)
| at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:242)
| at org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:597)
| at org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:3123)
| at org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:479)
| at org.hibernate.event.def.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:204)
| at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:127)
| at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196)
| at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
| at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
| at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
| at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
| at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
| at org.jbpm.persistence.db.DbPersistenceService.commit(DbPersistenceService.java:227)
| at org.jbpm.persistence.db.DbPersistenceService.endTransaction(DbPersistenceService.java:132)
| at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:198)
| at org.jbpm.svc.Services.close(Services.java:243)
| at org.jbpm.JbpmContext.close(JbpmContext.java:133)
| at *.*.*.bussiness.jbpm.managers.JBPMManager.finalizaTareaConIdActual(JBPMManager.java:223)
| at *.*.*.bussiness.managers.GestionarExposicionesManager.finalizarTareaRecepcionarCatalogos(GestionarExposicionesManager.java:277)
| at *.*.*.web.actions.tareas.RecepcionCatalogosAction.finalizarRecepcionCatalogos(RecepcionCatalogosAction.java:106)
| 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:597)
| at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
| at *.*.*.web.actions.GPEDispatchAction.execute(GPEDispatchAction.java:107)
| at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
| at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
| at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
| at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
| at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
| at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
| at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
| at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
| at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
| at es.bne.plataforma.seguridad.comun.web.filtros.PublicLoginFilter.doFilter(PublicLoginFilter.java:142)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
| at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
| at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
| at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
| at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
| at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
| at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
| at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
| at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
| at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
| at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
| at java.lang.Thread.run(Thread.java:619)
| ... 44 more
|
Any idea to solve my problem? There a way to model the workflow to do I need?
Thanks a lot.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4267764#4267764
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4267764
15 years
[jBPM Users] - Re: jbpm-console
by sebastian.s
I have no clue how it is done in JBoss because I am using Tomcat. The Tomcat demo setup (jBPM-4.1) has this lines in the server.xml to reference the jBPM users' database. I don't know how JbpmConsoleRealm is implemented.
|
| <Engine name="Catalina" defaultHost="localhost">
|
| <Host name="localhost" appBase="webapps" unpackWARs="true"
| autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
|
| <!--
| Current workaround for using the JBPM identity tables on Tomcat.
| Setting the Realm on the context with path /jbpm-console did not seem
| to work. Note that this workaround means that the cmplete localhost
| domain will use this realm !
| -->
| <Realm className="org.jbpm.integration.tomcat6.JbpmConsoleRealm"
| driverName="org.hsqldb.jdbcDriver"
| connectionUrl="jdbc:hsqldb:hsql://localhost:1701"
| connectionName="sa"
| connectionPassword="" />
|
| </Host>
| </Engine>
|
It could be that the console does not use the custom IdentitySession since the BPM-console is not jused used exclusively for jBPM. Maybe you should ask about this in the BPM-Console forum.
P.S.: Please quote me correctly next time. :)
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4267746#4267746
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4267746
15 years
[jBPM Users] - Re: jbpm-console
by dejanmr
"sebastian.s" wrote : You can create new users programmatically using the IdentityService or you can just add them in the users' table in the database.
|
| I got it working easy, and it was easy to include it to my custom app (ear).
|
| But, can it use custom IdentitySession?
|
| I have custom identity session, but jbpm console works kind of unusual. On initial log in, it ignores custom IdentitySession, and loging is possible only with users on database. But, once logged in, all actions trigger the custom class, and my custom behavior.
|
| Is this expected behaviour? Was jbpm-console intended to be extended with custom user management the same way jbpm itself is?
|
| Thanks.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4267737#4267737
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4267737
15 years