HYUEP应用平台开发手册流程系统分册.docx

上传人:b****5 文档编号:3629835 上传时间:2022-11-24 格式:DOCX 页数:20 大小:26.95KB
下载 相关 举报
HYUEP应用平台开发手册流程系统分册.docx_第1页
第1页 / 共20页
HYUEP应用平台开发手册流程系统分册.docx_第2页
第2页 / 共20页
HYUEP应用平台开发手册流程系统分册.docx_第3页
第3页 / 共20页
HYUEP应用平台开发手册流程系统分册.docx_第4页
第4页 / 共20页
HYUEP应用平台开发手册流程系统分册.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

HYUEP应用平台开发手册流程系统分册.docx

《HYUEP应用平台开发手册流程系统分册.docx》由会员分享,可在线阅读,更多相关《HYUEP应用平台开发手册流程系统分册.docx(20页珍藏版)》请在冰豆网上搜索。

HYUEP应用平台开发手册流程系统分册.docx

HYUEP应用平台开发手册流程系统分册

内部资料注意保密

HY-UEP应用开发平台开发指南

工作流开发分册

[单位]

2013年1月

文档说明

文档名称

[标题]

文档编号

文档版本

0.1

文档密级

内部版本

0.1.0.2

文档类型

■初稿□征集意见稿□最终稿

文档编制

编制时间

2013-01-05

文档审核

审核时间

文档审核

审核时间

所属项目

项目编号

文档备注

修订记录

修订人

修订内容摘要

产生版本

修订日期

审核人

批准人

批准时间

1前言

1.1编写目的

工作流平台依托海颐企业级应用开发平台开发实现,为方便进行二次开发和流程调度,单独封装了一套进行流程调度的API接口。

这些接口表现为一个JAVA类的方法,并通过参数和返回值进行流程调度和信息交互。

通过这些API的调用,可以协助开发者实现任务的提交,激发工作流进行相应的调度等。

使用HY-UEP平台的工作流模块进行二次开发,需要了解系统提供的这些API接口,需要掌握这些接口的含义、使用场合、参数的含义以及遵循一些约定等,本文档详细阐述了这些API编程细节,并对调度引擎中的重要常量、重要参数、常见示例等做了说明;从开发指南到开发示例,一步步指导开发人员完成工作流的二次开发工作。

1.2适用范围

工作流模块是HY-UEP的选配模块,因此只有在UEPSTUDIO集成开发环境中创建UEP项目时选择了支持工作流模块的特性,项目中才能进行工作流的相关开发工作。

本文档面向的读者主要是使用HY-UEP平台的工作流模块进行二次开发的开发人员。

1.3相关说明

在工作流调度接口中,使用最多的是各类任务的提交接口,本文档主要详细介绍了任务正常提交、选择传递、派工提交、任务激活、默认回退以及任务抽回等接口。

本文档还介绍了几种常用业务需求的解决方案:

自由流的实现、会签的实现、并行子流程的实现、自动活动的实现以及流程初始化参数的实现等。

要求预期读者需要具备一定的工作流基础知识,并且在开发过程中可能会涉及到众多的平台知识,请参阅HY-UEP相关文档。

2综述

2.1系统架构

HY-UEP的工作流平台作为海颐企业应用平台的一个系统模块,以业务服务的形式为企业应用提供服务。

工作流平台是基于WfMC的工作流模型,结合多年的开发经验开发出的遵循xpdl模型标准,满足分布式、异构环境要求的工作流系统。

体系结构如下图所示:

工作流平台包括流程建模工具和工作流引擎两部分,流程建模工具用于流程定义,集成到了UEPStudio开发环境中。

流程引擎负责流程的调度和运行,包括三部分:

工作流接口、调度内核和引擎服务。

工作流接口对外提供流程定义、监控和调度接口。

调度内核负责流程调度,产生流程实例、活动实例和任务项并处理,处理过程中调用引擎服务的事件服务、时限服务、应用代理和日志服务。

2.2开发流程

UEP项目如果使用流程模块,首先要在项目上增加流程模块的支持,有了流程模块的支持后,就可以绘制业务流程模板,进行基于流程的业务流程开发了。

具体开发过程如下:

1.分析业务需求,找出需要绘制的业务流程模板。

2.归纳业务办理步骤,创建标准环节,为流程绘制做准备。

3.绘制流程模板,请参考流程建模的操作手册。

校验成功后加载流程模板。

4.在业务应用中建立业务功能和流程模板的对应方式,并确定业务工作单和流程实例的关联方法,以便运行业务功能时能够启动对应模板的流程实例,并把流程实例关联到业务工作单上。

5.显示待办任务。

6.在业务办理界面中增加流程传递的功能。

下面的章节对后面几个过程进行说明。

3开发指南

3.1开发环境配置

工作流模块只能依托UEP项目进行开发,所以得首先安装集成开发环境UEP-SUTDIO,然后在新建UEP项目时要勾选“工作流模块”,也可以在已有的UEP项目中再增加“工作流模块”的支持。

详细操作参考《UEPStudio平台操作指南.doc》。

3.2任务相关数据说明

3.2.1模板相关数据

3.2.1.1模板类别

EP_WF_TEMPLATE_CLASS:

模板类别表,存储工作流系统中定义的模板分类信息。

字段说明:

列名

代码

类型

说明

模板类别号

TEMPLATE_CLASS_NO

number(8)

上级模板类别号

UP_CLASS_NO

number(8)

模板类别名

TEMPLATE_CLASS_NAME

varchar2(64)

使用系统标志

MODULE_ID

varchar2(32)

排序序号

ORDER_CODE

varchar2(32)

备注

REMARK

varchar2(255)

3.2.1.2模板库主信息

EP_WF_TEMPLATE:

存储工作流系统中已经定义的模板信息。

字段说明:

列名

代码

说明

类型

模板号

TEMPLATE_NO

模板的编号,与版本号一起唯一标识一模板

number(8)

版本号

VERSION_NO

标识一模板的具体版本,与模板号一起唯一标识一模板

varchar2(8)

模板名

TEMPLATE_NAME

模板的名称

varchar2(64)

模板类别号

TEMPLATE_CLASS_NO

模板所属的模板类别号

number(8)

是否运行版

RUN_FLAG

是否是当前执行版,’Y’,’N’

varchar2

(1)

模板对应程序窗口

TAG

一个流程模板对应的程序主窗口或主类

varchar2(128)

子流程标识

AS_SUBFLOW

标识一模板是否只能作为子流程使用,不能独立启动实例

varchar2

(1)

流程模板类型

MODEL_TYPE

流程模板类型,1:

模型1;2:

模型2

varchar2

(1)

所属部门

DEPARTMENT

number(10)

创建时间

CREATE_TIME

date

创建者

CREATOR

varchar2(16)

合格标志

VALID_FLAG

Y:

合格;N不合格

varchar2

(1)

启用时间

START_DATE

date

停止时间

END_DATE

date

动态修改标志

MODIFY_FLAG

Y:

动态修改;N:

没有动态修改

varchar2

(1)

前身版本

PRE_VERSION_NO

varchar2(8)

排序序号

ORDER_CODE

varchar2(32)

描述信息

DESCRIPTION_INFO

varchar2(255)

模板日历

CALENDAR_TYPE

1:

默认日历;2:

7*24小时日历

varchar2

(1)

3.2.2实例及任务列表

3.2.2.1实例列表

EP_WF_INSTANCE_LIST:

存放工作流系统中的实例信息。

字段说明:

列名

代码

说明

类型

实例号

INSTANCE_ID

number(10)

模板号

TEMPLATE_NO

number(8)

版本号

VERSION_NO

varchar2(8)

调度状态

STATE

0挂起1运行2正常结束3异常结束

varchar2

(1)

实例开始时间

START_TIME

启动时间

date

实例结束时间

END_TIME

结束时间

date

实例启动人

START_OPERATOR

varchar2(32)

所属部门

DEPARTMENT

实例的默认部门

number(10)

锁定标志

LOCK_FLAG

varchar2

(1)

顶级部门

TOP_DEPARTMENT

number(10)

备注

REMARK

varchar2(255)

3.2.2.2当前任务清单

EP_WF_TASK_LIST:

存放实例对应的当前任务列表信息。

字段说明:

列名

代码

说明

类型

实例号

INSTANCE_ID

当前任务的实例号,与任务号一起标识一当前任务

number(10)

活动实例

ACTIVITY_INSTANCE_NO

活动实例号

number(4)

任务号

TASK_ID

当前任务的任务号,与实例号一起标识一当前任务

number(4)

活动号

ACTIVITY_NO

当前任务的环节号

number(4)

标准环节号

STD_TACHE_NO

当前任务对应的标准环节

number(10)

活动名称

ACTIVITY_NAME

活动名称

Varchar2(128)

处理实体号

ENTI_ID

当前活动的处理实体

varchar2(255)

处理实体类型

ENTI_TYPE

当前活动处理实体的类型,1:

角色;2:

人员;3:

软模块;4:

子流程

varchar2(8)

版本号

VERSION_NO

实例使用模板的版本号

char(8)

模板号

TEMPLATE_NO

实例使用模板的模板号

number(8)

任务状态

TASK_STATE

0等待前驱计数完成;7待领取;8待处理;9正在处理;A已提交;

char

(1)

日历类型

CALENDAR_TYPE

1:

默认日历

2:

7×24小时

3:

组织日历

4:

流程日历

varchar

(1)

计时要求标志

TIME_FLAG

任务是否要求计时

varchar2

(1)

任务传来人员

LAST_COMMITOR

当存在并行流程时可以有多个

varchar2(255)

超时标志

OVERTIME_FLAG

任务是否超时(Y/N)

varchar2

(1)

超时大小

OVER_NUM

超时的时间(单位分钟)

number(18)

段时限超时标志

SEG_OVERTIME_FLAG

varchar2

(1)

任务到达时间

TASK_REACH_TIME

date

实例启动人

START_OPERATOR

varchar2(32)

角色

ROLE_CODE

varchar2(16)

父活动实例号

PRT_ACTINS_NO

为子流程时,保存父活动实例号

number(4)

调度状态

STATE

是运行,挂起,结束,异常结束分别是1,0,2,3

varchar2

(1)

任务应完成时间

TASK_LIMIT_TIME

设置时限时的到期时间

date

所属部门

DEPARTMENT

Number(10)

层次标志

LEVEL_DESC

varchar2(64)

任务开始处理时间

START_TREATE_TIME

Date

传来方式

COMMIT_TYPE

正常传递1,选择传递2派工提交3默认回退4任务抽回5

varchar2

(1)

3.2.3任务执行情况

3.2.3.1任务执行情况

EP_WF_TASK_EXEC_INFO:

存储实例的详细办理进度信息。

字段说明:

列名

代码

说明

类型

实例号

INSTANCE_ID

number(10)

任务号

TASK_ID

number(4)

活动实例号

ACTIVITY_INSTANCE_NO

活动号

ACTIVITY_NO

number(4)

标准环节号

STD_TACHE_NO

number(10)

活动名称

ACTIVITY_NAME

Varchar2(128)

日历类型

CALENDAR_TYPE

1:

默认日历

2:

7×24小时

3:

组织日历

4:

流程日历

Varchar2

(1)

任务状态

TASK_STATE

0等待前驱计数完成;7待领取;8待处理;9正在处理;A已提交;

varchar2

(1)

模板号

TEMPLATE_NO

number(8)

版本号

VERSION_NO

varchar2(8)

计时要求标志

TIME_FLAG

varchar2

(1)

超时标志

OVERTIME_FLAG

varchar2

(1)

超时大小

OVER_NUM

超时数以秒记

number(18)

段时限超时标志

SEG_OVERTIME_FLAG

varchar2

(1)

任务传来人员

LAST_COMMITOR

当存在并行流程时可以有多个

varchar2(255)

任务到达时间

TASK_REACH_TIME

date

任务提交时间

TASK_COMMIT_TIME

date

任务提交人

TASK_COMMITOR

一个环节的任务提交人只能有一个,但是执行实体可以有多个

varchar2(255)

调度状态

STATE

是运行,挂起,结束,异常结束分别是1,0,2,3

varchar2

(1)

任务应完成时间

TASK_LIMIT_TIME

date

父活动实例号

PRT_ACTINC_NO

Number(4)

所属部门

DEPARTMENT

Number(10)

层次标志

LEVEL_DESC

varchar2(64)

任务开始处理时间

START_TREATE_TIME

Date

传来方式

COMMIT_TYPE

正常传递1,选择传递2派工提交3默认回退4任务抽回5

varchar2

(1)

3.2.4待办任务

流程引擎根据活动的处理实体设置进行人员分配,分配结果体现在EP_WF_TASK_LIST表里,和待办任务有关的字段见下表:

字段

名称

说明

ENTI_ID

处理人员

任务的处理人帐号

ROLE_CODE

角色代码

任务的处理角色

DEPARTMENT

部门代码

任务的处理部门

TASK_STATE

任务状态

0等待前驱计数完成;7待领取;8待处理;9正在处理;A已提交;

检索待办任务时要综合考虑上述表中字段的值,由于部门是树型的,涉及到上下级等多个层次,一般不会根据部门过滤待办任务。

如果不考虑部门,每个操作员能看到的任务为下面几种情况的并集:

✧任务状态是待处理,操作员的角色符合任务处理角色的值

✧任务状态是待处理和正在处理,操作员帐号符合处理人员的值

3.3启动流程实例

流程模板定义完毕后,需要加载模板使模板生效,成为当前运行版,只有当前运行版的模板版本才能启动流程实例。

调用createProcessInstance接口启动流程实例,接口参数说明如下:

参数名称

类型

说明

templateNo

long

要启动实例的模板的模板号

versionNo

String

要启动实例的模板的版本号

userId

long

流程实例启动人

autoCommit

boolean

流程的第一个人工活动的处理人的处理方式,false是流程启动人,true表示根据活动的处理实体设置由流程引擎分配的,不一定是实例启动人

right

boolean

是否检查流程启动人具有该模板的启动权限

orgId

long

指明流程实例的实例部门,-1表示启动人所在的部门

formalParams

Map

流程的形参值,分输入和输出参数,输入参数需要调用者提供参数值;输出参数是流程引擎设置值,流程调度过程中调用getProcessFormalParamValue得到。

调用getProcessFormalParams接口得到流程的形参

3.4流程传递指南

任务办理完毕提交时,平台流程模块提供了几种传递方式,以满足不同的传递要求,下面详细说明。

3.4.1正常传递

最基本的使用方法,调用normalCommitTask接口实现,引擎按照模板中定义的格式将任务向下传递。

这里有几点需要注意:

1)如果当前活动是多任务项,多任务项是指同一个活动实例产生了多个任务,这些任务可以并行执行,也可以串行执行;如果是并行执行,当前任务正常提交后,要查看当前活动实例下有没有其他的未完成的任务,直到所有的任务都完成了,流程才能流转到下一个活动节点;如果是串行执行,当前任务正常提交后,才会根据需要产生下一个任务,直到所有的任务都产生并完成,流程才能流转到下一个活动节点;

2)如果流程传递到的活动是自动活动,自动活动是指不需要人工参与的活动,所以不会产生任务项,自动活动在执行完相应的代码或服务后,流程会自动继续向下流转;

3.4.2选择传递

接口中提供了两种选择传递的方法,一种是同一流程内的选择传递,另一种是跨流程的选择传递。

实现选择传递的过程如下:

1)首先通过调用getOptionalTransions方法获得可以选择传递的活动列表List,这个列表中包含了通过跳转边或是自由流所能到达的活动;NextActivityInfo中详细记录了可到达的活动的模板号、版本号、活动号、跳转途径以及跳转控制策略等信息,应用程序可以利用它构造出可选择传递的活动列表,供客户选择。

2)选择好要跳转的活动后,如果是同一流程内跳转,可以调用简单格式的selectCommitTask即可,如果是跨流程跳转,则需要调用复杂格式的selectCommitTask方法,其中最后一个参数nextActivityInfo就可以直接从NextActivityInfo中得到。

当然,为了通用,统一使用复杂格式的选择传递方法即可。

3.4.3派工提交

派工提交一般用于指定下一个活动执行人员的情况,如班长派工,计量外勤派工等,引擎并没有限定只有流程中的派工活动才能调用派工接口,任一个活动都可以使用派工提交接口。

派工提交可用于在单一节点产生不固定数目的任务,在派工的参数中指定任务处理人或处理部门,一个节点指定了几个处理人或处理部门就产生几个任务,这些任务以多任务项的形式存在。

还可对子流程派工实现并行子流程,对子流程派工只能派工到部门,并且这个部门就作为该子流程的实例部门,并且各子流程内的任务是相互不影响的。

进行派工提交的控制步骤:

1)首先调用getDispatchActivities接口得到当前活动可达的活动列表List,这些活动列表中包含当前活动能到达的人工活动、子流程活动以及子流程的首活动。

可以根据实际情况,构造一个或多个派工提交对象DispatchInfo,在DispatchInfo中可以指定派工的部门或人员,指定几个部门或几个人员就产生几个任务,这些任务以多任务项的形式存在,并且可以通过DispatchInfo指定这些任务是并行执行还是串行执行。

其中需要注意的是对子流程派工只能按照部门派工。

2)调用dispatchCommitTask接口实现派工提交。

需要注意几种派工失效的情形:

1)当派工后继环节跨越分支环节时,由于传递时可能存在条件边不满足而造成派工失效。

2)当前活动是多任务项,如果不是最后一个任务进行派工,由于该活动还没有结束而造成派工失效

3.4.4回退

回退是指活动的默认回退,按照模板定义的环节顺序回退,不一定是回退到传来的活动。

回退调用的接口是returnTask,接口的详细说明请参照API文档。

关于回退的一些约定:

1)以流程定义的顺序回退,而不是回退到传来活动

2)当某个活动是选择传递而来,前驱活动没有走过,这种情况下,回退到跳转来的活动。

3)如果当前活动是个并行多任务项,一个任务还都没有处理,则可以回退,否则不能回退;如果当前活动是个串行多任务项,会回退到当前任务的前一个任务,如果是第一个任务,就回退到前一个活动。

4)如果回退到的活动是个并行多任务项,则会退后产生所有的任务,如果回退到的活动是个串行多任务项,则回退后产生串行多任务项的最后一个任务。

5)当回退到子流程时,调度到子流程执行过的最后一个人工活动。

6)对于模型1来说,如果回退中包含分支活动,则根据配置决定是否需要杀死相关任务。

3.4.5任务抽回

当某个任务传递后的所有后继环节没有处理时,可以进行抽回,抽单前,应该调用canTaskRedraw接口判断某个任务是否可以抽回,然后调用taskRedraw接口实现任务的抽回。

任务抽回有以下约定:

1)如果要抽回的活动是个多任务项,则只要有一个任务完成了,就不能抽回。

2)如果当前活动是个并行多任务项,且后续活动任务还没有开始,则只抽回当前一个任务;如果当前活动是个串行多任务项,则只抽回当前任务。

3.5人员分配

现有的人员分配支持活动分配到人员或岗位,即在流程中可以指定哪些活动分到人,哪些活动分到角色。

在实际工作中,人员,部门,角色这些东西一般是相互关联的,引擎的调度规则可以大致作如下的描述:

1)如果重复执行保持不变,则首先查看该活动是否已经执行过,如果执行过,找出ENTI_ID直接置入,ENTI_TYPE则是指定到人,DEPARTMENT为人员所在部门;如果没有执行过,则按照活动的设置进行人员分配;

2)若活动直接指定到部门(直接指定或动态部门),不分配到人,则按照流程的设置,直接将部门写入DEPARTMENT,ENTI_TYPE为按照部门分配,处理人员为空;

3)若活动指定到角色(直接指定或动态角色),不分配到人,则按照流程中的设置,将角色代码写入任务表中的ROLE_CODE字段,处理人员为空,ENTI_TYPE为按照角色分配,处理部门则根据调度时的实际情况指定:

首先若在流程中指定部门,则直接置入;若流程中指定动态部门,则首先计算部门表达式,然后置入;如果属于派工指定部门提交,则将派工的部门置入;如果最后部门仍然是-1,则将实例的默认部门置入。

4)若活动指定到个人(直接指定或动态指定),人员分配后ENTI_ID为指定的处理人员,ENTI_TYPE为执行类型,DEPARTMENT为人员所在的部门

5)若活动的处理实体是相关活动(流程内部相关或跨流程相关),如果相关活动已经执行过,则直接得到处理人员置入ENTI_ID,由于已经指定到人,ENTI_TYPE为指定到人,DEPARTMENT为人员所在的部门;如果相关活动没有执行,则按照相关活动的设置进行重新分配;

6)分配到人的策略:

若是全局分配,则检查有没有默认部门,若有,从默认部门开始找起,搜索顺序为:

默认部门,默认部门下面的部门,逐次向上搜索;若没有指定默认部门,则只按照角色在全局分配;若派工指定部门或模板中指定部门,则只检索指定部门,若没有则将处理人员设为-1;若按照传来部门优先,则只搜索传来人员所在部门,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1