> 技术文档 > 开源芋道系统bpm—flowable6.x框架—vue2组件实现工单代码详解_芋道源码 工单系统

开源芋道系统bpm—flowable6.x框架—vue2组件实现工单代码详解_芋道源码 工单系统

引言紧接上文,了解如何配置与正确使用工单工作流以后,现在再来讲解下系统层面代码如何实现,在源码的基础上进行二次开发功能呢?整体功能参考官方文档:OA请假示例,自定义

第一章 需求背景

工单业务场景,领导发起工单,下游人员进行任务处理,主要包含接单、处理、评价环节,现借助工作流引擎辅助完成该功能。

第二章 工单流程表单定义

定义好工单业务表结构,记录了表单详情,每一层级审批人处理完毕后,会对当前表单中的记录进行更新。

CREATE TABLE ems.ems_form (id int8 NOT NULL,stationname varchar NULL,workordertype varchar NULL,workordersource varchar NULL,devicetype varchar NULL,devicename varchar NULL,expecttime timestamp(6) NULL,processrequirements varchar NULL,processids varchar NULL,status varchar NOT NULL,takeordertime timestamp(6) NULL,takeorderuserid int8 NULL,takeorderusername varchar NULL,processremark varchar NULL,repaircosts float8 NULL,logo varchar NULL,assessremark varchar NULL,ratelevel varchar NULL,finishtime timestamp(6) NOT NULL DEFAULT now(),iconprocess varchar NULL,\"result\" int2 NOT NULL,process_instance_id varchar(64) NULL,creator varchar(64) NULL,create_time timestamp(6) NOT NULL DEFAULT now(),updater varchar(64) NULL,update_time timestamp(6) NOT NULL DEFAULT now(),deleted int2 NOT NULL DEFAULT 0,tenant_id int8 NOT NULL DEFAULT 0,workordername varchar NULL,CONSTRAINT ems_form_pkey PRIMARY KEY (id));

开源芋道系统bpm—flowable6.x框架—vue2组件实现工单代码详解_芋道源码 工单系统

第三章 工单处理流程
一、controller层定义好所有流程处理代码
@Tag(name = \"管理后台 - 工单处理\")@RestController@RequestMapping(\"/bpm/ems\")@Validatedpublic class EmsBpmController { @Resource private EmsBpmService emsBpmService; @PostMapping(\"/create\")// @PreAuthorize(\"@ss.hasPermission(\'bpm:ems-leave:create\')\") @Operation(summary = \"创建请求申请\") public CommonResult createLeave(@Valid @RequestBody EmsBpmTaskReqVO createReqVO) { return success(emsBpmService.createLeave(getLoginUserId(), createReqVO)); } @PutMapping(\"/takeorder\") @Operation(summary = \"接单按钮\") @Parameter(name = \"id\", description = \"编号\", required = true, example = \"1024555651555\")// @PreAuthorize(\"@ss.hasPermission(\'bpm:task:update\')\") public CommonResult takeorder(String id) { emsBpmService.takeorder(WebFrameworkUtils.getLoginUserId(), id); return success(true); } @PutMapping(\"/takeorderandprocess\") @Operation(summary = \"接单处理按钮\")// @PreAuthorize(\"@ss.hasPermission(\'bpm:task:update\')\") public CommonResult takeorderandprocess(@Valid @RequestBody EmsBpmTaskTakeOrderPorcessReqVO emsBpmTaskTakeOrderPorcessReqVO) { emsBpmService.takeorderandprocess(WebFrameworkUtils.getLoginUserId(), emsBpmTaskTakeOrderPorcessReqVO); return success(true); } @PutMapping(\"/access\") @Operation(summary = \"评价按钮\")// @PreAuthorize(\"@ss.hasPermission(\'bpm:task:update\')\") public CommonResult access(@Valid @RequestBody EmsBpmTaskAccessReqVO emsBpmTaskAccessReqVO) { emsBpmService.access(WebFrameworkUtils.getLoginUserId(), emsBpmTaskAccessReqVO); return success(true); } @GetMapping(\"/page\")// @PreAuthorize(\"@ss.hasPermission(\'bpm:oa-leave:query\')\") @Operation(summary = \"获得工单分页\") public CommonResult<PageResult> getEmsFormPage(@Valid EmsBpmTaskReqVO pageVO) { PageResult pageResult = emsBpmService.getEmsFormPage(getLoginUserId(), pageVO); return success(pageResult); }}
二、对应的实现层serviceImpl
1、定义好流程标识符
@Service@Validatedpublic class EmsBpmServiceImpl implements EmsBpmService { /** * 工单流程 对应的流程定义 KEY */ public static final String PROCESS_KEY = \"ems_form\";
2、逻辑实现,以接单流程举例
 @Override public void takeorder(Long userId, String id) { // 1、拿到流程Task对象 Task task = taskService.createTaskQuery().taskId(id).singleResult(); // 2、校验流程实例存在 ProcessIns