How to get a package from Guvnor and start it
doboss Dec 5, 2012 1:12 PMCan anyone tell me how to get a process/package from Guvnor and run it from a java app using the demo setup?
I have installed jbpm via the JBPM 5.4 full installer. I have taken the ScriptTask.bpmn from jbpm-examples and successfully put it in the Guvnor. I have added a Model Pojo and was able to build the package inside the default package. I have even created a snapshot.
Guvnor lists these URLS:
URL for package documentation: |
| ||
URL for package source: |
| ||
URL for package binary: |
| ||
URL for running tests: |
| ||
Change Set: |
| ||
POJO Model: |
|
Additionally it has this link Download binary package
Which is to: http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/defaultPackage/LATEST
Now I have my main java app:
package org.jbpm.examples.quickstarts;
import java.util.HashMap;
import java.util.Map;
import org.drools.KnowledgeBase;
import org.drools.agent.KnowledgeAgent;
import org.drools.agent.KnowledgeAgentConfiguration;
import org.drools.agent.KnowledgeAgentFactory;
import org.drools.io.Resource;
import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
public class HelloRunner {
public static final void main(String[] args) {
try {
// load up the knowledge base
KnowledgeBase kbase = readKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
Map<String, Object> params = new HashMap<String, Object>();
Person p = new Person("Krisv");
params.put("person", p);
ksession.startProcess("com.sample.script", params);
} catch (Throwable t) {
t.printStackTrace();
}
}
private static KnowledgeBase readKnowledgeBase() throws Exception {
KnowledgeAgentConfiguration aconf = KnowledgeAgentFactory.newKnowledgeAgentConfiguration();
KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent("testKAgent", aconf);
String fileName = "http://localhost:8080/drools-guvnor/rest/packages/defaultPackage/binary";
Resource newUrlResource = ResourceFactory.newUrlResource(fileName);
kagent.applyChangeSet(newUrlResource);
return kagent.getKnowledgeBase();
}
}
I have also tried the URL: http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/defaultPackage/LATEST
But I keep getting this error:
java.lang.RuntimeException: Unable to parse ChangeSet at org.drools.agent.impl.KnowledgeAgentImpl.getChangeSet(KnowledgeAgentImpl.java:454) at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:184) at org.jbpm.examples.quickstarts.HelloRunner.readKnowledgeBase(HelloRunner.java:52) at org.jbpm.examples.quickstarts.HelloRunner.main(HelloRunner.java:30) Caused by: java.io.IOException: Server returned HTTP response code: 401 for URL: http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/defaultPackage/LATEST at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1615) at org.drools.io.impl.UrlResource.grabStream(UrlResource.java:210) at org.drools.io.impl.UrlResource.getInputStream(UrlResource.java:146) at org.drools.io.impl.UrlResource.getReader(UrlResource.java:214) at org.drools.agent.impl.KnowledgeAgentImpl.getChangeSet(KnowledgeAgentImpl.java:451) ... 3 more java.lang.RuntimeException: Unable to parse ChangeSet at org.drools.agent.impl.KnowledgeAgentImpl.getChangeSet(KnowledgeAgentImpl.java:465) at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:184) at org.jbpm.examples.quickstarts.HelloRunner.readKnowledgeBase(HelloRunner.java:52) at org.jbpm.examples.quickstarts.HelloRunner.main(HelloRunner.java:30)
I've read various posts about removing authentication and/or putting in the username/password.
I am running the demo stuff, so my understanding is there is no authentication.
So how do I specify a username/password?
I've read something about putting the password in a changeset.xml, but haven't figured out how to do that either...
Thanks!