接着上篇hello world 说,之前的流程是一个简单的工作流程 不符合业务逻辑,那么稍微正常的流程图应该怎么设计呢?

首先请假是要设置启动人为申请人--填写请假单--到领导审批--审批之通过之后系统发送通过消息然后结束

审核不通过则返回重新填写请假单

一、设置启动人为申请人

谁开启的流程实例,那么说明这个人就是请假的申请人

在开始节点设置开启人 initiator 属性 starter

在用户任务节点设置任务受理人 属性assignee 设置 ${starter}

设置当前用户为操作人
identityService.setAuthenticatedUserId("admin");

获取全局参数

starter runtimeService.getVariable("6ade2265-3d3b-11ec-97fd-00ff0eca940e","starter")

关于el表达式详情  camunda表达式语言

二、填写请假单

填写请假单就要用到camunda的表单功能了

camunda表单分内置动态表单 和外链表单 只有在开始节点和任务节点是可以添加表单

内置表单

在xml的表现形式为节点下的extensionElements标签的formData标签下的 formField

根据流程实例id 获取开始节点 表单数据

@GetMapping("/getStartFormData")public void getStartFormData( String processDefinitionId) {StartFormData startFormData = formService.getStartFormData(processDefinitionId);List<FormField> formFields = startFormData.getFormFields();for (FormField formField : formFields) {System.out.println("############");System.out.println(formField.getId());System.out.println(formField.getValue());System.out.println(formField.getType());System.out.println(formField.getTypeName());System.out.println(formField.getLabel());System.out.println(formField.getDefaultValue());System.out.println("############");}}

根据任务id 获取任务节点表单数据

 @GetMapping("/getTaskFormData")public void getTaskFormData(String taskId ) {Task task = taskService.createTaskQuery().taskId(taskId).singleResult();System.out.println(task.getId());TaskFormData taskFormData = formService.getTaskFormData(task.getId());System.out.println("############");System.out.println(taskFormData.getDeploymentId());System.out.println(taskFormData.getTask());System.out.println(taskFormData.getFormKey());List<FormProperty> formProperties = taskFormData.getFormProperties();System.out.println(formProperties);List<FormField> formFields = taskFormData.getFormFields();System.out.println(formFields);System.out.println("############");}

根据流程实例id 提交开始节点表单

   public void submitStartForm(String processDefinitionId) {VariableMap variableMap = Variables.createVariables().putValue("reason", "请假三天").putValue("name", "张三")ProcessInstance processInstance = formService.submitStartForm(processDefinitionId, variableMap);System.out.println(processInstance);}

根据任务id 提交任务表单

   @GetMapping("/submitTaskForm")public void submitTaskForm(String taskId) {VariableMap variableMap = Variables.createVariables().putValue("name", "王五").putValue("reason", "年假");formService.submitTaskForm(taskId, variableMap);}

外置表单

内置表单的xml表现形式为 节点里面的Formkey 属性

获取开始节点表单formkey

  @GetMapping("/getStartFormKey")public  void  getStartFormKey(String processDefinitionId){String startFormKey = formService.getStartFormKey(processDefinitionId);System.out.println("startFormKey:"+startFormKey);}

获取任务节点表单formkey

@GetMapping("/getTaskFormKey")public  void  getStartFormKey(String processDefinitionId, String taskId){String taskFormKey = formService.getTaskFormKey(processDefinitionId, taskId);System.out.println("taskFormKey:"+taskFormKey);}

三、

更多请看camunda集成SpringBoot 自定义节点样例

camunda工作流开发实战------04 请假流程实例相关推荐

  1. camunda工作流开发实战------03 hello world

    一.camunda modeler流程设计器 想要开发工作流hello world ,首先得要有一个流程设计器来设计流程 camunda 提供了流程设计程序 camunda modeler 下载地址: ...

  2. jBPM4工作流开发实战 之 第一部分 工作流基础【私塾在线原创】

    视频配套PPT,视频地址[  最新jbpm4工作流开发实战视频课程] 考虑这样一个实际问题,如果公司派我们出差,会发生差旅费.那么,差旅费报销的流程是什么样的呢? 首先,要先填写一张单子,写明出差的时 ...

  3. Activiti7工作流-使用Idea开发体验Activti_请假流程---工作流工作笔记006

    然后上一个文章我们已经创建了一个请假流程,然后然后我们用这个请假流程来做一下,审批 来使用一下activiti完成一个简单的工作流 首先我们是来部署,可以看到,部署首先要拿到ProcessEngine ...

  4. springboot集成flowable创建请假流程实例

    springboot如何集成flowable,如何部署flowable在线编辑器画bpm图以及bpm图的画法,我在上一篇博客中写了,这里直接上代码(源码地址:晚安/flowable_holiday ( ...

  5. 【Activiti工作流】5. 简单请假流程

    1. 画出流程图 使用之前安装的Eclipse的流程设计器,画出如下流程图: 1.1 设置开始节点 在properties中选中Main config:设置如下: 然后选中Form,设置如下: 具体操 ...

  6. Android IoT开发实战 | 04 - 创建一个新的活动Activity(登录界面)

    本系列IoT App开发笔记系b站视频教程学习笔记,视频地址: [7天Java0基础速成安卓开发]Day1 Android工程代码是怎么运行的 [7天Java0基础速成安卓开发]Day2 常用控件和界 ...

  7. CrazyWing:Python自动化运维开发实战 六、流程控制

    Python 条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. Python程序语言指定任何非0和非空(null)值为true,0 或者 nu ...

  8. jBPM4工作流开发实战 之 第五部分 其他知识

    jBPM的异步执行介绍 jBPM对于所有的流程执行操作默认都是同步的.也就是说,默认是一个活动执行完成后,再执行另一个活动.  如,Task1->Java1->Java2->Task ...

  9. php 微信开发实战pdf,微信开发实战之模块化的实例详解

    在任何一个大型应用中模块化是很常见的,与一些更传统的编程语言不同的是,JavaScript (ECMA-262版本)还不支持原生的模块化. Javascript社区做了很多努力,在现有的运行环境中,实 ...

最新文章

  1. Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition
  2. DRM-内容数据版权加密保护技术学习(上):视频文件打包实现(转)
  3. 《移动项目实践》实验报告——Android初级控件
  4. 树和二叉树的基本概念(二级)
  5. Eclipse没有的工程原型或模板创建maven失败
  6. win7不显示移动硬盘_win7系统电脑开机不显示桌面?
  7. redis的发布和订阅
  8. oracle rac的特征
  9. java旅游网站毕业论文_旅游网站的设计与实现
  10. 【Java】Java基础之Lambda表达式和Stream流
  11. 成功长青——不读此书,愧为人徒,不读此书,愧为人师
  12. Learning Transferable Visual Models From Natural Language Supervision
  13. 面试以前上司,能力一般,不想给他通过,但他卑微哀求,怎么办?
  14. mysql三线表导出_R|tableone 快速绘制文章“表一”-基线特征三线表
  15. 《逆袭大学——传给IT学子正能量》CSDN连载目录
  16. Bee+创始人贾凡出席“粤港澳大湾区青年论坛”并做主题发言
  17. html页面点击图片名称查看图片------图片预览插件viewer.js使用
  18. Java程序员必备技能
  19. 基于kingscada的自动绕线机工程,仿真绕线,硕子来回绕线形成线团自动运送到仓库
  20. java module命令行编译运行

热门文章

  1. word排版----分节、页眉页脚、页码、制作标题样式
  2. 工业相机 镜头 焦距 视野 计算相关
  3. 亚马逊中国站获取商品列表
  4. ecshop源码分析:smarty模板类
  5. USB class总结
  6. EPICS-从零开始的电机控制
  7. 一秒给黑白照片上色、模糊图片变清晰
  8. IE的layout布局
  9. ss3ex集成Beet记录日志
  10. Python数据展示之雷达图