[jBPM] - jBpm 5.2 persistence problem - Oracle - Unknown entity: org.drools.persistence.info.SessionInfo
by Samrat Roy
Samrat Roy [https://community.jboss.org/people/whizkid.samrat] created the discussion
"jBpm 5.2 persistence problem - Oracle - Unknown entity: org.drools.persistence.info.SessionInfo"
To view the discussion, visit: https://community.jboss.org/message/717687#717687
--------------------------------------------------------------
Hi , I am setting up jBpm 5.2 with persistence for the first time and facing a LoT of issues. I am using jpm 5.2 with Spring 3.0 and Hibernate 3.5.6 on jBoss AS 7 server.
We all know that jBoss AS 7 comes with Hibernate 4 as the default hibernate , but I need to use the Hibernate 3 in my project so I installed hibernate 3 as a module in as7 and that is working as expected . I excluded Hibernate 4 with jboss-deployment-structure.xml and added org.jboss.as.jpa.hibernate:3 as a dependency in manifest.mf [refer http://badr-elhouari.blogspot.in/2011/10/how-to-use-hibernate-3-as-jpa-pr... here how I added hibernate:3 as a module in AS7]
That said , I have configured the entire knowledge base and knowledge session in spring so that I dont have to write code for that - Taking tips from drools - integration module and by using drools-grid-impl jar and drools-spring jar.
Drools-grid jar contains a persistence.xml which used in memory DB [h2] so I modified the xml to use oracle and hibernate 3 instead.
Here is my *application context*:
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" p:dataSource-ref="datasource">
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" p:database="${jpa.database}" p:showSql="${jpa.showSql}"/>
</property>
<property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml"/>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<!-- First: declare JBPM JPA Session with a process definition -->
<jbpm:kbase id="kbase">
<jbpm:resources>
<jbpm:resource type="BPMN2" source="classpath:LeaveFlow.bpmn" />
</jbpm:resources>
</jbpm:kbase>
<jbpm:ksession id="ksession" type="stateful" kbase="kbase">
<jbpm:configuration>
<jbpm:jpa-persistence>
<jbpm:entity-manager-factory ref="entityManagerFactory"/>
<jbpm:transaction-manager ref="transactionManager"/>
</jbpm:jpa-persistence>
</jbpm:configuration>
</jbpm:ksession>
<!-- Declare a TaskServer -->
<bean class="org.jbpm.task.service.TaskService" id="taskService">
<constructor-arg ref="entityManagerFactory"/>
<constructor-arg>
<bean class="org.drools.SystemEventListenerFactory" factory-method="getSystemEventListener"/>
</constructor-arg>
</bean>
<bean class="org.jbpm.task.service.mina.MinaTaskServer" id="taskServer">
<constructor-arg ref="taskService"/>
<constructor-arg><value>${jbpm.task.server.port}</value></constructor-arg>
</bean>
<!-- And start TaskServer on the configured port -->
<bean class="java.lang.Thread" id="taskServerThread" init-method="start">
<constructor-arg ref="taskServer"/>
</bean>
<!-- Declare a TaskClient -->
<bean class="org.jbpm.task.service.mina.MinaTaskClientConnector" id="taskClientConnector">
<constructor-arg value="taskClient"/>
<constructor-arg>
<bean class="org.jbpm.task.service.mina.MinaTaskClientHandler">
<constructor-arg>
<bean class="org.drools.SystemEventListenerFactory" factory-method="getSystemEventListener"/>
</constructor-arg>
</bean>
</constructor-arg>
</bean>
<bean class="org.jbpm.task.service.TaskClient" id="taskClient">
<constructor-arg ref="taskClientConnector"/>
</bean>
<!-- Declare a HumanTaskHandler -->
<bean class="org.jbpm.task.service.AsyncTaskServiceWrapper"
id="humanTaskClient">
<constructor-arg ref="taskClient"/>
</bean>
<!-- It uses previously created TaskClient -->
<bean class="org.jbpm.process.workitem.wsht.SyncWSHumanTaskHandler" id="humanTaskHandler">
<constructor-arg ref="humanTaskClient"/>
<constructor-arg ref="ksession"/>
</bean>
<!-- Configure its connection to the local server -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" depends-on="humanTaskHandler" id="setConnection">
<property name="targetObject" ref="humanTaskHandler"/>
<property name="targetMethod" value="setConnection"/>
<property name="arguments">
<list>
<value>${jbpm.task.client.address}</value>
<value>${jbpm.task.client.port}</value>
</list>
</property>
</bean>
<!-- And connect HumanTaskHandler (implicit TaskClient connection) -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" depends-on="setConnection">
<property name="targetObject" ref="humanTaskHandler"/>
<property name="targetMethod" value="connect"/>
</bean>
<!-- Finnaly, register HumanTaskHandler in the session -->
<bean factory-bean="ksession" factory-method="getWorkItemManager" id="workItemManager"/>
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="workItemManager"/>
<property name="targetMethod" value="registerWorkItemHandler"/>
<property name="arguments">
<list>
<value>Human Task</value>
<ref bean="humanTaskHandler"/>
</list>
</property>
</bean>
The Exception I am getting while server startup is :
20:07:26,443 ERROR [org.drools.persistence.SingleSessionCommandService] (MSC service thread 1-3) Could not commit session: java.lang.IllegalArgumentException: *Unknown entity: org.drools.persistence.info.SessionInfo*
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:671) [hibernate-entitymanager-3.5.6-Final.jar:3.5.6-Final]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_23]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [:1.6.0_23]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [:1.6.0_23]
at java.lang.reflect.Method.invoke(Method.java:597) [:1.6.0_23]
at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:365) [org.springframework.orm-3.0.5.RELEASE.jar:]
at $Proxy32.persist(Unknown Source) at org.drools.persistence.jpa.JpaPersistenceContext.persist(JpaPersistenceContext.java:17) [drools-persistence-jpa-5.3.1.Final.jar:]
at org.drools.persistence.SingleSessionCommandService.<init>(SingleSessionCommandService.java:152) [drools-persistence-jpa-5.3.1.Final.jar:]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [:1.6.0_23]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) [:1.6.0_23]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) [:1.6.0_23]
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) [:1.6.0_23]
at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.buildCommandService(KnowledgeStoreServiceImpl.java:129) [drools-persistence-jpa-5.3.1.Final.jar:]
at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.newStatefulKnowledgeSession(KnowledgeStoreServiceImpl.java:67) [drools-persistence-jpa-5.3.1.Final.jar:]
at org.drools.persistence.jpa.JPAKnowledgeService.newStatefulKnowledgeSession(JPAKnowledgeService.java:122) [knowledge-api-5.3.1.Final.jar:]
at org.drools.container.spring.beans.StatefulKnowledgeSessionBeanFactory.internalAfterPropertiesSet(StatefulKnowledgeSessionBeanFactory.java:85) [drools-spring-5.3.0.Final.jar:]
at org.drools.container.spring.beans.AbstractKnowledgeSessionBeanFactory.afterPropertiesSet(AbstractKnowledgeSessionBeanFactory.java:123) [drools-spring-5.3.0.Final.jar:]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477) [org.springframework.beans-3.0.5.RELEASE.jar:]
.......
This is driving me nuts as I have all the required jars in my classPath. Please help !!!
I am attaching important config files :
Application Ctxt of my application , MANIFEST.MF of my application , persistence.xml from my application and the persistence.xml which I modified in drools-grid jar
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/717687#717687]
Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&con...]
12 years, 2 months
[jBPM] - jBPM 5.3 released
by Kris Verlaenen
Kris Verlaenen [https://community.jboss.org/people/KrisVerlaenen] created the discussion
"jBPM 5.3 released"
To view the discussion, visit: https://community.jboss.org/message/737803#737803
--------------------------------------------------------------
http://kverlaen.blogspot.com/2012/05/jbpm-53-released.html http://kverlaen.blogspot.com/2012/05/jbpm-53-released.html
jBPM 5.3 has just been released. It includes a large amount of smaller improvements and fixes, and also contains a few new bigger features as well:
* We would like to introduce our http://docs.jboss.org/jbpm/v5.3/userguide/ch.eclipse-bpmn-plugin.html new Eclipse editor for defining business process in Eclipse (using the BPMN 2.0 standard). This editor will offer support for the full BPMN2 specification, and currently offers support for at least the same constructs as the previous plugin. We will continue to extend it over time with all the other constructs the jBPM core engine already supports, but we would like to hear your feedback as well !
http://1.bp.blogspot.com/-M0rOaqC7HwI/T7oxPA05MbI/AAAAAAAAASE/lyR1eCUZu_o... http://1.bp.blogspot.com/-M0rOaqC7HwI/T7oxPA05MbI/AAAAAAAAASE/lyR1eCUZu_o...
* A first version of the form builder has been released as well. This form builder allows you to create and edit your forms (for tasks and processes) in a graphical way, using drag and drop. It supports the usual components like labels, text fields and areas, buttons, etc. but already has support for various layouts, scripting, building your own components, etc. [Note: this first version is currently only supported on FireFox but we're working on adding support for all other browsers as well]
http://1.bp.blogspot.com/-Ov7gkMW1v9Q/T7oz5ZdREBI/AAAAAAAAASQ/JBXySeFPPRI... http://1.bp.blogspot.com/-Ov7gkMW1v9Q/T7oz5ZdREBI/AAAAAAAAASQ/JBXySeFPPRI...
* The web designer received a http://surdilovic.wordpress.com/2012/04/10/jbpm-designer-version-2-1-rele... lot of love as well, with new features like user-friendly property editors, color themes, a dictionary, inline form editing, etc.
http://1.bp.blogspot.com/-fokSxkZGTrA/T7o0_8y7rwI/AAAAAAAAASY/OCHQ0XrtrgE... http://1.bp.blogspot.com/-fokSxkZGTrA/T7o0_8y7rwI/AAAAAAAAASY/OCHQ0XrtrgE...
* The jbpm-human-task module has been split up in a jbpm-human-task-core module and sub-modules for the different transport protocols available (hornetq, mina, jms), and a separate war that can be deployed in the application server (and is made easily http://docs.jboss.org/jbpm/v5.3/userguide/ch.human-tasks.html#d0e5383 configurable now). The installer now uses the war (with HornetQ) by default.
* Integration between the jBPM console and Guvnor has been upgraded, to support new packages being added in Guvnor, removal of processes, etc.
* The human task module now supports http://docs.jboss.org/jbpm/v5.3/userguide/ch.human-tasks.html#d0e4934 escalations and notifications.
* Lots of persistence improvements to better support different databases, and we're using a new serialization technology (Protobuf) to better support upgrading / migration in the future.
You can download the release https://sourceforge.net/projects/jbpm/files/jBPM%205/jbpm-5.3.0.Final/ here (if you're not sure what you're looking for, downloading the full installer and then following the http://docs.jboss.org/jbpm/v5.3/userguide/ch.installer.html installer chapter to set up your environment and run through the tooling with a simple example is probably a good idea), or browse the http://docs.jboss.org/jbpm/v5.3/userguide/ documentation and http://docs.jboss.org/jbpm/v5.3/javadocs/ javadocs.
jBPM 5.3.0.Final has been released in sync with the latest http://blog.athico.com/2012/05/drools-540final-released.html Drools 5.4.0.Final release.
We're still updating our docs and writing some blogs on the new features as we speak, so you can expect more updates from us soon!
If you have any questions / issues, let us know:
* Ask questions on IRC: chat.freenode.net:6667 #jbpm (there is a web-based client available http://webchat.freenode.net/ here)
* Create a JIRA issue: https://issues.jboss.org/browse/JBPM https://issues.jboss.org/browse/JBPM
* Ask the community in the https://community.jboss.org/jbpm?view=discussions forum
The jBPM team
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/737803#737803]
Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&con...]
12 years, 2 months
[jBPM] - signal event doesn't work from REST API
by Rudi Fisher
Rudi Fisher [https://community.jboss.org/people/rudi_fisher] created the discussion
"signal event doesn't work from REST API"
To view the discussion, visit: https://community.jboss.org/message/649256#649256
--------------------------------------------------------------
I want to use REST API to call signal. There is some implementation in ProcessMgmtFacade of gwt-console-server for this. I see the source code and I finelly found this in CommandDelegate of jbpm-gwt-core:
public void signalExecution(String executionId, String signal) {
ksession.getProcessInstance(new Long(executionId)).signalEvent("signal", signal);
}
This doesn't fulfil my requirements so I made changes to this class recompile and redeploy. This step is OK, because I made some other changes about this REST API (start process with params) and everythings work fins, so I think the problem is not in this my changed implementation of CommandDelegate. New implementation is:
public void signalExecution(String executionId, String eventType, String eventValue) {
ksession.getProcessInstance(new Long(executionId)).signalEvent(eventType, eventValue);
}
I took example of signal event from original examples to be sure that process is designed OK. I took BPMN2-EventBasedSplit.bpmn2. I tested in Eclipse and works fine - after signal call, process cointinued and finally finished. I deployed this process into my Guvnor repo and started by GWT console. Process stopped and waits at signal nodes (see attached picture).
https://community.jboss.org/servlet/JiveServlet/showImage/2-649256-17846/... https://community.jboss.org/servlet/JiveServlet/downloadImage/2-649256-17...
At this point I wanted to push process by send signal event by REST API with new implementation. Method signalExecution in CommandDelegate is called OK and this method take correct process instance (I have log line there to see process instance). But it seems signalEvent on process instance doesn't work. I'm using the same parameters for signal event in Eclipse and in CommandDelegate. I'm confused about what is different between execution in unit test in Eclipse and at server. I made many tests and examples but my probem has no solution to this day. I found some discussion about similar issues but this not solve this problem.
Working unit test in Eclipse
public static final void main(String[] args) throws Exception {
// load up the knowledge base
KnowledgeBase kbase = readKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
ProcessInstance processInstance = ksession.startProcess("com.sample.test");
System.out.println("process instance:" + processInstance.getState());
ksession.signalEvent("Yes", "YesValue", processInstance.getId());
System.out.println("process instance:" + ksession.getProcessInstance(processInstance.getId()));
// NO
processInstance = ksession.startProcess("com.sample.test");
System.out.println("process instance:" + processInstance.getState());
//ksession = restoreSession(ksession, true);
ksession.signalEvent("No", "NoValue", processInstance.getId());
System.out.println("process instance:" + ksession.getProcessInstance(processInstance.getId()));
}
private static KnowledgeBase readKnowledgeBase() throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("BPMN2-EventBasedSplit.bpmn2"), ResourceType.BPMN2);
return kbuilder.newKnowledgeBase();
}
Not working code in CommandDelegate and calling at GWT server
ksession.getProcessInstance(new Long(executionId)).signalEvent("Yes", "YesValue");
For BPMN2-EventBasedSplit.bpmn2 see official examples in version 5.2.0 Final
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/649256#649256]
Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&con...]
12 years, 3 months
[jBPM] - jBPM WorkItemHandler problem: when Object is passed as param it's transformed to String.
by Adam Bach
Adam Bach [https://community.jboss.org/people/heathcliff] created the discussion
"jBPM WorkItemHandler problem: when Object is passed as param it's transformed to String."
To view the discussion, visit: https://community.jboss.org/message/733763#733763
--------------------------------------------------------------
Hi,
I'm passing an object of type Task to WorkItemHandler implementation and it lands in params map as after invoking toString method on my obejct.
WID definition:
import org.drools.process.core.datatype.impl.type.StringDataType;
import org.drools.process.core.datatype.impl.type.FloatDataType;
import org.drools.process.core.datatype.impl.type.ObjectDataType;
[
// the CreateProject work item
[
"name" : "TaskTime",
"parameters" : [
"host" : new StringDataType(),
"task" : new ObjectDataType(),
"date" : new ObjectDataType(),
"time" : new FloatDataType(),
],
"displayName" : "TaskTime",
"icon" : "icons/taskTime.png"
]
]
When I double click on my domain specific node on designer I get a window where I can provide values for parameters. So for task param I have given #{taskObj} and instead of an actual object I have received a String version of this object. The workaround is to explicitly map this param in properties view, but the idea was to give users UI for setting those values in more pleasent way.
ANOTHER problem is that when I set some values to my custom node than Properties view is not changing accorgingly to my my node type. Meannig when I click on some node than the Properties view is updated to show those props. Than when I click to my TaskTime node than Properties view has only those props which ware available for previous node, and if some props are common for both node than values for tham are updated with ne values. So when I click on my TaskTime node I can see the host,task,date,time properties, nor I can see on Entry and on Exit action properties. Furthermore If previosus node had such properties than I can see them for TaskTime node but when I update them than they are updated for that previosud node.
Can someone confirm those issues? Any help on workarounds?
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/733763#733763]
Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&con...]
12 years, 3 months