Activiti# 发起流程:
// 启动流程 task = flowService.startWorkflow()方法内参数未序列化


问题描述

提示:controller执行Activti方法参数错误,报异常后,执行两次控制器的方法

 //付款申请则发起合并制单流程   (controllerc层调用流程方法)if(type.equals("付款申请")) {String markerNo=Utils.getSN("ME",4); //合并制单编号int markerId=appMarkerService.saveAppMarker(new AppMaker(Global.getConfig("res.appname"), applyNo, type,"合并制单", markerNo, Utils.formatNum2(fee), Utils.formatNum2(fee), "ids="+applyId,taskIdsStr));appMarkerService.mergeSubmit(markerId, null);   //发起合并制单流程}

AppMaker appMaker(该实体类未序列化)

public String mergeSubmit(Integer id, String taskId) throws Exception {AppMaker appMaker=this.get(id);              //获取制单信息内容(该实体类未序列化)SysUser user = UserUtils.getLoginUser();int userId = user.getId();Map<String, Object> variables = new HashMap<String, Object>();MyVariables myVariables = new MyVariables(user.getId(), user.getName(), user.getId(),user.getName(), appMaker.getNo(), appMaker.getId(), Constants.TASK_MERGE_MARKER_DESC, "", "","","", appMaker,"费用类型:"+appMaker.getType()+"<br>金额:"+appMaker.getFee());variables.put("myVariables", myVariables);variables.put("userId", userId);       //申请的userid//出纳上传回单int receiver = systemService.getUser(Constants.ROLE_RECEIVER);variables.put("receiver", receiver);Task task = null;if (Utils.isEmpty(taskId)) {// 启动流程task = flowService.startWorkflow(Constants.MERGE_MARKER_AUDIT, id, variables, appMaker.getNo());} else {// TODOtask = taskService.createTaskQuery().taskId(taskId).singleResult();flowService.complete(taskId, variables, appMaker.getNo());}// 任务通知,短信flowService.flowPaymentNotice(task,id, "合并制单", Constants.TASK_MERGE_MARKER_DESC+"-" + task.getName(), "[" + user.getName() + "]已提交。", 0);//申请列表return "";}




方法异常后控制器执行了两次

原因分析:

提示:控制器未捕获方法异常:

例如:控制器使用throws Exception未处理异常,导致项目方法异常后,控制器执行了两次。


解决方案:

提示:控制器去除throws Exception使用try catch捕获异常并处理:

例如:

     try {...(省略代码)//付款申请则发起合并制单流程if(type.equals("付款申请")) {String markerNo=Utils.getSN("ME",4); //合并制单编号int markerId=appMarkerService.saveAppMarker(new AppMaker(Global.getConfig("res.appname"), applyNo, type,"合并制单", markerNo, Utils.formatNum2(fee), Utils.formatNum2(fee), "ids="+applyId,taskIdsStr));appMarkerService.mergeSubmit(markerId, null);  //发起合并制单流程}else {appMarkerService.saveAppMarker(new AppMaker(Global.getConfig("res.appname"), applyNo, type,"合并制单", Utils.formatNum2(fee), Utils.formatNum2(fee), "ids="+applyId));}return new Response(ResponseCode.STATUS_SUCCESS, "操作成功");}catch (Exception e) {// TODO: handle exceptione.printStackTrace();return new Response(ResponseCode.STATUS_ERROR);}

org.activiti.engine.ActivitiException: Couldn‘t serialize value ‘MyVariables相关推荐

  1. 解决工作流:org.activiti.engine.ActivitiException: Unknown property used in expression: ${AAAAA}报错

    工作流流向有一个以上的流的方向的时候,必须指定流向,默认时用EL表达式表示,比如一个节点既可以流到A5也可以流到A6,当业务需要流向A5 的时候须指定流转条件${A5} 一条流程有多个流转条件的时候, ...

  2. org.activiti.engine.ActivitiException: couldn‘t resolve duedate问题的一个解决

    今天在弄Activiti工作流部署一个简单的边界定时器 的一个流程, 并设置了边界定时器的时间为二十秒钟,再部署流程的时候,是可以的,然而在我启动流程实例的时候,报了这么一个错,检查之后 ,发现代码没 ...

  3. org.activiti.engine.ActivitiException: Couldn't deserialize object in variable 'application'

    1.遇到工作流的问题第一个想到的,我觉得就是在添加流程变量的的时候,你的实体类有没有实现序列化接口 2.然后,再看其他的问题 3.今天遇到了这个问题,其他的都实现了序列化接口,以为不是这个问题,由于我 ...

  4. org.activiti.engine.ActivitiException: Couldn‘t deserialize object in variable ‘application‘

    1.遇到工作流的问题第一个想到的,我觉得就是在添加流程变量的的时候,你的实体类有没有实现序列化接口 2.然后,再看其他的问题 3.今天遇到了这个问题,其他的都实现了序列化接口,以为不是这个问题,由于我 ...

  5. org.activiti.engine.ActivitiException: src-resolve: Cannot resolve the name 'extension' to a(n) 'ele

    问题描述 无法将名称 'extension' 解析为 'element declaration' 组件 解决办法: 项目工作区有中文路径.

  6. org.activiti.engine.ActivitiOptimisticLockingException updated by another transaction concurrently

    org.activiti.engine.ActivitiOptimisticLockingException: Task[id=5905010, name=审核(市场部)] was updated b ...

  7. activiti报错:org.activiti.engine.ActivitiTaskAlreadyClaimedException: Task ‘12502‘ is already claimed

    在运行activiti时,报错信息如下: Exception in thread "main" org.activiti.engine.ActivitiTaskAlreadyCla ...

  8. org.activiti.engine.ActivitiIllegalArgumentException: inputStream for resource '**' is null 的解决办法

    关于这个问题,是在使用Activiti流程引擎完成项目的建设的过程中遇到的,如下图: 具体内容如下: org.activiti.engine.ActivitiIllegalArgumentExcept ...

  9. 工作流引擎 Activiti 万字详细进阶

    Activiti进阶 一.流程实例 什么是流程实例 流程实例(ProcessInstance)代表流程定义的执行实例. 一个流程实例包括了所有的运行节点.我们可以利用这个对象来了解当前流程实例的进度等 ...

最新文章

  1. 遥控车_vijos1458_纪中1724_水
  2. netstat 查看mysql_CentOS 使用netstat察看mysql端口和连接
  3. Linux下Anaconda3安装及使用教程
  4. java.io.IOException: DerInputStream.getLength(): lengthTag=111, too big解决方法
  5. leetcode初级算法4.两个数组的交集 II
  6. linux常用命令 打开文件,【Linux】常用命令 lsof查看打开的文件
  7. python常用类型转换の方法
  8. mac os x 10.8 安装python-mysqldb
  9. Python面试题解答——第二部分企业面试题
  10. WCF创建Rest服务(附:.net2.0创建Rest服务)
  11. c获取当前程序的路径_漏洞挖掘|使用AFL Fuzzing网络程序
  12. 漫画:什么是删库跑路?
  13. unity黑白滤镜_Unity NGUI图片去色黑白效果
  14. 【LDC1314】电感传感器中文手册与检测原理介绍
  15. Could not create the Java Virtual Machine
  16. linux用c语言模拟抢票系统,C语言可以编写抢票软件吗
  17. 调试lan8720a遇到的奇葩问题,自动协商永远10M。
  18. 四象限法推导lm曲线_SEM数据分析四象限方法
  19. 数据分析----jupyter工具使用指导
  20. 联想小新触控板不行了

热门文章

  1. lifecycle基本使用
  2. 【OSPF实验】华三OSPF配置,华三OSPF实验
  3. 《机器人争霸》和《这!就是铁甲》火了,为什么综艺节目也玩智能科技?
  4. html网页随机一言,一言,局部刷新随机句子
  5. Java把文件压缩然后下载
  6. 笔记本电脑的触控屏使用教程
  7. MacOS下安装Vue.js
  8. 中间件是什么,常用的中间件有哪些?
  9. 看世界杯前VS看世界杯后(6-21更)
  10. PADS技巧--差分线画法