##工作流开发指南

###一、工作流开发整体流程

* 流程开发

    * 流程设计 --- 业务

    * 流程参数（流程变量与程序）开发 --- 技术

* 流程的部署与启动
    
###二、工作流基本元件的用法
1 节点类型 
* 开始事件
   * 开始事件：指明流程开始的位置
* 活动
   * 人工任务：用户任务用来设置必须由人员完成的工作。
   * 脚本任务：脚本任务时一个自动节点。当流程到达脚本任务，会执行对应的脚本
* 网关
   * 单一网关：也叫异或（XOR）网关，或更技术性的叫法 基于数据的排他网关， 用来在流程中实现决策。 当流程执行到这个网关，所有外出顺序流都会被处理一遍。 其中条件解析为true的顺序流（或者没有设置条件，概念上在顺序流上定义了一个'true'） 会被选中，让流程继续运行。
   * 并行网关：网关也可以表示流程中的并行情况。最简单的并行网关是 并行网关，它允许将流程 分成多条分支，也可以把多条分支 汇聚到一起。
   * 包含网关：包含网关可以看做是排他网关和并行网关的结合体。 和排他网关一样，你可以在外出顺序流上定义条件，包含网关会解析它们。 但是主要的区别是包含网关可以选择多于一条顺序流，这和并行网关一样。
   * 事件网关：基于事件网关允许根据事件判断流向。网关的每个外出顺序流都要连接到一个中间捕获事件。 当流程到达一个基于事件网关，网关会进入等待状态：会暂停执行。 与此同时，会为每个外出顺序流创建相对的事件订阅。
* 结束事件
   * 结束事件：指明流程的结束位置

2 节点属性

* 节点代码
    * 节点代码：节点的唯一标识
* 名称
    * 名称：节点的中文描述
* 审批方式
    * 任一人
    * 全部通过
    * 一定比例：需指定审批比例
    * 一定人数：需指定审批比例
    * 全部审批
* 审批比例
    * 审批比例：指定当前人工任务的通过条件
        * 工作流内置变量
            * nrOfApproved：NUMBER_OF_APPROVED（审批通过的数量）
            * nrOfRejected：NUMBER_OF_REJECTED（审批拒绝的数量）
            * nrOfInstances：NUMBER_OF_INSTANCES（当前节点审批实例数）
* 审批规则
    * 审批规则：通过规则指定审批人
* 加签
    * 加签
* 转交
    * 转交：将此次审批转交给其他人
* 自定义页面URL
    * 自定义页面URL：审批时需要查看的审批页面
* 表单按钮
    * 表单按钮
        * 同意  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	APPROVED
        * 拒绝  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	REJECTED
        * 审批退回      APPROVED_RETURN
* 任务监听器
    * 任务监听器：配置当前节点的运行程序（只能添加到用户节点中）
* 执行监听器
    * 执行监听器：配置当前节点的运行程序
* 注：监听器统一放在com.hand.hap.activiti.components下面

###三、流程参考图
  项目审批流程图
![新建模型界面](/assets/wfl_process.png)

###四、流程启动与事件的监听
* 编写IActivitiCommonService的实现类（统一放在hls.core.wfl.service.imp）