上一篇我们看了流程执行时的流程实例,任务,和执行对象,我们接着看流程变量。
流程变量
1.流程图
流程变量在整个工作流中扮演很重要的作用。例如:请假流程中有请假天数、请假原因等一些参数都为流程变量的范围。流程变量的作用域范围是只对应一个流程实例。也就是说各个流程实例的流程变量是不相互影响的。流程实例结束完成以后流程变量还保存在数据库中(存放到流程变量的历史表中)。
2.部署流程定义
private final ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/**
* 功能: 部署流程定义(从InputStream).<br/>
* date: 2014年12月23日 下午3:40:40 <br/>
*
* @author xzzhao@wisdombud.com
*/
@Test
public void deploymentProcessDefinitionByInputStream() {
InputStream inputStreambpmn = this.getClass().getResourceAsStream("/diagrams/processVariables.bpmn");
InputStream inputStreampng = this.getClass().getResourceAsStream("/diagrams/processVariables.png");
Deployment deployment = processEngine.getRepositoryService()
// 与流程定义和部署相关的Service
.createDeployment()
// 创建部署对象
.name("流程定义")
// 部署名称
.addInputStream("processVariables.bpmn", inputStreambpmn) // 使用资源文件的名称,和输入流部署
.addInputStream("processVariables.png", inputStreampng).deploy(); // 部署
System.out.println("部署ID:" + deployment.getId());
System.out.println("部署名称:" + deployment.getName());
}
3.启动流程实例
/**
* 功能: 启动流程实例.<br/>
* date: 2014年12月23日 下午3:45:37 <br/>
*
* @author xzzhao@wisdombud.com
*/
@Test
public void startProcessInstance() {
// 流程定义的key
String processDefinitionKey = "processVariables";
ProcessInstance pi = processEngine.getRuntimeService()// 获取正在执行的流程实例和执行对象相关的Service
.startProcessInstanceByKey(processDefinitionKey); // 使用流程定义的key启动流程实例
// key