activiti variables 超过两个参数就报错?求大神大家帮忙看看看

流程变量在整个工作流中扮演很重要的作用
  例如:请假流程中有请假天数、请假原因等一些参数都为流程变量的范围。流程变量的作用域范围是流程实例。也就是说各个流程实例的流程变量是不相互影响的。
添加流程变量
  1、在启动流程实例时,可以添加流程变量。  
public void startProcess() throws Exception {
String processDefinitionKey ="varTest";
// 创建流程变量
Map&String,Object& variables = new HashMap&String,Object&();
variables.put("请假人", "冯小刚");
// 在启动时设置流程变量
ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey , variables );
System.out.println("pid:" + pi.getId());
  1)&&&& 在启动流程实例时,通过重载startProcessInstanceByKey的方法可以加载流程变量。
  2)&&&& 第二个参数要求是Map&String ,Object&类型,意味着可以添加多个流程变量。
  3)&&&& 当这段代码执行完以后,会在数据库表act_ru_variable中添加两行记录。
  2、在办理任务时
    在办理任务时,有时候任务办理完成以后,要传递一些信息到系统中。这个时候可以利用TaskService这个类来添加流程实例。
public void setVar() throws Exception {
String processInstanceId = "1901";
Task task =taskService.createTaskQuery().taskAssignee("manager").processInstanceId(processInstanceId ).singleResult();
String taskId
在办理过程中设置流程变量
taskService.setVariable(taskId, variableName, value)
// 设置一个流程变量
Map&String, Object& variables = new HashMap&&();
variables.put("请假时间", "");
variables.put("请假天数", "3");
variables.put("请假天数", 3);
taskService.setVariables(task.getId(), variables );
* 在任务完成时设置流程变量
plete(taskId)
Map&String, Object& variables = new HashMap&&();
variables.put("请假原因", "约会!!");
plete(task.getId(), variables);
  1)&&&& 利用setVariables方法在任务办理过程中添加一批流程变量。
  2)&&&& 利用setVariable方法在任务办理过程中添加一个流程变量。
  3)&&&&&TaskService有一个重载 complete方法
  3、执行流程实例时直接在Execution上设置流程变量&
    因为流程变量的作用域就是流程实例,所以只要设置就行了,不用管在哪个阶段
public void setVarByExecution() throws Exception {
String processInstanceId = "1901";
Task task =taskService.createTaskQuery().taskAssignee("manager").processInstanceId(processInstanceId ).singleResult();
String taskId
在办理过程中设置流程变量
taskService.setVariable(taskId, variableName, value)
// 设置一个流程变量
Map&String, Object& variables = new HashMap&&();
variables.put("批注", "好好约会,注意安全!!");
runtimeService.setVariables(task.getExecutionId(), variables);
* 在任务完成时设置流程变量
plete(taskId)
Map&String, Object& variables = new HashMap&&();
variables.put("请假原因", "约会!!");
plete(task.getId(), variables);
另一种设置变量的方法:
public void setVarByObj() throws Exception {
String processInstanceId = "1901";
Task task =taskService.createTaskQuery().taskAssignee("manager").processInstanceId(processInstanceId ).singleResult();
Form form = new Form();//这个javabean实现了Serializable接口       form.setName("表单名称");
form.setContent("我是张三,我要请假3天");
taskService.setVariable(task.getId(), "form", form);
获取流程变量
  可以通过runTimeService的方法来获取流程变量。
public void viewVar() throws Exception {
String processInstanceId = "1901";
Task task =taskService.createTaskQuery().taskAssignee("user").processInstanceId(processInstanceId ).singleResult();
System.out.println("taskName:" + task.getName());
String variableName = "请假人";
String val = (String)taskService.getVariable(task.getId(), variableName );
Map&String,Object& vars = taskService.getVariables(task.getId());
for (String variableName : vars.keySet()) {
String val = (String) vars.get(variableName);
System.out.println(variableName + " = " +val);
  说明:这些流程变量是从act_ru_variable这个表中读出来的。
阅读(...) 评论()activiti框架plete(taskId,variables)执行时为什么抛出Exception while invoking TaskListener: null?-问答-最代码广告加载中,请稍后...&&等activiti框架plete(taskId,variables)执行时为什么抛出Exception while invoking TaskListener: null?activiti框架中plete(taskId,variables)执行时,触发Exception while invoking TaskListener: null错误,求解。1个牛币所有回答列表(2)你看一下流程图里面当前taskID任务的监听器配置是不是你所指定的类Exception while invoking TaskListener: Exception while invoking TaskListener: null 流程中,我部署的流程名称为LeaveBillProcess,plete(task.getId());得到的id和ACT_RU_TASK表中的ID值相等,但是complete()执行后就包这个错。。。process id=&LeaveBill& name=&LeaveBillProcess& isExecutable=&true&等等等等等等等等等等等等最热搜索问答话题编程语言基础Web开发数据库开发客户端开发脚本工具游戏开发服务器软硬件开源组件类库相关问答最近浏览暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级扫描二维码关注最代码为好友"/>扫描二维码关注最代码为好友

我要回帖

更多关于 大神帮忙ps 的文章

 

随机推荐