- 浏览: 599633 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
Spring代码
Jave代码
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> <bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource"> <property name="driverClass" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:jasgis" /> <property name="username" value="zsmseip" /> <property name="password" value="a111111" /> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- Activiti 配置 begin--> <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"> <property name="dataSource" ref="dataSource" /> <property name="transactionManager" ref="transactionManager" /> <property name="databaseSchemaUpdate" value="true" /> <property name="jobExecutorActivate" value="false" /> <property name="history" value="full" /> <property name="processDefinitionCacheLimit" value="10" /> <!-- 流程图节点乱码问题配置 --> <property name="activityFontName" value="微软雅黑"/> </bean> <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean"> <property name="processEngineConfiguration" ref="processEngineConfiguration" /> </bean> <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" /> <bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService" /> <bean id="formService" factory-bean="processEngine" factory-method="getFormService" /> <bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService" /> <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" /> <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" /> <bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" /> <!-- Activiti 配置 end --> </beans>
Jave代码
/** * */ package com.activiti; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.activiti.bpmn.model.BpmnModel; import org.activiti.engine.FormService; import org.activiti.engine.HistoryService; import org.activiti.engine.IdentityService; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.history.HistoricActivityInstance; import org.activiti.engine.history.HistoricActivityInstanceQuery; import org.activiti.engine.history.HistoricDetail; import org.activiti.engine.history.HistoricProcessInstance; import org.activiti.engine.history.HistoricTaskInstance; import org.activiti.engine.history.HistoricVariableInstance; import org.activiti.engine.history.HistoricVariableUpdate; import org.activiti.engine.impl.ProcessEngineImpl; import org.activiti.engine.impl.RepositoryServiceImpl; import org.activiti.engine.impl.bpmn.diagram.ProcessDiagramGenerator; import org.activiti.engine.impl.context.Context; import org.activiti.engine.impl.persistence.entity.ExecutionEntity; import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity; import org.activiti.engine.impl.pvm.PvmTransition; import org.activiti.engine.impl.pvm.process.ActivityImpl; import org.activiti.engine.impl.pvm.process.TransitionImpl; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.activiti.engine.task.TaskQuery; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * * @author Test * @createDate 2014-6-1上午10:08:05 * @className TestFinancial.java * @useFor */ public class TestFinancial { private RuntimeService runtimeService; private IdentityService identityService; private RepositoryService repositoryService; private FormService formService; private TaskService taskService; private HistoryService historyService; ProcessEngine processEngine; /** * * @author Test * @createDate 2014-6-1下午10:34:26 * @params * @return void * @useFor 初始化ProcessEngine和重要的service */ @Before public void initActiviti() { // 加载spring配置 ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( "applicationContext.xml"); // 流程引擎 processEngine = (ProcessEngine) ctx.getBean("processEngine"); // 发布流程 repositoryService = processEngine.getRepositoryService(); // 获得流程实例和运行实例(Execution) runtimeService = (RuntimeService) ctx.getBean("runtimeService"); taskService = (TaskService) ctx.getBean("taskService"); identityService = (IdentityService) ctx.getBean("identityService"); formService = processEngine.getFormService(); deploy("diagrams/ActivitiTest.bpmn"); historyService = (HistoryService) ctx.getBean("historyService"); } /** * * @author Test * @createDate 2014-6-1下午10:32:49 * @params * @return void * @useFor 部署流程 */ public void deploy(String srcName) { // Deploy the process definition repositoryService.createDeployment().addClasspathResource(srcName) .deploy(); } /** * * @author Test * @createDate 2014-6-1下午10:38:29 * @params keyName 表示流程图ID businessID是业务主键ID * @return ProcessInstance * @useFor 开启流程 */ public ProcessInstance startProcessInstanceByKey(String keyName, String businessID) { return runtimeService.startProcessInstanceByKey(keyName, businessID); } /** * * @author Test * @createDate 2014-6-1下午10:42:36 * @params 指定用户ID * @return List<Task> * @useFor 获得指定用户的任务集合 taskAssignee只是针对 Assignee的对candidate不适用 */ public List<Task> getTaskFromAssignee(String assigneeName) { List<Task> result = new ArrayList<Task>(); result = taskService.createTaskQuery().taskAssignee(assigneeName) .list(); return result; } /** * * @author Test * @createDate 2014-6-2上午10:13:07 * @params * @return List<Task> * @useFor 查询委托组的任务列表 */ public List<Task> getTaskFromCandidateGroup(String groupName) { return taskService.createTaskQuery().taskCandidateGroup(groupName) .list(); } /** * * @author Test * @createDate 2014-6-2上午10:16:32 * @params * @return List<Task> * @useFor 查询委托用户的任务列表 只能对candidate适用 用户在某个组下也适用 */ public List<Task> getTaskFromCandidateUser(String userName) { return taskService.createTaskQuery().taskCandidateUser(userName).list(); } /** * * @author test * @createDate 2014-6-8下午05:46:34 * @params * @return byte[] * @useFor 获得流程图加亮 */ public byte[] getActivitiPngBytes(ProcessInstance processInstance) throws IOException { byte[] result = null; try { BpmnModel bpmnModel = repositoryService .getBpmnModel(processInstance.getProcessDefinitionId()); List<String> activeActivityIds = runtimeService .getActiveActivityIds(processInstance.getId()); ProcessEngineImpl defaultProcessEngine = (ProcessEngineImpl) ProcessEngines .getDefaultProcessEngine(); Context.setProcessEngineConfiguration(defaultProcessEngine .getProcessEngineConfiguration()); /** 得到图片输出流 **/ InputStream imageStream = ProcessDiagramGenerator.generateDiagram( bpmnModel, "png", activeActivityIds); result = new byte[imageStream.available()]; imageStream.read(result); } catch (IOException e) { e.printStackTrace(); } return result; } /** * * @author Test * @createDate 2014-6-2下午12:19:00 * @params * @return void * @useFor 流程圖保存到本地 */ public void loadActivitiPng(byte[] srcPng, String locationStr) { File file = null; OutputStream out = null; file = new File(locationStr); try { out = new FileOutputStream(file); out.write(srcPng); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * * @author Test * @createDate 2014-6-2下午06:11:48 * @params 发起人名称 * @return void * @useFor 设置发起人 */ public void startProcessBy(String userName) { identityService.setAuthenticatedUserId("Test"); } /** * * @author Test * @createDate 2014-6-2下午06:16:18 * @params * @return List * @useFor 查看某个人的开启过的流程 */ public List<HistoricProcessInstance> getProcinstListStartBy(String userName) { List<HistoricProcessInstance> hpis = historyService .createHistoricProcessInstanceQuery().startedBy(userName) .list(); return hpis; } public String getVariableNameAndValueFromProcIns(String processInsId, String keyName) { List<HistoricVariableInstance> list = historyService .createHistoricVariableInstanceQuery().processInstanceId( processInsId).list(); for (HistoricVariableInstance variableInstance : list) { System.out.println("variable: " + variableInstance.getVariableName() + " = " + variableInstance.getValue()); if (keyName.equals("variableInstance.getVariableName()")) { return variableInstance.getValue().toString(); } } return ""; } /** * * @author Test * @createDate 2014-6-1下午10:39:05 * @params * @return void * @useFor 测试流程 */ @Test public void activitiTest() { // 流程起始参数,会保存在流程实例的变量中 Map<String, Object> map = new HashMap<String, Object>(); // 设置发起人 startProcessBy("Test"); // 开启流程并传参数 ProcessInstance processInstance = startProcessInstanceByKey( "myProcess", "ddddaaddd"); // 获得流程实例中的任务 List<Task> tasks = getTaskQueryByUserid("456").list(); System.out.println("456ID的任务个数:" + tasks.size()); for (Task task : tasks) { // claim调用claim的用户将变成该任务的所有人,其它用户将不能claim与complete该任务 // taskService.claim(task.getId(), "456"); // 节点任务结束 map.put("comments", "456前台汇总"); taskService.claim(task.getId(), "456"); taskService.complete(task.getId(), map); try { loadActivitiPng(getActivitiPngBytes(processInstance), "d://activitiTest1.png"); } catch (IOException e) { e.printStackTrace(); } } // 转后台123 System.out.println("123ID的任务数:" + getTaskQueryByUserid("123").list().size()); tasks = getTaskQueryByUserid("123").list(); for (Task task : tasks) { task.setDescription("啦啦啦啦啦"); map.put("comments", "123认真学习认真工作 不同意"); oneActivity2Another(task, "不同意", map, "123"); // taskService.claim(task.getId(), "123"); // taskService.complete(task.getId(),map); try { loadActivitiPng(getActivitiPngBytes(processInstance), "d://activitiTest2.png"); } catch (IOException e) { e.printStackTrace(); } } // 获得流程实例中的任务 tasks = getTaskQueryByUserid("456").list(); System.out.println("456ID的任务个数:" + tasks.size()); for (Task task : tasks) { // claim调用claim的用户将变成该任务的所有人,其它用户将不能claim与complete该任务 // taskService.claim(task.getId(), "456"); // 节点任务结束 task.setDescription("啦啦啦啦啦"); map.put("comments", "456认真学习认真工作2"); // 转办 // taskService.addCandidateUser(task.getId(), "123"); taskService.claim(task.getId(), "456"); taskService.complete(task.getId(), map); try { loadActivitiPng(getActivitiPngBytes(processInstance), "d://activitiTest1.png"); } catch (IOException e) { e.printStackTrace(); } } // 转办123 System.out.println("123ID的任务数:" + getTaskQueryByUserid("123").list().size()); tasks = getTaskQueryByUserid("123").list(); for (Task task : tasks) { task.setDescription("啦啦啦啦啦"); map.put("comments", "123认真学习认真工作 同意"); taskService.claim(task.getId(), "123"); taskService.complete(task.getId(), map); try { loadActivitiPng(getActivitiPngBytes(processInstance), "d://activitiTest2.png"); } catch (IOException e) { e.printStackTrace(); } } // 获得流程实例中的任务 tasks = getTaskQueryByUserid("567").list(); Map<String, Object> map1 = new HashMap<String, Object>(); System.out.println("567ID的任务个数:" + tasks.size()); for (Task task : tasks) { System.out.println("formKey值----->" + getFormKeyByTaskId(task.getId())); // 传到后台后根据pass值 来判断是否撤回 map1.put("comments", "567认真学习认真工作"); // 这个pass 就是流程图中任务节点(预算审核)中不同意路径的Main // config中的condition值即${!pass} // map1.put("pass", true); taskService.addComment(task.getId(), task.getProcessInstanceId(), "567认真学习认真工作"); taskService.claim(task.getId(), "567"); taskService.complete(task.getId(), map1); } List<HistoricProcessInstance> hpis = getProcinstListStartBy("Test"); System.out.println("Test开启过得流程有:" + hpis.size() + "个"); try { loadActivitiPng(getActivitiPngBytes(processInstance), "d://activitiTest3.png"); } catch (IOException e) { e.printStackTrace(); } HistoricProcessInstance historicProcessInstance = getProcessInstanceIdByBusinessId("ddddaaddd"); System.out.println(" 流程id--->" + historicProcessInstance.getId()); List<HistoricActivityInstance> actInsList = getHisUserTaskActivityInstanceList(historicProcessInstance .getId()); for (HistoricActivityInstance v : actInsList) { System.out.println(v.getId()); System.out .println("开始时间--->" + v.getStartTime() + " 结束时间------>" + v.getEndTime() + " 任务名称---->" + v.getActivityName() + " 办理人---->" + identityService.createUserQuery().userId( v.getAssignee()).singleResult() .getFirstName() + " UserId---->" + v.getAssignee() + " 审批意见---->" // + // taskService.getTaskComments(v.getTaskId()).get(0).getFullMessage()); + getWorkflowVariables(v.getProcessInstanceId(), v .getId())); } } /** * * @author Test * @createDate 2014-6-1下午10:58:16 * @params 任务 * @return void * @useFor 从当前节点转向另一个节点 */ public void oneActivity2Another(Task task, String flowName, Map<String, Object> map, String userid) { ProcessDefinitionEntity processDefinition = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService) .getDeployedProcessDefinition(task.getProcessDefinitionId()); ExecutionEntity executionEntity = (ExecutionEntity) runtimeService .createExecutionQuery().executionId(task.getExecutionId()) .singleResult();// 执行实例 String activitiId = executionEntity.getActivityId(); System.out.println("当前运行节点id值:" + activitiId); List<ActivityImpl> activitiList = new ArrayList<ActivityImpl>(); // 流程定义对象才能得到节点对象 activitiList = processDefinition.getActivities(); // 当前实例的执行到哪个节点 ActivityImpl srcActivity = findActivity(activitiList, activitiId); ActivityImpl endActivity = null; TransitionImpl transitionImpl = null; List<PvmTransition> pvmTransitionList = srcActivity .getOutgoingTransitions();// 获取当前节点的所以出口(这个方法做的不好,应该返回List<TransitionImpl>才对的,这样就不用下面的强转换了,我想以后版本会改了这点) for (PvmTransition pvmTransition : pvmTransitionList) { transitionImpl = (TransitionImpl) pvmTransition;// 强转为TransitionImpl System.out.println(transitionImpl.getProperty("name")); if (flowName.equals(transitionImpl.getProperty("name"))) { endActivity = transitionImpl.getDestination(); } } List<PvmTransition> oriPvmTransitionList = new ArrayList<PvmTransition>(); oriPvmTransitionList.addAll(pvmTransitionList); // 先清空其他Transition pvmTransitionList.clear(); pvmTransitionList.add((PvmTransition) transitionImpl); transitionImpl.setDestination(endActivity); taskService.claim(task.getId(), userid); taskService.complete(task.getId(), map); // 还原回去其他Transition pvmTransitionList.clear(); pvmTransitionList.addAll(oriPvmTransitionList); } public ActivityImpl findActivity(List<ActivityImpl> activitiList, String activitiId) { for (ActivityImpl activityImpl : activitiList) { String id = activityImpl.getId(); if (id.equals(activitiId)) { return activityImpl; } } return null; } /** * * @author Test * @createDate 2014-6-29上午08:25:13 * @params * @return TaskQuery * @useFor 根据用户名获得待办任务列表 */ private TaskQuery getTaskQueryByUserid(String candidateUserId) { TaskQuery taskQuery = taskService.createTaskQuery(); if (candidateUserId != null) { taskQuery = taskQuery.taskCandidateUser(candidateUserId); } return taskQuery; } /** * * @author Test * @createDate 2014-6-29上午08:35:38 * @params * @return String * @useFor 根据任务id获得formkey 值 */ private String getFormKeyByTaskId(String taskId) { HistoricTaskInstance historicTaskInstance = historyService .createHistoricTaskInstanceQuery().taskId(taskId) .singleResult(); return historicTaskInstance.getFormKey(); } /** * * @author Test * @createDate 2014-6-29上午08:57:30 * @params * @return String * @useFor */ private HistoricProcessInstance getProcessInstanceIdByBusinessId( String eventid) { return historyService.createHistoricProcessInstanceQuery() .processInstanceBusinessKey(eventid).singleResult(); } /** * * @author Test * @createDate 2014-6-29上午09:00:12 * @params * @return List<HistoricActivityInstance> * @useFor 获取审批记录 */ private List<HistoricActivityInstance> getHisUserTaskActivityInstanceList( String processInstanceId) { List<HistoricActivityInstance> hisActivityInstanceList = ((HistoricActivityInstanceQuery) historyService .createHistoricActivityInstanceQuery().processInstanceId( processInstanceId).activityType("userTask").finished() .orderByHistoricActivityInstanceEndTime().desc()).list(); return hisActivityInstanceList; } /** * * @author Test * @createDate 2014-6-29上午09:11:18 * @params * @return String * @useFor 获得审批意见 */ private String getWorkflowVariables(String processInstanceId, String activityInstanceId) { // 执行任务时提的意见 String comment = ""; List<HistoricDetail> historicDetailList = historyService .createHistoricDetailQuery().processInstanceId( processInstanceId).activityInstanceId( activityInstanceId).list(); if (historicDetailList != null && historicDetailList.size() > 0) { for (Iterator<HistoricDetail> iterator = historicDetailList .iterator(); iterator.hasNext();) { HistoricDetail historicDetail = (HistoricDetail) iterator .next(); HistoricVariableUpdate variable = (HistoricVariableUpdate) historicDetail; if ("comments".equals(variable.getVariableName())) { comment = String.valueOf(variable.getValue()); return comment; } } } return comment; } @After public void end() { System.out.println("流程测试完毕"); } }
发表评论
文章已被作者锁定,不允许评论。
-
Activiti 学习总结内容
2016-11-04 14:50 1569Activiti总结内容 常用方法汇总 sequenceFl ... -
Activiti根据Flowname进行转向
2014-06-29 18:13 721转向问题需要注意的是每次转向到其他节点时要把其他Transit ... -
Activiti小知识总结
2014-06-29 11:00 6141.ACT_HI_ACTINS表中Assignee字段没有值的 ... -
Activiti获取待办任务信息
2014-06-27 10:00 5242根据userid获得TaskQuery然后再获得Histori ... -
Activiti获取任务候选人
2014-06-27 09:33 2220IdentityLink是任务候选人的对象。来自于taskSe ... -
Activiti获得下一个节点
2014-06-26 14:37 1488用PvmTransition表示箭头的类。而这些类是从 Lis ... -
Activiti获取流程中的审批意见
2014-06-26 14:18 2443执行流程的过程中所有的变量信息都保存在ACT_HI_VARIN ... -
Activiti获取某个流程实例已经审批的节点记录
2014-06-25 16:15 2640已知businessid即eventid获得对应的审批记录 ... -
Activiti获取某个流程实例的FormKey
2014-06-25 15:21 2476通过任务id获得formkey ProcessDef ... -
Activiti中流程对象之间的关系
2014-06-25 10:36 731在开始之前先看看下图,对整个对象结构有个了解,再结合下面的详细 ... -
Activiti学习-2
2014-06-08 17:12 8815.12乱码问题解决: <!-- Activiti ... -
activiti学习之task与execution的关系
2014-06-08 16:54 1440一.含义 task 即待办任务 execution 即流程 ... -
Activiti学习总结
2014-06-03 11:50 19221.获得流程图乱码问题 ... -
Activiti环境安装及项目下载基础学习
2014-06-01 23:10 596Activiti资料 官网:http://www.activ ...
相关推荐
总结来说,Activiti Modeler是一款强大的业务流程建模工具,基于Java开发,遵循BPMN 2.0标准,能够帮助用户直观地设计、测试和部署流程。它提供了版本控制、导出导入等功能,易于集成到Java应用程序中,是企业级工作...
工作流引擎Activiti是开源的工作流引擎,这是一份简单的使用总结,希望对大家有用。
Activiti 是一个开源的工作流程引擎,它主要用于自动化业务流程。这个源码包是 Activiti 5.22.0 版本,包含了整个框架的源代码,为开发者提供了深入理解 Activiti 内部机制的机会。以下是一些关于 Activiti 的核心...
以上是对Activiti使用的一些核心知识点的总结,对于学习和使用Activiti的朋友来说,这些都是理解和应用 Activiti 必不可少的基础。通过深入理解和实践,你可以利用Activiti构建出高效、灵活的业务流程管理系统。
总结来说,Activiti Designer 5.18 是一个强大的Eclipse插件,专为设计和优化Activiti工作流而生。它利用Eclipse的插件机制,提供了一整套流程建模工具,让开发者能够更高效地构建符合BPMN 2.0标准的流程模型,...
Activiti是一款开源的工作流引擎,它能够帮助企业和组织实现业务流程自动化。在本文中,我们将深入探讨如何在各种环境中安装和配置Activiti,特别关注在Eclipse集成开发环境中的安装步骤,这是在尝试多种方法无效后...
总结,Activiti5.22jar包为Java开发者提供了强大的工作流引擎,能够方便地集成到各种企业应用中,实现流程自动化。通过理解其核心概念和使用方法,开发者可以构建出灵活、高效的业务流程管理系统。
Activiti 是一个开源的工作流和业务流程管理(BPM)平台,它被广泛用于企业级应用中,以实现流程自动化和提升工作效率。标题中的 "activiti-5.22.0zip下载" 指的是Activiti的一个特定版本——5.22.0的压缩包文件,...
Activiti 适配达梦数据库教程 activiti 是一个开源的 Workflow 和 BPM system,它提供了强大的工作流引擎和业务流程管理功能。然而,activiti 默认支持的数据库只有 MySQL、 PostgreSQL、Oracle 等少数几种,而达梦...
《Spring-Activiti在Ruoyi框架中的应用与二次开发》 在当今的企业级应用开发中,工作流管理系统已经成为不可或缺的一部分。Spring-Activiti作为一款强大的工作流引擎,结合Spring Boot框架,为开发者提供了便捷、...
activiti 5.22 explorer的war包
【工作流Activiti5学习总结】 工作流管理系统(Workflow Management System, WfMS)是企业信息化建设中的重要组成部分,它负责协调和管理业务流程。Activiti5是一款开源的工作流引擎,由Alfresco公司开发,它基于...
Jeecg集成activiti.docx Jeecg集成activiti是一个关于如何将activiti集成到Jeecg平台上的指南。下面是从给定的文件中提取的相关知识点: 1. activiti项目结构:activiti项目是一个Maven项目,包含了数据库文件,...
activiti-6.0.0.zip 工作流官网包 (如果没有积分可以直接Q我:499384808,免费分享) 1. database里放着各种数据库的建表、删表、升级语句数据库包括db2、h2、hsql、mssql、mysql、oracle、postgres 2. libs 相关...
### Activiti流程学习总结 #### 一、工作流的基本概念 在深入了解Activiti之前,我们需要先理解工作流的概念。工作流是一种将业务过程部分或全部自动化的方法,它可以帮助组织提高工作效率,减少错误,并且能够更...
在本篇博客“工作流Activiti的学习总结(十二)activiti官方十分钟快速学习”中,作者分享了关于Activiti工作流引擎的快速学习经验。Activiti是一个开源的、基于Java的企业级工作流引擎,它被广泛应用于自动化业务...
Activiti 是一个开源的工作流程和业务自动化引擎,它在企业级应用中被广泛使用来管理业务流程。这个压缩包 "activiti-explorer.war" 是 Activiti 的一个版本,具体是 5.22 版本。WAR 文件是 Web 应用程序档案(Web ...
### Activiti5数据库表结构详解 #### 概述 Activiti是一个开源的工作流引擎,用于构建业务流程自动化应用。它支持BPMN 2.0标准,并提供了灵活的方式来定义复杂业务流程。Activiti5版本中,为了实现业务流程管理的...
**正文** ...总结来说,了解并熟练掌握Activiti的常用API对于任何希望实现高效工作流管理的开发者都至关重要。通过学习这个PPT,你将能够更好地理解和应用Activiti,从而提升你的业务流程自动化能力。
Activiti Designer 5.18 是一款基于Eclipse的图形化工作流建模工具,它为企业提供了一种直观的方式来设计、部署和管理业务流程。这款离线安装插件的出现,使得用户无需在线连接即可在Eclipse环境中进行Activiti工作...