java service 服务_流程任务-服务任务(Java Service Task)

服务任务用于请求流程外任务或自动执行任务,有3种实现:Java Service Task/Web Service /Task和shellTask,

当流程到达该任务时,执行相应的java类或webservice或shell命令。

1.Java Service Task

1.1使用activiti:class指定java类,该类必须实现JavaDelegate,activiti每次都会创建新的实例。

public class MyJavaDelegate implementsJavaDelegate{public void execute(DelegateExecution execution) throwsException {

System.out.println(" 实现 JavaDelegate 的 JavaSeviceTask: " + this);

}

}

流程文件全名限定delete类

activiti:class="org.crazyit.activiti.MyJavaDelegate">

1.2使用delegateExpression指定java类,该类必须实现JavaDelegate和Serializable

a.创建java service task类

public class MyJavaDelegate implementsJavaDelegate, Serializable {public void execute(DelegateExecution execution) throwsException {

System.out.println(" 实现 JavaDelegate 的 JavaSeviceTask: " + this);

}

}

b.流程文件juel表达式

c.实例的创建由提供者提供,需将实例设置到流程参数中:

//部署流程文件

repositoryService.createDeployment().addClasspathResource("bpmn/JUELClass.bpmn").deploy();

Map vars = new HashMap();

vars.put("myDelegate", newMyJavaDelegate());//启动流程

ProcessInstance pi = runtimeService.startProcessInstanceByKey("process1", vars);

1.3 使用activiti:expression 调用普通的java bean

a.创建java bean

public class MyJavaBean implementsSerializable {publicString getName() {return "bestmyself"}public voidprint(Execution exe) {

System.out.println("使用Java Bean的print方法:" +exe.getId());

}

}

b.流程文件结合juel调用对象方法

activiti:expression="${myBean.print(execution)}">

activiti:expression="${execution.setVariable(‘myName‘, myBean.name)}">

c.设置java bean 实例到流程中

Map vars = new HashMap();

vars.put("myBean", newMyJavaBean());//启动流程

ProcessInstance pi = runtimeService.startProcessInstanceByKey("process1", vars);//进行任务参数查询

System.out.println( runtimeService.getVariable(pi.getId(), "myName"));

你可能感兴趣的:(java,service,服务)