Store variables in DB?
nt2005 Jan 31, 2012 1:06 PMHey Guys,
The 'problem' I have is a bit difficultly to describe, but I will give my best:
I use jBPM 5.2 in a Web-Application at a jBoss 6 AS with a PostgreSQL (just for info).
I start a process in a Seam bean like this:
public void startProcess() { EntityManagerFactory emf = entityManager.getEntityManagerFactory(); TransactionManagerService tms = new TransactionManagerService(); Environment env = KnowledgeBaseFactory.newEnvironment(); env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf); env.set(EnvironmentName.TRANSACTION_MANAGER, tms.getTransactionManager()); Properties properties = new Properties(); properties.put("drools.processInstanceManagerFactory","org.jbpm.persistence.processinstance.JPAProcessInstanceManagerFactory"); properties.put("drools.processSignalManagerFactory","org.jbpm.persistence.processinstance.JPASignalManagerFactory"); KnowledgeSessionConfiguration config = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(properties); // load up the knowledge base KnowledgeBase kbase = readKnowledgeBase(processid); StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession(kbase, config, env); JPAWorkingMemoryDbLogger logger = new JPAWorkingMemoryDbLogger(ksession); ksession.getWorkItemManager().registerWorkItemHandler(LoadDataWorkItem.NAME, new LoadDataWorkItem()); ksession.getWorkItemManager().registerWorkItemHandler(TextOutputWorkItem.NAME, new TextOutputWorkItem()); ksession.getWorkItemManager().registerWorkItemHandler(ImageOutputWorkItem.NAME, new ImageOutputWorkItem()); String id = "blackdata"; Map<String, Object> params = new HashMap<String, Object>(); params.put("id", id); process = ksession.startProcess("de.toni.new", params); logger.dispose(); }
My jBPM-Process only contains my own WorkItems. The process works great and all.
In my process I have some process variables like:
<property id="image" itemSubjectRef="_imageItem"/> <property id="text" itemSubjectRef="_textItem"/>
That I read and edit in my WorkItems:
String text = (String) workItem.getParameter("text"); Map<String, Object> results = new HashMap<String, Object>(); results.put("text", text); manager.completeWorkItem(workItem.getId(), results);
The problem is, that these variables are in the process and not in the database. I thought, the persistence and serializable of all would save these in my db.
So my question to you:
How can I get these variables out of the process in a db?
I hope you understand what I mean, if not, just ask.