1新建流程模型

OA办公流程管理模型管理添加

点击“提交”后会立即跳转到“流程在线设计器”页面,请看下一章节

2在线流程设计器

OA办公流程管理模型管理编辑 注意:此功能不支持IE,请用谷歌或火狐浏览器编辑。

2.1设置流程属性

  • 流程名称:流程定义KEY,对应procDefKey,用来标识一个流程
  • 名称:流程定义名称
  • 描述:流程定义描述
  • 目标命名空间:流程命名空间。

2.2流程发起人流程变量

在开始节点的属性中设置“发起人”变量名:如:applyUserId

2.3挂接表单地址

  • 全局表单:新建流程时或活动元素上未设置表单标识时调用的表单,位于开始事件属性中“表自定义表单”字段,指定表单访问地址。
  • 活动表单:当前步骤使用的表单,使用活动节点属性“自定义表单”字段。

2.4设置参与者

在活动节点属性中找到“代理”属性,点击“…”弹出如下窗口

  • 代理人:任务执行人,设置系统中的“登录名”(loginName)。
  • 候选人:任务执行人,多个用逗号“,”隔开。
  • 候选组:任务执行组,多个用逗号“,”隔开,设置系统中的“角色英文名(enname)”。
  • 代理人和候选人的区别是:代理人不需要签收任务,直接可执行任务;候选人和候选组为竞争方式分配任务,被指定人待办中都有一条任务,谁先签收谁就获得任务的执行权。
  • 参与者可指定流程变量(EL表达式),动态指定参与者,如:${processer}

2.5设置流转条件

在流转线的属性中找到“流转条件”,这里,写EL表达式,返回true或false,如:${deptLeaderPass}

2.6保存流程设计图

工具栏上点击“保存”按钮 填写名称和描述,点击“保存”按钮。 此时可点击浏览器上的“叉号”关闭流程设计窗口。

2.7注意事项

  • 所有编号,如:模型编号、流程编号、活动节点编号,都不允许以数字开头。

3部署流程

上步咱们学习了流程设计,产生流程设计图,如何将我们的图部署到系统中并使用呢,请看如下操作:

  • OA办公流程管理模型管理部署
  • 接着系统会提示“部署成功”信息,如果提示错误,说明你流程设计图有问题,请检查错误,重新执行部署操作。
  • 另外两种部署方法,通过eclipse插件设计好的流程:
  • OA办公流程管理上传流程文件选择流程.bpmn.xml
  • 编写并执行ant脚本,启动系统将自动部署
  • / jeeplus/src/main/resources/act/build.xml。
  • 设置流程分类:在流程管理中直接点击流程分类进行设置。
  • 同一标识流程,部署多次,版本号自动加1
  • 正在运行的流程,再次部署新流程后,正在运行的流程还按照原来流程设置走,再次新建的流程使用新流程走。

4流程表单流转

4.1数据库设计

使用代码生成工具生成增删改查代码。 流程业务表中必须包含,如下字段:

字段 类型 默认 注释
id varchar(64) 编号
PROC_INS_ID varchar(64) 流程实例ID
create_by varchar(64) 创建者
create_date timestamp 创建时间
update_by varchar(64) 更新者
update_date timestamp 更新时间
remarks varchar(255) 备注信息
del_flag char(1) 删除标记

4.2流程接口

	/**
	 * 获取待办列表
	 * @param procDefKey 流程定义标识
	 * @return
	 */
	public List todoList(Act act)
	
	
	/**
	 * 获取已办任务
	 * @param page
	 * @param procDefKey 流程定义标识
	 * @return
	 */
	public Page historicList(Page page, Act act)
		
	
	/**
	 * 获取流转历史列表
	 * @param procInsId 流程实例
	 * @param startAct 开始活动节点名称
	 * @param endAct 结束活动节点名称
	 */
	public List histoicFlowList(String procInsId, String startAct, String endAct)
		

	/**
	 * 获取流程列表
	 * @param category 流程分类
	 */
	public Page processList(Page page, String category) 
	
	
	/**
	 * 获取流程表单(首先获取任务节点表单KEY,如果没有则取流程开始节点表单KEY)
	 * @return
	 */
	public String getFormKey(String procDefId, String taskDefKey)
		
	
	/**
	 * 获取正在运行的流程实例对象
	 * @param procInsId
	 * @return
	 */
	@Transactional(readOnly = false)
	public ProcessInstance getProcIns(String procInsId) 
	
	/**
	 * 获取已经结束流程实例对象
	 * @param procInsId
	 * @return
	 */
	@Transactional(readOnly = false)
	public HistoricProcessInstance getFinishedProcIns(String procInsId) 
	/**
	 * 获取正在运行的流程实例对象
	 * @param procInsId
	 * @return
	 */
	@Transactional(readOnly = false)
	public List getRunngingProcIns(String procDefKey,  User user, int[] pageParams) 
	
	
	/**
	 * 获取已经结束的流程实例对象
	 * @param procInsId
	 * @return
	 */
	
	public List getFinishedProcIns(String procDefKey, User user, int[] pageParams) 
		

	/**
	 * 启动流程
	 * @param procDefKey 流程定义KEY
	 * @param businessTable 业务表表名
	 * @param businessId	业务表编号
	 * @return 流程实例ID
	 */
	@Transactional(readOnly = false)
	public String startProcess(String procDefKey, String businessTable, String businessId) 
		
	/**
	 * 启动流程
	 * @param procDefKey 流程定义KEY
	 * @param businessTable 业务表表名
	 * @param businessId	业务表编号
	 * @param title			流程标题,显示在待办任务标题
	 * @return 流程实例ID
	 */
	@Transactional(readOnly = false)
	public String startProcess(String procDefKey, String businessTable, String businessId, String title) 
	
	/**
	 * 启动流程
	 * @param procDefKey 流程定义KEY
	 * @param businessTable 业务表表名
	 * @param businessId	业务表编号
	 * @param title			流程标题,显示在待办任务标题
	 * @param vars			流程变量
	 * @return 流程实例ID
	 */
	@SuppressWarnings("unused")
	@Transactional(readOnly = false)
	public String startProcess(String procDefKey, String businessTable, String businessId, String title, Map vars) 
		
	/**
	 * 获取任务
	 * @param taskId 任务ID
	 */
	public Task getTask(String taskId)
	
	/**
	 * 删除任务
	 * @param taskId 任务ID
	 * @param deleteReason 删除原因
	 */
	public void deleteTask(String taskId, String deleteReason)
	
	/**
	 * 签收任务
	 * @param taskId 任务ID
	 * @param userId 签收用户ID(用户登录名)
	 */
	@Transactional(readOnly = false)
	public void claim(String taskId, String userId)
	/**
	 * 提交任务, 并保存意见
	 * @param taskId 任务ID
	 * @param procInsId 流程实例ID,如果为空,则不保存任务提交意见
	 * @param comment 任务提交意见的内容
	 * @param vars 任务变量
	 */
	@Transactional(readOnly = false)
	public void complete(String taskId, String procInsId, String comment, Map vars)
	
	/**
	 * 提交任务, 并保存意见
	 * @param taskId 任务ID
	 * @param procInsId 流程实例ID,如果为空,则不保存任务提交意见
	 * @param comment 任务提交意见的内容
	 * @param title			流程标题,显示在待办任务标题
	 * @param vars 任务变量
	 */
	@Transactional(readOnly = false)
	public void complete(String taskId, String procInsId, String comment, String title, Map vars)
		
	
		// 提交任务
		taskService.complete(taskId, vars);

5测试执行

OA办公个人办公发起流程启动【请假流程】 系统自动调用流程设计时设置的开始节点中的“表单标识”地址 这事待办人的待办中出现一条待办项,点击进入任务办理,下方显示流转信息:

流程跟踪图: 在待办中点击“环节名称”,进入流程跟踪图界面