工作流的配置

关键字:流程建模、流程模型、流程定义、流程绑定、流程扩展配置
1、描述
此功能用以新增、编辑、删除、部署各成员企业各类审批流程。
以中集BMS的预付款模型–报关行为例,介绍配置过程
2、配置说明
2.1新增流程模型
菜单路径:流程管理-流程模型
1)点击【新增】按钮,在新增页面上填写流程名称和key值:
1
2)选择新建的流程模型,点击【编辑】按钮,将弹出当前模型的工作流维护界面,以下是项目组做好的效果图:
2

操作区域功能说明:位于头部顶端

**操作功能** **描述**
工作流操作区域-保存1 保存功能
工作流操作区域-编辑1 1.剪切、2.复制、3.粘贴、4.删除功能
工作流操作区域-撤销1 1.撤销动作还原、2.撤销
工作流操作区域-放大缩小 1.多个审批节点水平居中对齐、
2.多个审批节点垂直居中对齐、
3.中集BMS无需使用
工作流操作区域-关闭 1.流程图放大
2.流程图缩小
3.流程图1:1显示
4.流程图铺满屏幕
工作流操作区域-居中对齐 1.流程线条增加可操作点
2.流程线条可操作点删除
工作流操作区域-增加节点 关闭当前流程图页面
提示要离开此网站吗?
系统可能不会保存您所做的更改。
【留下】【离开】

流程节点功能说明:位于左侧的列表
针对中集的工作流应用,流程维护只需运用到如下流程节点功能,包含:启动时间的“事件”节点(启动事件);活动列表的“用户活动”、“服务任务”;结束任务列表的“结束任务”。
工作流流程节点-1

工作流流程节点-2

流程绘制:
1.可以将左侧的图标拖拽到右侧上方的空白面板区域进行流程图的绘制。
工作流流-流程绘制1
2.点击右侧的小图标可以快速进行流程绘制。
工作流流-流程绘制2
工作流流-流程绘制21
3.节点快速绘制操作说明。下图为流程节点将用到的快速绘制功能。
工作流流-流程绘制3
4.基于上述的流程节点以及线条就能绘制出完整的审批流程图:
工作流流-流程绘制4
5.选中流程的空白处,填写流程名称(key值),名称:
工作流流-流程绘制5
节点判断条件的配置,以其中一个分支为例:
工作流流-流程绘制51
点击流程条件:
工作流流-流程绘制52
也可以配置自动化节点,节点上可以绑定监听类如下图:监听类的编写方法可以参考2.4监听类的代码说明。
工作流流-流程绘制53
6.通过左上角的【保存】操作,就能完成当前流程图的编辑和保存功能。
流程部署:
选中绘制好的流程,点击【部署】按钮
工作流流-流程绘制6
2.2流程绑定
菜单路径:流程管理-流程绑定
1)点击【新增】按钮,红框中是需要输入的信息
流程绑定-1
2)在业务流程绑定明细的tab页,点击【新增】,输入红框中的信息,绑定明细是根据需求用户自定义配置的,如下图,各家结算公司设置不同的绑定字段值:
流程绑定-2
3)在待办标题配置的tab页,点击【新增】按钮,待办标题可配置固定值或是动态参数,也可以2者相结合,如
流程绑定-3
流程绑定-31
待办标题就是在首页的待办任务可见;

2.3流程扩展配置
菜单路径:流程管理-流程扩展配置
1)流程每部署一次就会有一个版本出现,多个版本中只有一个版本是激活状态:
流程扩展配置1

2)在左侧选中版本,右侧表格有节点名称的数据,选择点击【参与者配置】按钮:
流程扩展配置2

在“用户”、“角色”选项卡,可以通过【分配】按钮设置当前审批节点有权审批的“用户”或者“角色”。
动态参与者选项卡:设置条件,满足条件的可直接分配给用户、角色、组织等
流程扩展配置21
按照上述步骤给个节点配置参与者,配完后要对版本激活:
流程扩展配置22
**
2.4监听类的代码说明:**
流程监听类-1
1、必须继承JavaDelegate,服务节点执行的是execute方法里的代码
2、目前比较常用的方法(如截图),若项目组需要写业务逻辑,可以根据这些方法再进行扩展

3、代码例子为:
package com.gillion.bms.workFlowCustom;

import com.gfa4j.utils.ContextHolder;
import com.gillion.bms.allocation.domain.AdvancePayment;

import com.gillion.bms.allocation.service.AdvancePaymentService;
import com.gillion.bms.allocation.web.custom.BmsPayCustomService;
import com.gillion.bms.workFlowCustom.domain.BmsBcWfHistory;
import com.gillion.bms.workFlowCustom.service.BmsBcWfHistoryService;
import com.gillion.platform.framework.core.BusinessException;
import com.gillion.platform.framework.core.domain.BaseObject;

import com.gillion.platform.system.domain.IUser;

import com.gillion.platform.system.util.SysUserUtil;
import org.activiti.engine.delegate.DelegateExecution;

import org.activiti.engine.delegate.JavaDelegate;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
* Created by wangjia on 2017/2/27.
*/
public class AdvancePaymentStatusUpd implements JavaDelegate {

@Override
public void execute(DelegateExecution execution) throws BusinessException {

    //流程更新状态
    Long bmsPaymentId = (Long)execution.getVariable("businessId");
    AdvancePaymentService advancePaymentService = ContextHolder.getBean(AdvancePaymentService.class);
    AdvancePayment advancePayment = advancePaymentService.get(bmsPaymentId);
    String taskStatus = "";
    if(advancePayment.getApprovedStatus().equals("SUBMIT")){
        taskStatus= "提交完成";

        //向审批历史表中插入数据
        this.saveApproveHis(bmsPaymentId, execution.getCurrentActivityName(), taskStatus, advancePayment.getApprovedRemark());
    }else {
        advancePayment.setApprovedStatus("APPROVED");
        advancePayment.setIsPass("Y");//审批通过标识
        advancePaymentService.updateObject(advancePayment);
        //生成付款记录
        if(advancePayment.getPaymentAmount().compareTo(BigDecimal.ZERO) >0 &&
                !"CQ".equals(advancePayment.getSettlementMode())){//金额不为0且不为支票
            if(null != advancePayment.getProcessState() && advancePayment.getProcessState().indexOf("出纳") >=0
                        && !"Y".equals(advancePayment.getRequestStatus())){//最后审批为出纳,且付款状态不为Y
                BmsPayCustomService bmsPayCustomService = ContextHolder.getBean(BmsPayCustomService.class);
                bmsPayCustomService.makeAdvanceData(advancePayment);
            }
        }
        //发送消息和邮件
        String requestPath = "advancePaymenteckDef";
        String triggerBusinessId = advancePayment.getBcPaymentRequestId().toString();
        WorkFlowSendMsgEmail.workFlowSend(requestPath, triggerBusinessId);
    }
}

/*
 *  插入审批历史
 */
private void saveApproveHis(Long id, String taskName, String taskStatus, String remark) {
    BmsBcWfHistory bmsBcWfHistory = new BmsBcWfHistory();
    bmsBcWfHistory.setDocumentType("advance");
    bmsBcWfHistory.setDocumentId(id);
    bmsBcWfHistory.setApprovedType(taskName);
    bmsBcWfHistory.setApprovedStatus(taskStatus);
    SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddhhmmss");
    String nowDate=sdf.format(new Date());
    bmsBcWfHistory.setApprovedDate(nowDate);
    IUser user = SysUserUtil.getCurrentLoginSysUser();
    bmsBcWfHistory.setApprovedPersonCode(user.getUserCode());
    bmsBcWfHistory.setApprovedPersonName(user.getUsername());
    bmsBcWfHistory.setApprovedRemark(remark);
    bmsBcWfHistory.setRowStatus(BaseObject.ROWSTATUS_ADDED);
    BmsBcWfHistoryService bmsBcWfHistoryService = ContextHolder.getBean(BmsBcWfHistoryService.class);
    bmsBcWfHistoryService.saveObject(bmsBcWfHistory);
}

}