activiti测试文档
来源:互联网 发布:电脑看美剧用什么软件 编辑:程序博客网 时间:2024/05/16 18:08
activiti测试文档
环境说明
- springmvc,spring,mybatis
- activiti:5.22.0
- 数据库:mysql
搭建环境
- 几个重要的配置文件
- activiti.cfg.xml(名字不能写错,放置在根目录,会根据该配置文件生成ProcessEngine流程引擎)
- applicationContext-resources.xml(用于配置mybatis)
- spring-mvc.xml:设置springmvc相关配置
- jdbc.propertis:设置数据库连接参数
activiti开发步骤
- 画流程图
- 在eclispe中安装acti插件
- 几个重要的节点
- startEvent:开始节点
- userTask:用户任务节点
- 重要参数
- general: id,name
- main config
- Assigine:设置执行人(#{user})
- Candidate users: 候选人(可设多个#{userIds})
- Candidate groups:候选组
- listeners:设置监听器:可用于设置执行人,候选人
- SequenceFlow:用于连接各个节点
- main config
- condition:用于设置条件($(money > 500 && money < 1000)
- main config
- 将生成的png图片和bpmn文件压缩为zip文件,防止在resources下
- appTest可用于生成数据库表
- 部署流程图
- 代码
/** * 部署流程图 * @return */ @RequestMapping("deploy") @ResponseBody public Map<String,Object> deploy(){ Map<String,Object> result = new HashMap<>(); try { processEngine.getRepositoryService(). createDeployment(). addZipInputStream(new ZipInputStream(new FileInputStream("D:\\activitiDemo\\src\\main\\resources\\deployment\\leaveflow.zip"))).deploy(); result.put("message","部署成功"); } catch (FileNotFoundException e) { logger.error("部署失败,失败原因:" + e.getMessage()); result.put("message","部署失败"); } return result; }
- 流程部署操作向act_re_procdef和act_re_deployment中插入了数据(参见理解activti表结构)
- 开启流程实例
- 代码:
/** * 开启一个流程实例 * @return */ @RequestMapping("startInstance") @ResponseBody public Map<String,Object> startInstance(@RequestParam String username) { /** * 开启流程实例有两种方式 * 根据key:获得最新版本的流程实例 * 根据流程定义Id: */ Map<String,Object> result = new HashMap<>(); try { Map<String,Object> variables = new HashMap<>(); variables.put("username",username); ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey("qingjiashenqing",variables); String processInstanceId = processInstance.getProcessInstanceId(); result.put("processInstanceId",processInstanceId); result.put("message","申请成功"); } catch (Exception e) { logger.error("请假申请失败:失败原因:" + e.getMessage()); result.put("message","申请失败"); } return result; }
- 可在开启之前设置流程变量,设置申请人(username是流程图中定义好的变量)- 流程实例开启操作向act_ru_task,act_hi_actinstm,act_hi_procinst,act_hi_taskinst,act_ru_execution中插入了数据
- 查询个人任务
- 代码
/** * 查询个人任务 * @return */ @RequestMapping("queryMyTask") @ResponseBody public List<String> queryMyTask(@RequestParam String username) { List<String> list = new ArrayList<>(); List<Task> taskList = processEngine.getTaskService().createTaskQuery().taskAssignee(username).list(); HashMap<String,Object> result = new HashMap<>(); //这里的taskList不能直接存入Map中 for (Task task : taskList) { list.add(task.getName()); } return list; }
- 可根据执行人姓名,查询个人任务
- 完成任务操作
- 代码
/** * 部门经理审批 * @return */ @RequestMapping("depApproval") @ResponseBody public Map<String,Object> depApproval(@RequestParam String processInstanceId) { Map<String,Object> result = new HashMap<>(); //根据流程定义id获得任务对象 Task task = processEngine.getTaskService().createTaskQuery().processInstanceId(processInstanceId).singleResult(); //完成任务 processEngine.getTaskService().complete(task.getId()); /** * TODO 在开发中,通过类的方式设置好下一个任务的办理人 */ result.put("message","部门经理审批"); return result; }
- 通过complete方法执行任务
阅读全文
0 0
- activiti测试文档
- Activiti使用文档
- Activiti相关文档
- Activiti中文说明文档
- activiti(四)测试类编写
- Activiti-5.3-源码解析流程文档解析
- 测试文档
- 测试文档
- 测试文档
- 测试文档
- 测试文档
- 测试文档
- 文档测试
- 文档测试
- 文档测试
- 文档测试
- 测试文档
- 文档测试
- Junit
- android developer tiny share-20170705
- 不定积分
- android按行数动态适配文案字号
- 转载{shader相关}
- activiti测试文档
- (一)dubbo+redis注册中心+spring
- 设置TabLayout的indicator长度
- iOS 设备型号对照表
- 程序员创业会面临什么困境?
- centos vagrant 外面端口转发不进去里面的nginx/apache 80端口
- Maven学习
- XSS的原理分析与解剖
- Cygwin 下载极速源推荐