营销网站建设818gx,怎样做网站seo优化,九脉堂是做网站的,网站建设怎么做更好背景Activiti 是一个开源架构的工作流引擎#xff0c;基于 bpmn2.0 标准进行流程定义#xff0c;其前身是 jBPM#xff0c;Activiti 相对于 jBPM 更轻量#xff0c;更易上手#xff0c;且天然集成了 Spring。2010年 jBPM 创始人 Tom Baeyens 离开 JBoss#xff0c;随之加…背景 Activiti 是一个开源架构的工作流引擎基于 bpmn2.0 标准进行流程定义其前身是 jBPMActiviti 相对于 jBPM 更轻量更易上手且天然集成了 Spring。2010年 jBPM 创始人 Tom Baeyens 离开 JBoss随之加入 Alfresco 后很快推出了新的基于 jBPM4 的开源工作流系统 Activiti5 附 Activiti 官方地址Activiti 官方主页https://www.activiti.org/Activiti github 代码https://github.com/Activiti/ActivitiActiviti 官方文档https://www.activiti.org/userguide/#_introductionActiviti 使用1Activiti 官方 demo 使用 Activiti 官方提供了 demo 供初学者入门使用使用流程如下尽量参考官方文档Step 1下载 activiti-6.0.0.zip并解压找到 activiti-admin.war、activiti-app.war、activiti-rest.war 所在目录 activiti-admin.war、activiti-app.war 和 activiti-rest.war 是 Activiti 官方提供的 demo 应用详细使用可参考官方文档https://www.activiti.org/userguide/activiti-admin.war连接好 Activiti endpoint 后可通过该模块查看流程定义、发起的流程实例、任务等activiti-app.war核心 Activiti demo提供在线流程设计器、表单管理、应用管理、用户管理等功能activiti-rest.war提供 Restful 风格的服务附 activiti-6.0.0.zip 下载地址https://www.activiti.org/get-startedStep 2将上述三个 war 包放到 tomact webapps 目录中启动 tomcat 注意tomcat 版本使用 Tomcat 9.0.0 以下否则无法启动。Step 3activiti-admin 示例。访问 http://localhost:8080/activiti-admin并账密admin/admin登录 activiti-admin 主要提供数据监控访问时需要提前连接 Activiti endpoint否则没有任何数据这里配置了 activiti-app主核心demo的端口即在 activiti-app demo 中操作的流程任务数据在这里都可以查看到。Step 4activiti-app 示例。访问 http://localhost:8080/activiti-app并账密admin/test登录 activiti-app 是 Activiti 官方提供的核心 activiti demo也可称为 Activiti UI提供了在线流程设计器、任务管理和用户管理模块运行时数据默认存储在 H2也可修改配置来替换数据库下图为示例页面Step 5activiti-rest 示例。访问 http://127.0.0.1:8080/activiti-rest/docs/并账密kermit/kermit登录 Activiti 包含一个连接到 Activiti engine 的 rest api可以通过将 activiti-rest.war 文件部署到 servlet 容器如Apache Tomcat来安装该 API。默认情况下Activiti engine 将连接到内存 H2 数据库可以更改 WEB-INF/classes 文件夹中 db.properties 文件配置来修改数据库Activiti 启动后会自动初始化 23 张数据表。另外可通过引入 rest api 依赖将 rest api 集成到项目中不再详述。更多详细有关 Activiti rest api 说明参考https://www.activiti.org/userguide/#_rest_api2Activiti 请假 demo 示例 以请假流程作为 Activiti 基本使用示例流程示例同上述 acitiviti-app 应用流程文件示例员工发起请假然后项目经理审批再HR审批最后CEO审批若其中任意一个人拒绝员工则需要重新提交流程。其中 demo 示例如下完整源码参考https://download.csdn.net/download/zhuqiuhui/874623823Activiti 与 Spring Boot 集成 Activiti 与 Spring Boot 集成比较简单只需要要引入以下依赖即可不再示例详细参考 Activiti 官方文档与 Spring 集成章节https://www.activiti.org/userguide/#springintegrationdependencygroupIdorg.activiti/groupIdartifactIdactiviti-spring-boot-starter-basic/artifactIdversion${activiti.version}/version
/dependency4Activiti 与 jBPM 对比 Activiti 与 Spring 天然集成同时有基于 Web 的 Activiti 流程设计器详细参考上述官方 demo 中的 activiti-app.war 使用另外Activiti 在表结构设计上遵循运行时与历史数据的分离可以快速读取运行时数据仅当需要查询历史数据时再从专门的历史数据表中读取这样大大的提高了数据的存取效率。 另外相对于 jBPMjBPM 与 jBoss 技术栈耦合太过紧密国内社区不如 Activiti 活跃。Activiti5 整体架构及相关核心类Activiti5 整体架构Activiti 工作流程如下Step 1通过入口配置文件 activiti.cfg.xml 或者自定义 ProcessEngineConfiguration 实例得到流程引擎配置Step 2由 ProcessEngineConfiguration实例得到 ProcessEngine 实例Step 3通过 ProcessEngine 实例得到 Activiti 提供所有接口服务Step 4执行流程引擎使用示例ProcessEngineConfiguration cfg new StandaloneProcessEngineConfiguration().....;
ProcessEngine processEngine cfg.buildProcessEngine();
RepositoryService repositoryService processEngine.getRepositoryService();
//......另外Activiti 使用命令模式作为基础开发模式流程引擎服务类如TaskService等中定义的各个方法都有对应用的命令对象如开启流程命令StartProcessInstanceCmd 等) 流程引擎服务类把各种请求委托成 xxCmd 交给 CommandExecutor 来执行CommandExecutor 进一步交付给 CommandInterceptor 责任链来执行xxCmd 来决定命令的接收者参考 CommandContext接收者执行后返回结果参考下述 UML 图。Activiti5 核心类1EngineServices 该接口中定义了获取各种服务类实例对象的方法。2ProcessEngine 及默认实现类 ProcessEngineImpl ProcessEngine 继承 EngineServices 接口并增加了对流程引擎名称的获取以及关闭流程引擎的支持。ProcessEngineImpl 是 ProcessEngine 引擎的默认实现类实际上是由 ProcessEngineConfigurationImpl 构造的即 ProcessEngineImpl 调用 ProcessEngineConfigurationImpl 的方法获得服务。3ProcessEngineConfiguration 及默认实现 ProcessEngineConfigurationImpl ProcessEngineConfiguration 是流程引擎配置类ProcessEngineConfigurationImpl 继承 ProcessEngineConfiguration负责创建一系列服务类实例对象、流程引擎实例对象以及ProcessEngineImpl 类实例对象该类可以通过流程配置文件交给Spring容器管理或者使用编程方式动态构建。常用的流程配置类如下StandaloneProcessEngineConfiguration标准的流程引擎配置类StandaloneInMemProcessEngineConfiguration开发环境中自测使用默认采用H2数据库存储数据。.......4ProcessEngines 该类负责管理所有的流程引擎 ProcessEngine 集合并负责流程引擎实例对象的注册、获取、注销等操作。5流程引擎服务类RepositoryService RepositoryService 是 Activiti 的资源管理类提供流程定义和部署相关的存储服务。RepositoryService repositoryService processEngine.getRepositoryService();// 获取流程部署
Deployment deployment repositoryService.createDeployment().addClasspathResource(MultiTask.bpmn).name(流程测试).category().deploy();
// 获取流程定义
ProcessDefinition processDefinition repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult();RuntimeService RuntimeService 是 Activiti 的流程运行管理类提供流程运行时相关的服务如启动流程。RuntimeService runtimeService processEngine.getRuntimeService();// 启动流程
ProcessInstance processInstance runtimeService.startProcessInstanceByKey(myProcess, Key001, vars);TaskService TaskService 是 Activiti 的任务管理类提供任务节点的操作接口如complete、delete、delegate等TaskService taskService processEngine.getTaskService();
// 获取任务列表
ListTask taskList taskService.createTaskQuery().taskAssignee(mary).orderByTaskCreateTime().desc().list();HistoryService HistoryService 是 Activiti 的历史管理类示例ListHistoricActivityInstance historicActivityInstances processEngine.getHistoryService()// 创建历史活动实例查询.createHistoricActivityInstanceQuery()//.finished() // 查询已经完成的任务.orderByHistoricActivityInstanceEndTime().asc().list();IdentityService IdentityService 是 Activiti 的认证管理类用于管理和查询用户、组之间的关系。IdentityService identityService processEngine.getIdentityService();
identityService.setAuthenticatedUserId(createUserId);......6JavaDelegate 作为 Activiti 的 ServiceTask 的实现必须实现 JavaDelegate 接口但是不需要实现序列化接口Activiti 会使用反射机制将类初始化因此在实现 JavaDelegate 接口的时候需要提供一个无参数的构造器否则会抛出异常。