当前位置: 首页 > news >正文

网站做2微码无锡赛孚建设工程有限公司网站

网站做2微码,无锡赛孚建设工程有限公司网站,龙岗龙城街道网站建设,建设银行嘉兴分行官方网站文章目录 1 Flowable1.1 flowable-ui部署运行1.2 绘制流程图1.2.1 绘制1.2.2 绘图细节1.2.3 bpmn文件导入 1.3 后台项目搭建1.3.1 pom.xml1.3.2 数据库表说明 1.4 流程引擎API与服务1.4.1 主要API1.4.2 示例 1 Flowable 1.1 flowable-ui部署运行 flowable-6.6.0 运行 官方dem… 文章目录 1 Flowable1.1 flowable-ui部署运行1.2 绘制流程图1.2.1 绘制1.2.2 绘图细节1.2.3 bpmn文件导入 1.3 后台项目搭建1.3.1 pom.xml1.3.2 数据库表说明 1.4 流程引擎API与服务1.4.1 主要API1.4.2 示例 1 Flowable 1.1 flowable-ui部署运行 flowable-6.6.0 运行 官方demo 参考文档https://flowable.com/open-source/docs/bpmn/ch14-Applications/ 分享牛Flowable文档汉化https://github.com/qiudaoke/flowable-userguide 华格瑞沙 https://www.cnblogs.com/yangjiming/p/10938515.html 部署步骤 从官网下载flowable-6.6.0 : https://github.com/flowable/flowable-engine/releases/download/flowable-6.6.0/flowable-6.6.0.zip 将压缩包中的 flowable-6.6.0\wars\flowable-ui.war 丢到Tomcat中跑起来 打开 http://localhost:8080/flowable-ui 用账户admin/test 登录 进入 APP.MODELER 创建流程之后可以导出流程到项目中使用或者配置apache-tomcat-9.0.37\webapps\flowable-ui\WEB-INF\classes\flowable-default.properties连接本地数据库 注意需要将java驱动jarmysql-connector-java-5.1.45.jar复制到 apache-tomcat-9.0.37\webapps\flowable-rest\WEB-INF\lib这样创建的流程后端程序就能直接使用 1.2 绘制流程图 1.2.1 绘制 根据业务需要在 flowable-ui - APP.MODELER 里面绘制流程图示例如上图。先解释一些概念。 事件event通常用于为流程生命周期中发生的事情建模图里是【开始、结束】两个圈。顺序流sequence flow是流程中两个元素间的连接器。图里是【箭头线段】。网关gateway用于控制执行的流向。图里是【菱形中间有X】用户任务user task用于对需要人工执行的任务进行建模。图里是【矩形】。 简单的工作流大概就这些元素(还有很多这里就不扩展了)。下面描述一下工作流是如何流动的。 首先启动了工作流后由【开始】节点自动流向【学生】节点等待该任务执行。任务被分配的学生用户执行后流向 【老师】节点再次等待该任务执行。被分配的老师用户执行后流向 【网关】网关以此检查每个出口流向符合条件的任务比如这里老师执行任务时是同意就流向【校长】节点等待该任务执行。执行后跟老师类似同意后就流向【结束】节点整个流程到此结束。 1.2.2 绘图细节 保留流程模型 顺序流可以设置流条件来限制流动比如上面的网关出口就设置了条件 任务需要分配任务的执行用户可以分配到候选组也可以直接分配到候选人 最后导出工作流文件 文件内容 ?xml version1.0 encodingUTF-8? definitions xmlnshttp://www.omg.org/spec/BPMN/20100524/MODEL xmlns:xsihttp://www.w3.org/2001/XMLSchema-insmtece xmlns:xsdhttp://www.w3.org/2001/XMLSchema xmlns:flowablehttp://flowable.org/bpmn xmlns:bpmndihttp://www.omg.org/spec/BPMN/20100524/DI xmlns:omgdchttp://www.omg.org/spec/DD/20100524/DC xmlns:omgdihttp://www.omg.org/spec/DD/20100524/DI typeLanguagehttp://www.w3.org/2001/XMLSchema expressionLanguagehttp://www.w3.org/1999/XPath targetNamespacehttp://www.flowable.org/processdefprocess idleave_approval name请假审批 isExecutabletruestartEvent idstart name开始 flowable:initiatorstartuser flowable:formFieldValidationtrue/startEventuserTask idstu_task name学生 flowable:candidateGroupsstu_group flowable:formFieldValidationtrue/userTasksequenceFlow idflow1 sourceRefstart targetRefstu_task/sequenceFlowuserTask idte_task name老师 flowable:candidateGroupste_group flowable:formFieldValidationtrue/userTaskexclusiveGateway idgetway1 name网关1/exclusiveGatewayuserTask idmte_task name校长 flowable:candidateGroupsmte_group flowable:formFieldValidationtrue/userTaskexclusiveGateway idgetway2 name网关2/exclusiveGatewayendEvent idend name结束/endEventsequenceFlow idflow1 name请假 sourceRefstu_task targetRefte_task skipExpression${commandagree}/sequenceFlowsequenceFlow idflow3_1 name同意 sourceRefgetway1 targetRefmte_taskconditionExpression xsi:typetFormalExpression![CDATA[${commandagree}]]/conditionExpression/sequenceFlowsequenceFlow idflow2 name审批 sourceRefte_task targetRefgetway1/sequenceFlowsequenceFlow idflow3_2 name拒绝 sourceRefgetway1 targetRefstu_taskconditionExpression xsi:typetFormalExpression![CDATA[${commandrefuse}]]/conditionExpression/sequenceFlowsequenceFlow idflow4 name审批 sourceRefmte_task targetRefgetway2/sequenceFlowsequenceFlow idflow4_1 name同意 sourceRefgetway2 targetRefend skipExpression${commandfree}conditionExpression xsi:typetFormalExpression![CDATA[${commandagree}]]/conditionExpression/sequenceFlowsequenceFlow idflow4_2 name拒绝 sourceRefgetway2 targetRefstu_taskconditionExpression xsi:typetFormalExpression![CDATA[${commandrefuse}]]/conditionExpression/sequenceFlow/processbpmndi:BPMNDiagram idBPMNDiagram_leave_approval这里先省略/bpmndi:BPMNDiagram /definitions1.2.3 bpmn文件导入 如果需要可以把这个流程文件下载下来直接导入使用 1.3 后台项目搭建 后台项目基于jdk8使用springboot框架 1.3.1 pom.xml parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.3.0.RELEASE/versionrelativePath/ !-- lookup parent from repository -- /parent 项目依赖pom.xmldependencygroupIdorg.flowable/groupIdartifactIdflowable-spring-boot-starter/artifactIdversion6.6.0/version /dependency dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.45/version /dependency项目配置application.yml spring:datasource:url: jdbc:mysql://localhost:3306/flowable?useSSLfalsecharacterEncodingUTF-8serverTimezoneGMT%2B8driver-class-name: com.mysql.jdbc.Driverusername: xxxxpassword: xxxx1.3.2 数据库表说明 Flowable的所有数据库表都以ACT_开头。第二部分是说明表用途的两字符标示符。服务API的命名也大略符合这个规则。 Flowable建表机制 自动创建表Flowable 在引擎配置中设置了数据库表的自动创建机制。只要引擎启动并连接到数据库它会检查表是否存在。如果不存在Flowable 会根据其内部的数据库脚本创建这些表。配置选项可以在 Flowable 的配置文件中通过 databaseSchemaUpdate 属性来配置数据库表的创建和更新行为。 true 或 create-drop引擎启动时创建表停止时删除表通常用于测试环境。false不自动创建表需要手动创建。create如果表不存在则创建。drop-create如果表存在则删除然后创建。 各个表说明 ACT_RE_RE代表repository。带有这个前缀的表包含静态信息例如流程定义与流程资源图片、规则等。 ACT_RU_RU 代表runtime。这些表存储运行时信息例如流程实例process instance、用户任务user task、变量variable、作业job等。Flowable只在流程实例运行中保存运行时数据并在流程实例结束时删除记录。这样保证运行时表小和快。 ACT_HI_HI代表history。这些表存储历史数据例如已完成的流程实例、变量、任务等。 ACT_GE_通用数据。在多处使用。 通用数据表2个 act_ge_bytearray二进制数据表如流程定义、流程模板、流程图的字节流文件 act_ge_property属性数据表不常用 历史表8个HistoryService接口操作的表 act_hi_actinst历史节点表存放流程实例运转的各个节点信息包含开始、结束等非任务节点 act_hi_attachment历史附件表存放历史节点上传的附件信息不常用 act_hi_comment历史意见表 act_hi_detail历史详情表存储节点运转的一些信息不常用 act_hi_identitylink历史流程人员表存储流程各节点候选、办理人员信息常用于查询某人或部门的已办任务 act_hi_procinst历史流程实例表存储流程实例历史数据包含正在运行的流程实例 act_hi_taskinst历史流程任务表存储历史任务节点 act_hi_varinst流程历史变量表存储流程历史节点的变量信息 用户相关表4个IdentityService接口操作的表 act_id_group用户组信息表对应节点选定候选组信息 act_id_info用户扩展信息表存储用户扩展信息 act_id_membership用户与用户组关系表 act_id_user用户信息表对应节点选定办理人或候选人信息 流程定义、流程模板相关表3个RepositoryService接口操作的表 act_re_deployment部属信息表存储流程定义、模板部署信息 act_re_procdef流程定义信息表存储流程定义相关描述信息但其真正内容存储在act_ge_bytearray表中以字节形式存储 act_re_model流程模板信息表存储流程模板相关描述信息但其真正内容存储在act_ge_bytearray表中以字节形式存储 流程运行时表6个RuntimeService接口操作的表 act_ru_task运行时流程任务节点表存储运行中流程的任务节点信息重要常用于查询人员或部门的待办任务时使用 act_ru_event_subscr监听信息表不常用 act_ru_execution运行时流程执行实例表记录运行中流程运行的各个分支信息当没有子流程时其数据与act_ru_task表数据是一一对应的 act_ru_identitylink运行时流程人员表重要常用于查询人员或部门的待办任务时使用 act_ru_job运行时定时任务数据表存储流程的定时任务信息 act_ru_variable运行时流程变量数据表存储运行中的流程各节点的变量信息 1.4 流程引擎API与服务 1.4.1 主要API 引擎API是与Flowable交互的最常用手段。总入口点是ProcessEngine。 说明 RepositoryService很可能是使用 Flowable引擎要用的第一个服务。这个服务提供了管理与控制部署(deployments)与流程定义(process definitions)的操作。管理静态信息RuntimeService用于启动流程定义的新流程实例。IdentityService很简单它用于管理创建更新删除查询……组与用户。FormService是可选服务。也就是说Flowable没有它也能很好地运行而不必牺牲任何功能。HistoryService暴露Flowable引擎收集的所有历史数据。要提供查询历史数据的能力。ManagementService通常在用Flowable编写用户应用时不需要使用。它可以读取数据库表与表原始数据的信息也提供了对作业(job)的查询与管理操作。DynamicBpmnService可用于修改流程定义中的部分内容而不需要重新部署它。例如可以修改流程定义中一个用户任务的办理人设置或者修改一个服务任务中的类名。 1.4.2 示例 接下来使用之前的请假流程图上代码 import lombok.extern.slf4j.Slf4j; import org.flowable.engine.HistoryService; import org.flowable.engine.RepositoryService; import org.flowable.engine.RuntimeService; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.repository.Deployment; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.runtime.Execution; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.idm.api.Group; import org.flowable.idm.api.User; import org.flowable.task.api.Task; import org.flowable.task.api.history.HistoricTaskInstance; import org.springframework.beans.factory.annotation.Autowired;import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.zip.ZipInputStream;/*** TestFlowable*/ Slf4j public class TestFlowable {Autowiredprivate RepositoryService repositoryService;Autowiredprivate RuntimeService runtimeService;Autowiredprivate HistoryService historyService;Autowiredprivate org.flowable.engine.TaskService taskService;Autowiredprivate org.flowable.engine.IdentityService identityService;public void createDeploymentZip() {/** Step 1: 部署xml压缩到zip形式直接xml需要配置相对路径麻烦暂不用*/try {File zipTemp new File(f:/leave_approval.bpmn20.zip);ZipInputStream zipInputStream new ZipInputStream(new FileInputStream(zipTemp));Deployment deployment repositoryService.createDeployment().addZipInputStream(zipInputStream).deploy();log.info(部署成功:{}, deployment.getId());} catch (FileNotFoundException e) {e.printStackTrace();}/** Step 2: 查询部署的流程定义*/ListProcessDefinition list repositoryService.createProcessDefinitionQuery().processDefinitionKey(leave_approval).list();ListProcessDefinition pages repositoryService.createProcessDefinitionQuery().processDefinitionKey(leave_approval).listPage(1, 30);/** Step 3: 启动流程创建实例*/String processDefinitionKey leave_approval;//流程定义的key,对应请假的流程图String businessKey schoolleave;//业务代码根据自己的业务用MapString, Object variablesDefinition new HashMap();//流程变量可以自定义扩充ProcessInstance processInstance runtimeService.startProcessInstanceByKey(processDefinitionKey, businessKey, variablesDefinition);log.info(启动成功:{}, processInstance.getId());/** Step 4: 查询指定流程所有启动的实例列表* 列表或 分页 删除*/ListExecution executions runtimeService.createExecutionQuery().processDefinitionKey(leave_approval).list();ListExecution executionPages runtimeService.createExecutionQuery().processDefinitionKey(leave_approval).listPage(1, 30); // runtimeService.deleteProcessInstance(processInstanceId, deleteReason); //删除实例/** Step 5: 学生查询可以操作的任务,并完成任务*/String candidateGroup stu_group; //候选组 xml文件里面的 flowable:candidateGroupsstu_groupListTask taskList taskService.createTaskQuery().taskCandidateGroup(candidateGroup).orderByTaskCreateTime().desc().list();for (Task task : taskList) {// 申领任务taskService.claim(task.getId(), my);// 完成taskService.complete(task.getId());}/** Step 6: 老师查询可以操作的任务,并完成任务*/String candidateGroupTe te_group; //候选组 xml文件里面的 flowable:candidateGroupste_groupListTask taskListTe taskService.createTaskQuery().taskCandidateGroup(candidateGroupTe).orderByTaskCreateTime().desc().list();for (Task task : taskListTe) {// 申领任务taskService.claim(task.getId(), myte);// 完成MapString, Object variables new HashMap();variables.put(command,agree); //携带变量用于网关流程的条件判定这里的条件是同意taskService.complete(task.getId(), variables);}/** Step 7: 历史查询因为一旦流程执行完毕活动的数据都会被清空上面查询的接口都查不到数据但是提供历史查询接口*/// 历史流程实例ListHistoricProcessInstance historicProcessList historyService.createHistoricProcessInstanceQuery().processDefinitionKey(leave_approval).list();// 历史任务ListHistoricTaskInstance historicTaskList historyService.createHistoricTaskInstanceQuery().processDefinitionKey(leave_approval).list();// 实例历史变量 , 任务历史变量// historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstanceId);// historyService.createHistoricVariableInstanceQuery().taskId(taskId);// *****************************************************分隔符********************************************************************// *****************************************************分隔符********************************************************************// 可能还需要的API// 移动任务人为跳转任务// runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId)// .moveActivityIdTo(currentActivityTaskId, newActivityTaskId).changeState();// 如果在数据库配置了分组和用户还会用到ListUser users identityService.createUserQuery().list(); //用户查询用户id对应xml 里面配置的用户ListGroup groups identityService.createGroupQuery().list(); //分组查询分组id对应xml 里面配置的分组 如 stu_groupte_group 在表里是id的值// 另外每个查询后面都可以拼条件内置恁多查询包括模糊查询大小比较都有} }
http://www.dnsts.com.cn/news/12305.html

相关文章:

  • 怎么建立一个博客网站可信网站验证多少钱
  • 翻墙到国外网站怎么做无锡百度推广代理公司
  • 广州天极营销型网站wordpress 免费中文模板
  • 在线购物网站 模版企业营销策划论文
  • 怎样做号网站优化银川网站开发公司电话
  • php网站开发说明做网站的感想与收获
  • 做旅游攻略的网站代码宠物网站模版
  • 网站备案中页面国外做mg动画的网站大全
  • 怎么自建导购网站做淘客wordpress 跳转函数
  • 网站大全官网炫酷响应式网站设计
  • 网站运行速度优化一个好的网站需要具备什么
  • 515ppt网站建设html5 网站源代码
  • 高端响应式网站设计it外包工作怎么样
  • 建设工程施工合同网站自己做网站是否要买云主机
  • 怎么做自己的简历网站安阳网站建设哪家公司好
  • 安徽省建设工程造价管理总站网站旅游网站开发方案ppt
  • 网站架设百度公司简介
  • 网站侧导航公司管理流程图大全
  • 网站底部友情链接涿州做网站建设
  • 响应式学校网站模板中山网站建设案例
  • 南京网站开发注册app建设网站需要注意什么
  • wordpress主题常规选项修改不seo网站搜索优化
  • 信阳网站建设的费用创意品牌网站
  • 品牌微信网站建设网站建设 部署与发布题库
  • 东莞网站平台后缀如何制作自己的网址链接
  • 做电影网站看电影算网站流量吗wordpress 第一张图片不显示
  • 家具企业网站模板重复打开同一个网站怎么做
  • 论坛网站开发开题报告专业苏州房产网站建设
  • 做一个网站成本多少钱公司网站如何上传视频
  • 惠东网站设计wordpress网站根目录