Se eu quisesse que um método via REST:

  1. Criasse uma instancia do meu processo
  2. Navega-se para o próximo nó após o Start
  3. Salva-se isto no banco de dados
  1. Ressalvas: Resta validar se o Nó é do tipo Start e se o Classloader consegue capturar os processos quando não deployados no mesmo projeto.

O método seria:


[java]@GET
@Path(”/start/process/{processdefinition}/{user}”)
@ProduceMime(”text/plain”)
public String startProcesInstance(
@PathParam(”processdefinition”)String processDefintion,
@PathParam(”user”)String user) {
JbpmContext ctx = JbpmConfiguration.getInstance().createJbpmContext();
try {
ProcessInstance instance = ctx.newProcessInstance(processDefintion);
instance.getContextInstance().setVariable(”user”, user);
Token t = instance.getRootToken();
t.signal();
ctx.save(instance);return new Long(instance.getId()).toString();
}
catch (Exception e) { e.printStackTrace();}
finally {
ctx.close();
}
return “ERROR”;}

[/java]


Graças ao XStream 1.3, já consigo retornar resultados em JSON, agora posso criar interfaces usando Ajax, mesmo publicando Serviços num barramento ESB, ou mesmo um simples serviço em Rest, como no exemplo:

[java] @GET
@Path(”/process/all/json”)
@ProduceMime(”text/plain”)
public String getAllProcessAsJSON() {
JbpmContext ctx = JbpmConfiguration.getInstance().createJbpmContext();
XStream xstream = new XStream(new JettisonMappedXmlDriver());
xstream.alias(”process-definition”, org.jbpm.graph.def.ProcessDefinition.class);
List list;try{
list = ctx.getGraphSession().findAllProcessDefinitions();
} finally {
ctx.close();
}
return xstream.toXML(list);[/java]


E né que essa p(iiiiiiiiii) funciona, e bem! Agora até um cara tosco como eu consegue criar interfaces bonitinhas com extJS :) acessando dados do JSON

Leave a Reply