Activiti 5.16 用户手册  http://www.mossle.com/docs/activiti/index.html

Groovy语法 http://www.jianshu.com/p/1e95d03060f7

Activiti数据库表结构(表详细版) http://blog.csdn.net/hj7jay/article/details/51302829

集成新版(5.17+)Activiti Modeler与Rest服务 http://www.kafeitu.me/activiti/2015/12/27/integrate-new-activiti-modeler-and-rest.html

流程开发Activiti 与SpringMVC整合实例 http://www.cnblogs.com/xiaochangwei/p/5443173.html

SpringMVC与Activiti网页流程设计器整合 http://blog.csdn.net/xinqing623/article/details/48541811

设计器汉化 http://blog.csdn.net/xugangjava/article/details/12949151  一些汉化资源 http://pan.baidu.com/s/1qWlzHDE

SpringMVC项目集成Activiti Modeler(Activiti5.20版本) http://my.oschina.net/scoder/blog/678647

在eclipse中设计BPMN 2.0工作流定义的根本步骤 https://yq.aliyun.com/articles/28598

activiti入门3排他网关,并行网管,包含网关,事件网关 http://blog.csdn.net/a67474506/article/details/40428709

比较Activiti中三种不同的表单及其应用 http://www.kafeitu.me/activiti/2012/08/05/diff-activiti-workflow-forms.html

Form properties 表单属性 https://github.com/waylau/activiti-5.x-user-guide/blob/master/Chapter%209.%20Forms%20%E8%A1%A8%E5%8D%95/Form%20properties%20%E8%A1%A8%E5%8D%95%E5%B1%9E%E6%80%A7.md

Activiti: 关于表单的一些接口 http://www.mekau.com/index.php/tec/server/workflow/pandy_1611.html

Activiti5 的变量信息加入taskId http://fackyou200.iteye.com/blog/2089429

Activiti学习笔记七 流程变量 http://blog.csdn.net/qq710262350/article/details/42391757

扩展activiti使用自己的用户表和群组表 http://my.oschina.net/winHerson/blog/118172

同步或者重构Activiti Identify用户数据的多种方案比较 http://www.kafeitu.me/activiti/2012/04/23/synchronize-or-redesign-user-and-role-for-activiti.html

表达式支持自定义类 http://www.mossle.com/docs/activiti/index.html#springExpressions

BOS项目练习(activiti,历史数据操作,流程变量,任务组,监听器,网关,spring整合) http://blog.csdn.net/opopopwqwqwq/article/details/51702267

Activiti5 自定义查询语句 TaskQuery查询 条件查询 like查询 http://blog.csdn.net/iflow/article/details/10513903

Activiti历史查看,activiti历史 http://www.bkjia.com/Javabc/852758.html

 

 

 

 

 

 

 

 

  1. SQL脚本:下载activiti-5.21.0.zip,解压,得到SQL执行脚本。myslq有三个分类,试用执行没有错误的那一类来执行。
  2.  User Task: Assignee指定拥有这个任务的用户编码。
  3.   并行网关里面是加号(+):  下一级每个结点都要执行
  4. 排他网关里面是乘号(X):  当流程执行到这个网关,所有外出顺序流都会被处理一遍。 其中条件解析为true的顺序流(或者没有设置条件,概念上在顺序流上定义了一个’true’) 会被选中,让流程继续运行。注意这里的外出顺序流 与BPMN 2.0通常的概念是不同的。通常情况下,所有条件结果为true的顺序流 都会被选中,以并行方式执行,但排他网关只会选择一条顺序流执行。 就是说,虽然多个顺序流的条件结果为true, 那么XML中的第一个顺序流(也只有这一条)会被选中,并用来继续运行流程。 如果没有选中任何顺序流,会抛出一个异常。
  5.  包含网关里面是一个圆圈: 可以看做是排他网关和并行网关的结合体。 和排他网关一样,你可以在外出顺序流上定义条件,包含网关会解析它们。 但是主要的区别是包含网关可以选择多于一条顺序流,这和并行网关一样。
    包含网关的功能是基于进入和外出顺序流的:
    分支: 所有外出顺序流的条件都会被解析,结果为true的顺序流会以并行方式继续执行, 会为每个顺序流创建一个分支。
    汇聚: 所有并行分支到达包含网关,会进入等待章台, 直到每个包含流程token的进入顺序流的分支都到达。 这是与并行网关的最大不同。换句话说,包含网关只会等待被选中执行了的进入顺序流。 在汇聚之后,流程会穿过包含网关继续执行。
    注意,如果同一个包含节点拥有多个进入和外出顺序流, 它就会同时含有分支和汇聚功能。 这时,网关会先汇聚所有拥有流程token的进入顺序流, 再根据条件判断结果为true的外出顺序流,为它们生成多条并行分支。
  6. 表单所有需要渲染的表单属性都是通过2个服务方法中的一个进行装配的:
    StartFormData FormService.getStartFormData(String processDefinitionId) 和
    TaskFormdata FormService.getTaskFormData(String taskId).表单属性可以通过
    ProcessInstance FormService.submitStartFormData(String processDefinitionId, Map<String,String> properties)
    void FormService.submitStartFormData(String taskId, Map<String,String> properties)2种方式进行提交。
  7.  表单数据类型: 支持以下的几种表单属性类型:
    string (org.activiti.engine.impl.form.StringFormType)
    long (org.activiti.engine.impl.form.LongFormType)
    enum (org.activiti.engine.impl.form.EnumFormType)
    date (org.activiti.engine.impl.form.DateFormType)
    boolean (org.activiti.engine.impl.form.BooleanFormType)
  8. Activiti对任务分配的扩展
    当分配不复杂时,用户和组的设置非常麻烦。 为避免复杂性,可以使用用户任务的自定义扩展。
    assignee属性:这个自定义扩展可以直接把用户任务分配给指定用户。
    <userTask id=”theTask” name=”my task” activiti:assignee=”kermit” />
    它和使用上面定义的humanPerformer 效果完全一样。
    candidateUsers属性:这个自定义扩展可以为任务设置候选人。
    <userTask id=”theTask” name=”my task” activiti:candidateUsers=”kermit, gonzo” />
    它和使用上面定义的potentialOwner 效果完全一样。 注意它不需要像使用potentialOwner通过user(kermit)声明, 因为这个属性只能用于人员。
    candidateGroups属性:这个自定义扩展可以为任务设置候选组。
    <userTask id=”theTask” name=”my task” activiti:candidateGroups=”management, accountancy” />
    它和使用上面定义的potentialOwner 效果完全一样。 注意它不需要像使用potentialOwner通过group(management)声明, 因为这个属性只能用于群组。下面的例子中,执行者会通过调用ldapService这个spring bean的findManagerOfEmployee方法获得。 流程变量emp会作为参数传递给bean。
    <userTask id=”task” name=”My Task” activiti:assignee=”${ldapService.findManagerForEmployee(emp)}”/>
    也可以用来设置候选人和候选组:
    <userTask id=”task” name=”My Task” activiti:candidateUsers=”${ldapService.findAllSales()}”/>
    注意方法返回类型只能为String或Collection<String> (对应候选人和候选组):
    public class FakeLdapService {public String findManagerForEmployee(String employee) {
    return “Kermit The Frog”;
    }public List<String> findAllSales() {
    return Arrays.asList(“kermit”, “gonzo”, “fozzie”);
    }}
  9. 集成LDAP, 不是必须的,因为上面的assignee,candidateUsers,candidateGroups是可以使用表达式的。
    企业通常已经在LDAP系统各种保存了用户和群组信息。 自从5.14版本开始,Activiti提供了一种解决方案, 通过简单的配置就可以告知activiti如何连接LDAP。
    要想在你的项目中集成LDAP, 在pom.xml中添加如下依赖:
    <dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-ldap</artifactId>
    <version>latest.version</version>
    </dependency>用例
    集成LDAP目前有两大用例:
    通过IdentityService进行认证。比如,使用Activiti Explorer 通过LDAP登录。
    获得用户的组。这在查询用户可以看到哪些任务时非常重要。 (比如,任务分配给一个候选组)。
  10.  整合设计器问题: angular-strap-mini.js:8 Uncaught TypeError: a.focus is not a function, 这个是源码出现问题,去官网找对应版本的源码,然后修改$modal.show方法里面的requestAnimationFrame回调函数,直接注释掉a.focus(); 碰到问题再说!!!
  11.   整合设计器问题对话框问题, 设计器点doucemnt文本弹出框,无法关闭,是因为重复创建了对话框div,所以关闭的时候要清空这个对话框,text-popup.html里面的div加入id=”KisBpmTextPropertyPopupCtrl” ,  properties-default-controllers.js,close方法最后加入: jQuery(document.getElementById(“KisBpmTextPropertyPopupCtrl”)).remove();    同理,listeners,Signal definitions,保存对话框,对话框也响应处理,包括close,如果有cancel,也要加入清除代码;
  12.  整合设计器问题:隐藏没必要的区域, modeler.html里面的main-header加入隐藏代码style=”display: none;”, id=main的增加style=”padding:0px;”
  13.  表单的Form values使用,如果想使用它,请使用enum作为这个字段的Type, 然后才能读取 formProperty.getType().getInformation(“values”)
  14. 表单字段: 如果你在流程图里面没有定义表单字段,但是在启动流程和完成任务,一样可以提交没定义的字段,后台一样能读取的。