Hi,
I am using jbpm 3.2.6.sp1 and facing a very big problem, when i restart the jbpm
workflow engine and make any calls to engine the database is cleared. Ithink i am going
wrong somewhere while starting and fetching the process Instance. Plz Help.
The sequence of tasks that i follow :-
I have created an RMI interface to interact the engine.
1. I start the workflow engine:-
main(){
| jbpmConfiguration = JbpmConfiguration.getInstance("jbpm.cfg.xml");
| deploy("processdefinition.xml");
| }
|
|
| public String deploy(String resourceName) throws RemoteException {
| System.out.println("-------Inside Deploy--------");
| ProcessDefinition processDefinition = null;
| String processId = "";
| JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
| try {
| processDefinition = ProcessDefinition.parseXmlResource(resourceName);
| jbpmContext.deployProcessDefinition(processDefinition);
| } finally {
| jbpmContext.close();
| }
| processId = String.valueOf(processDefinition.getId());
| System.out.println("....Process Definition " +
processDefinition.getName() + " Deployed....");
| System.out.println("-------Out of Deploy--------");
| return processId;
| }
2. Through RMI interface i give call to create a process Instance of deployed
processdefinition.
public String StartExecution(String processDefinitionKey, String inExecutionKey, String
actorId, Map<String, Object> localParameters, Map<String, Object> parameters)
throws RemoteException {
| JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
| String executionKey = "";
| try {
| GraphSession graphSession = jbpmContext.getGraphSession();
| ProcessDefinition processDefinition =
graphSession.findLatestProcessDefinition(processDefinitionKey);
| if (processDefinition != null) {
| ProcessInstance processInstance =
processDefinition.createProcessInstance();
| if (processInstance != null) {
| if (inExecutionKey == null ||
inExecutionKey.equalsIgnoreCase("")) {
| executionKey = processDefinitionKey + ":" +
processInstance.getId();
| } else {
| executionKey = inExecutionKey;
| }
| processInstance.setKey(executionKey);
| System.out.println("Execution Key : " + executionKey);
| ContextInstance contextInstance =
processInstance.getContextInstance();
| if (parameters != null) {
| contextInstance.setVariables(parameters);
| }
| if (localParameters != null) {
| contextInstance.setTransientVariables(localParameters);
| }
| Token token = processInstance.getRootToken();
| System.out.println("Root Node : " +
token.getNode().getName());
| if (actorId != null) {
| if (LdapHelper.isValidUser(actorId)) {
| contextInstance.setVariable(INITIATOR, actorId);
| token.signal();
| } else {
| System.out.println(actorId + " is not present in
LDAP");
| throw new ResourceNotFoundException(actorId + " is
not present in LDAP");
| }
| } else {
| token.signal();
| }
| jbpmContext.save(processInstance);
| } else {
| System.out.println("Process Instance not found");
| }
| } else {
| System.out.println("Process defn not found");
| }
| } finally {
| jbpmContext.close();
| }
| System.out.println("-------Out of Create ProcessInstance--------");
| jbpmConfiguration.startJobExecutor();
| return executionKey;
| }
3. Stop the workflow engine by stopping the RMI server.
4. Start the workflow engine again but with deploy.
main(){
| jbpmConfiguration = JbpmConfiguration.getInstance("jbpm.cfg.xml");
| }
5. At this point the database has values present.
6. Now i try to fetch the current state of the processInstance started, But it fails
saying process definition not found.
public String VWFGetCurrentNodeName(String processDefinitionKey, String executionKey)
throws RemoteException {
| JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
| String currentNodeName = "";
| try {
| GraphSession graphSession = jbpmContext.getGraphSession();
| //CLEARS THE DATABASE ON EXECUTING THIS LINE.
| ProcessDefinition processDefinition =
graphSession.findLatestProcessDefinition(processDefinitionKey);
| if (processDefinition != null) {
| ProcessInstance processInstance =
jbpmContext.getProcessInstance(processDefinition, executionKey);
| if (processInstance != null) {
| Token token = processInstance.getRootToken();
| currentNodeName = token.getNode().getName();
| } else {
| System.out.println("Process Instance not found");
| }
| } else {
| System.out.println("Process defn not found");
| }
| } finally {
| jbpmContext.close();
| }
| System.out.println("Current Node : " + currentNodeName);
| return currentNodeName;
| }
Plz Guide me..
Regards,
Gautam.
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4237053#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...