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

wordpress+怎么改密码忘记郑州seo外包费用

wordpress+怎么改密码忘记,郑州seo外包费用,html5响应式网站建设,网站的角色设置如何做一、什么是 Activiti 简而言之&#xff0c;就是系统的流程图&#xff0c;如&#xff1a;请假审批流程、账单审批流程等。 二、mysql与pom配置 mysql要使用jdbc:mysql://localhost:3306/activiti?autoReconnecttrue pom文件要添加关键依赖 <!--activiti核心依赖--> &…

一、什么是 Activiti

简而言之,就是系统的流程图,如:请假审批流程、账单审批流程等。

二、mysql与pom配置

mysql要使用jdbc:mysql://localhost:3306/activiti?autoReconnect=true
pom文件要添加关键依赖

<!--activiti核心依赖-->
<dependency><groupId>org.activiti</groupId><artifactId>activiti-engine</artifactId><version>7.1.0.M6</version>
</dependency>
<!--mysql驱动包-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.23</version>
</dependency>
<!--mybatis-->
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version>
</dependency>

三、Activiti流程引擎通过 activiti.cfg.xml 进行核心配置

在 resources 目录下创建 activiti.cfg.xml 文件:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 默认方式下,bean的id必须是processEngineConfiguration  --><bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"><!--  配置数据源  &amp; 为对 & 的转义 --><property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/activiti01?characterEncoding=utf8&amp;nullCatalogMeansCurrent=true"/><property name="jdbcDriver" value="com.mysql.cj.jdbc.Driver"/><property name="jdbcUsername" value="root"/><property name="jdbcPassword" value="你的mysql密码"/><!--  activiti 数据库表生成策略  --><!--自动更新数据库结构true:适用开发环境,默认值。activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建false:适用生产环境。activiti在启动时,对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)--><property name="databaseSchemaUpdate" value="true"/></bean>
</beans>

四、通过流程引擎建立数据表

创建 ProcessEngine 流程引擎实例和数据表

	@Testpublic void getProcessEngine() {
// 使用activiti提供的工具类ProcessEngines,
// 调用 getDefaultProcessEngine 会默认读取resource下的activiti.cfg.xml文件,
// 并创建 Activiti 流程引擎 和 创建数据库表ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();System.out.println(processEngine);}

此时自动生成25张表

  • ACT_GE_* : GE 表示 general 。通用数据,各种情况都使用的数据 ,如存放资源文件(图片,规则等)。
  • ACT_HI_xxx : HI 表示history。就是这些表包含着历史的相关数据,如结束的流程实例(变量,任务等)。
  • ACT_RE_xxx : RE 表示repository。带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则
    等)。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。
  • ACT_RU_xxx : RU 表示 runtime。这是运行时的表存储着流程变量,用户任务,变量,职责(job)等运行时的
    数据。Activiti只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。
  • ACT_EVT_* :EVT表示event,流程引擎的通用事件日志记录表。
表分类表名说明
通用数据
act_ge_bytearray二进制数据表(流程图)
act_ge_property属性数据表,存储整个流程引擎级别的数据,初始化表结构时,会插入版本号信息等
通用数据
act_hi_actinst历史节点表
act_hi_attachment历史附件表
act_hi_comment历史意见表
act_hi_detail历史详情表,提供历史变量的查询
act_hi_identitylink历史流程人员表,主要存储任务节点与参与者的相关信息
act_hi_procinst历史流程实例表
act_hi_taskinst历史任务实例表
act_hi_varinst历史变量表
流程定义表
act_re_deployment部署信息表
act_re_model流程设计模型表
act_re_procdef流程定义数据表
流程运行数据表
act_ru_deadletter_job作业死亡信息表,如果作业失败超过重试次数,则写入到此表
act_ru_event_subscrthrowEvent、catchEvent时间监听信息表
act_ru_execution运行时流程执行实例表
act_ru_identitylink运行时流程人员表,主要存储任务节点与参与者的相关信息
act_ru_integration运行时积分表
act_ru_job定时异步任务数据表
act_ru_suspended_job运行时作业暂停表, 比如流程中有一个定时任务,如果把这个任务停止工作了,这个任务写入到此表中
act_ru_task运行时任务节点表
act_ru_timer_job运行时定时器作业表
act_ru_variable运行时流程变量数据表
其他表
act_procdef_info流程定义的动态变更信息
act_evt_log流程引擎的通用事件日志记录表

五、Activiti7 的Servcie核心接口

Activiti不需要我们去创建一系列的建Entity 、 DAO、Service、Controller,有现成接口直接调用
Service 管理接口说明:

Service接口说明
RuntimeService运行时 Service,可以处理所有正在运行状态的流程实例和任务等
RepositoryService流程仓库 Service,主要用于管理流程仓库,比如流程定义的控制管理(部署、删除、挂起、激活…)
DynamicBpmnServiceRepositoryService可以用来部署流程定义(使用xml形式定义好的),一旦部署到Activiti(解析后保存到DB),那么流程定义就不会再变了,除了修改xml定义文件内容;而DynamicBpmnService就允许我们在程序运行过程中去修改流程定义,例如:修改流程定义中的分配角色、优先级、流程流转的条件等等
TaskService任务 Service,用于管理和查询任务,例如:签收、办理等
HistoryService历史 Service,可以查询所有历史数据,例如:流程实例信息、参与者信息、完成时间…
ManagementService引擎管理Service,和具体业务无关,主要用于对Activiti流程引擎的管理和维护。

核心 Service 接口实例获取方式如下:

// 会在首次调用时初始化并构建一个流程引擎,此后始终返回相同的流程引擎。
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 引擎管理类
ManagementService managementService = processEngine.getManagementService();
// 动态修改流程管理类
DynamicBpmnService dynamicBpmnService = processEngine.getDynamicBpmnService();
// 流程运行管理类
RuntimeService runtimeService = processEngine.getRuntimeService();
// 流程仓库管理类
RepositoryService repositoryService = processEngine.getRepositoryService();
// 任务管理类
TaskService taskService = processEngine.getTaskService();
// 历史管理类
HistoryService historyService = processEngine.getHistoryService();

六、Activiti7 流程实操

6.1 idea安装插件

Activiti BPMN visualizer
在这里插入图片描述

6.2 绘制流程定义模型

1.在 /resources 目录下创建 processes 目录,用于存放流程图
2.创建名为 leave 的文件
在这里插入图片描述
3.在 leave.bpmn.xml 空白处右键,打开编辑页面
在这里插入图片描述
建立如下流程:
在这里插入图片描述
其中设置流程中的name和assignee:
在这里插入图片描述
在这里插入图片描述
然后导出png图片:
右键空白处:
在这里插入图片描述
生成leave.png:
在这里插入图片描述

6.3 部署流程定义

将上面在设计器中定义的流程部署到activiti数据库中,就是流程定义部署。
通过调用activiti的api将流程定义的 .bpm 和 png 两个文件一个一个添加部署到activiti中

	/*** 部署流程:* 1. act_re_deployment 流程部署表,每执行一次部署,会插入一条记录,同样的流程多次部署不同的流程部署ID* 2. act_re_procdef 生成流程定义信息,同样的流程多次部署不同的流程定义ID与版本号version* 3. act_ge_bytearray 流程资源表,插入资源数据,当前插入两条记录(.bpmn和.png资源)*/@Testpublic void deployByFile() {// 1. 实例化流程引擎实例ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();// 2. 获取流程定义和部署对象相关的ServiceRepositoryService repositoryService = processEngine.getRepositoryService();// 3. 创建部署对象进行流程的部署,定义一个流程的名字,把 .bpmn 和 .png 部署到数据库中Deployment deployment = repositoryService.createDeployment().name("请假申请流程").addClasspathResource("processes/leave.bpmn20.xml").addClasspathResource("processes/leave.png").deploy();// 4. 输出部署信息System.out.println("部署ID:" + deployment.getId() );System.out.println("部署名称:" + deployment.getName() );}

执行两次并不会发生冲突,act_re_deployment 流程部署表只是ID不同,act_re_procdef 流程定义数据表ID和版本version都不同
在这里插入图片描述

6.4 查询流程定义

主要针对去查询act_re_procdef表的东西,可以根据key去找,或者根据流程定义ID去找

	/*** 查询部署的流程定义数据 ACT_RE_PROCDEF*/@Testpublic void getProcessDefinitionList() {// 1. 实例化流程引擎实例ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();// 2. 获取 RepositoryServiceRepositoryService repositoryService = processEngine.getRepositoryService();// 3. 获取 ProcessDefinitionQueryProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();Set<String> set = new HashSet<String>();set.add("leaveProcess:1:4");set.add("leaveProcess:2:2504");// List<ProcessDefinition> definitionList = query.processDefinitionKey("leaveProcess") // 根据key去找List<ProcessDefinition> definitionList = query.processDefinitionIds(set)  // 根据流程定义ID去找.orderByProcessDefinitionVersion() // 按版本号排序.desc() // 降序.list();for (ProcessDefinition pd : definitionList) {System.out.println("流程部署ID:" + pd.getDeploymentId());System.out.println("流程定义ID:" + pd.getId());System.out.println("流程定义Key:" + pd.getKey());System.out.println("流程定义名称:" + pd.getName());System.out.println("流程定义版本号:" + pd.getVersion());}}

查询结果如下:
在这里插入图片描述

6.5 启动流程(发起申请)

类似 java类 与 java实例对象 一样。发起一个申请就类似 new 了一个对象。

    /*** 启动流程(发起申请)*/@Testpublic void startProcessInstance() {// 1. 实例化ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();// 2. 获取 RuntimeServiceRuntimeService runtimeService = processEngine.getRuntimeService();// 开启流程实例 (流程设计图唯一标识key) 按照 key 启动会去找版本最新的执行ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leaveProcess");System.out.println("流程定义id:" + processInstance.getProcessDefinitionId());System.out.println("流程实例id:" + processInstance.getId());}

在这里插入图片描述
其中涉及的表有:

  • act_hi_actinst 流程实例执行的节点历史信息
  • act_hi_identitylink 流程的参与用户历史信息
  • act_hi_procinst 流程实例历史信息
  • act_hi_taskinst 流程实例的任务历史信息
  • act_ru_execution 流程运行中执行信息
  • act_ru_identitylink 流程运行中参与用户信息
  • act_ru_task 流程运行中任务信息

6.6 查询办理人待办任务与完成任务

启动流程实例后,用户查询自己当前的待办任务,然后执行后续操作

	/*** 查询指定人员的待办任务*/@Testpublic void taskListByAssignee() {// 1. 实例化流程引擎实例ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();// 2. 获取 TaskServiceTaskService taskService = processEngine.getTaskService();// 3. 根据流程唯一标识 key 和 任务办理人 查询任务List<Task> list = taskService.createTaskQuery().processDefinitionKey("leaveProcess") // 根据 Key.taskAssignee("领导")// 查询 领导 的任务.list();for (Task task : list) {System.out.println("流程实例id:" + task.getProcessInstanceId());System.out.println("任务id:" + task.getId());System.out.println("任务名称:" + task.getName());System.out.println("任务办理人:" + task.getAssignee());}}

在这里插入图片描述
以上只是查询,查询后需要执行后续操作

    /*** 完成待办任务*/@Testpublic void completeTask() {// 1. 实例化流程引擎实例ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();// 2. 获取 TaskServiceTaskService taskService = processEngine.getTaskService();// 3. 查询代办任务Task task = taskService.createTaskQuery().processDefinitionKey("leaveProcess") // 流程 Key.taskAssignee("领导") // 查询 领导 的任务
//                .taskAssignee("总经理").singleResult(); // 目前只有一条任务,则可以只获取一条// 4. 完成任务(任务id)taskService.complete(task.getId());}

执行上述代码后 act_ru_task 表里的 name 那一列从领导审批变成了总经理审批
上面代码更换注释,执行总经理审批,act_ru_task 删除刚刚执行的一行数据。

6.7 查询流程实例历史节点信息

通过 HistoryService 历史数据对象来获取 HistoricActivityInstanceQuery 历史节点查询对象

	/*** 查看流程办理历史信息*/@Testpublic void historyInfo(){// 1. 实例化流程引擎实例ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();// 2. 获取 HistoryServiceHistoryService historyService = processEngine.getHistoryService();// 3. 获取节点历史记录查询对象 ACT_HI_ACTINST 表HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery();List<HistoricActivityInstance> list = query.processInstanceId("5001").orderByHistoricActivityInstanceStartTime() // 根据开始时间排序 asc 升序.asc().list();for (HistoricActivityInstance hi : list) {System.out.print("流程定义ID: " + hi.getProcessDefinitionId());System.out.print(",流程实例ID: " + hi.getProcessInstanceId());System.out.print(",节点ID: " + hi.getActivityId());System.out.print(",节点名称: " + hi.getActivityName());System.out.print(",任务办理人:" + hi.getAssignee());System.out.print(",开始时间:" + hi.getStartTime());System.out.println("结束时间:" + hi.getEndTime());}}

“5001“从act_hi_procinst查找

http://www.fp688.cn/news/164023.html

相关文章:

  • 银川注册公司流程和费用优化大师下载安装免费
  • vi设计公司网站香港疫情最新消息
  • 做网站简单还是app简单我想注册一个网站怎么注册
  • asp建设的网站制作上海自动seo
  • 做外贸什么网站比较好做广告联盟下载app
  • 低代码开发技术seo排名分析
  • 做网站第二年要续费吗成都新闻今日最新消息
  • 手机网站模板下载深圳百度推广客服
  • 闲鱼搭建网站网站优化平台
  • 怎么做网站优化 sb站推广入口2023年
  • 网站优化竞争对手分析好的产品怎么推广语言
  • 上海本地网站建设广东网站seo
  • 品牌商城网站建设做外贸怎么推广
  • 晋城网站制作公司做网站排名服务热线
  • 同类色相的网站百度关键词搜索优化
  • http:设计家园.comwordpress培训考试哪家公司做seo
  • 没效果廊坊seo排名优化
  • 最专业的做音乐网站东莞网络优化哪家好
  • 发稿是什么意思搜索引擎优化的英文缩写
  • 怎样做网站个人简介云南疫情最新情况
  • 北京市网站建设公司排名谷歌搜索引擎免费入口
  • 招商加盟外包公司东莞seo计费
  • 做网站买空间百度如何快速收录
  • 上海网站设计找哪家深圳媒体网络推广有哪些
  • 网站开发怎么做才有利于seo建站宝盒
  • 手工艺品网站建设侧胡顺百度是国企还是央企
  • 做企业网站需要哪些百度2023免费下载
  • 潍坊 企业网站建设网络舆情案例分析
  • b2b2c平台是什么意思seo入门到精通
  • 域名申请通过了网站怎么做百度竞价是seo还是sem