camunda工作流开发实战------04 请假流程实例
接着上篇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 请假流程实例相关推荐
- camunda工作流开发实战------03 hello world
一.camunda modeler流程设计器 想要开发工作流hello world ,首先得要有一个流程设计器来设计流程 camunda 提供了流程设计程序 camunda modeler 下载地址: ...
- jBPM4工作流开发实战 之 第一部分 工作流基础【私塾在线原创】
视频配套PPT,视频地址[ 最新jbpm4工作流开发实战视频课程] 考虑这样一个实际问题,如果公司派我们出差,会发生差旅费.那么,差旅费报销的流程是什么样的呢? 首先,要先填写一张单子,写明出差的时 ...
- Activiti7工作流-使用Idea开发体验Activti_请假流程---工作流工作笔记006
然后上一个文章我们已经创建了一个请假流程,然后然后我们用这个请假流程来做一下,审批 来使用一下activiti完成一个简单的工作流 首先我们是来部署,可以看到,部署首先要拿到ProcessEngine ...
- springboot集成flowable创建请假流程实例
springboot如何集成flowable,如何部署flowable在线编辑器画bpm图以及bpm图的画法,我在上一篇博客中写了,这里直接上代码(源码地址:晚安/flowable_holiday ( ...
- 【Activiti工作流】5. 简单请假流程
1. 画出流程图 使用之前安装的Eclipse的流程设计器,画出如下流程图: 1.1 设置开始节点 在properties中选中Main config:设置如下: 然后选中Form,设置如下: 具体操 ...
- Android IoT开发实战 | 04 - 创建一个新的活动Activity(登录界面)
本系列IoT App开发笔记系b站视频教程学习笔记,视频地址: [7天Java0基础速成安卓开发]Day1 Android工程代码是怎么运行的 [7天Java0基础速成安卓开发]Day2 常用控件和界 ...
- CrazyWing:Python自动化运维开发实战 六、流程控制
Python 条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. Python程序语言指定任何非0和非空(null)值为true,0 或者 nu ...
- jBPM4工作流开发实战 之 第五部分 其他知识
jBPM的异步执行介绍 jBPM对于所有的流程执行操作默认都是同步的.也就是说,默认是一个活动执行完成后,再执行另一个活动. 如,Task1->Java1->Java2->Task ...
- php 微信开发实战pdf,微信开发实战之模块化的实例详解
在任何一个大型应用中模块化是很常见的,与一些更传统的编程语言不同的是,JavaScript (ECMA-262版本)还不支持原生的模块化. Javascript社区做了很多努力,在现有的运行环境中,实 ...
最新文章
- Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition
- DRM-内容数据版权加密保护技术学习(上):视频文件打包实现(转)
- 《移动项目实践》实验报告——Android初级控件
- 树和二叉树的基本概念(二级)
- Eclipse没有的工程原型或模板创建maven失败
- win7不显示移动硬盘_win7系统电脑开机不显示桌面?
- redis的发布和订阅
- oracle rac的特征
- java旅游网站毕业论文_旅游网站的设计与实现
- 【Java】Java基础之Lambda表达式和Stream流
- 成功长青——不读此书,愧为人徒,不读此书,愧为人师
- Learning Transferable Visual Models From Natural Language Supervision
- 面试以前上司,能力一般,不想给他通过,但他卑微哀求,怎么办?
- mysql三线表导出_R|tableone 快速绘制文章“表一”-基线特征三线表
- 《逆袭大学——传给IT学子正能量》CSDN连载目录
- Bee+创始人贾凡出席“粤港澳大湾区青年论坛”并做主题发言
- html页面点击图片名称查看图片------图片预览插件viewer.js使用
- Java程序员必备技能
- 基于kingscada的自动绕线机工程,仿真绕线,硕子来回绕线形成线团自动运送到仓库
- java module命令行编译运行