金忠孝,刘 峰
(上海汽车集团股份有限公司,上海 201804)
21世纪,中国的汽车市场正在经历着爆发式的增长,同时也面临着越来越激烈的全球化市场竞争。汽车产业作为我国的支柱产业,不仅具有较高的产业关联度,能吸收较多的劳动就业者,而且还是技术进步速度最快的产业之一, 它能有力带动相关产业的技术进步和产品升级换代。
从汽车企业成本发生的类型来看,主要有采购成本、加工成本和管理成本等。供应商的采购成本根据所从事行业的不同,分别占到总成本的55%~70%,主机厂采购成本所占比例更是高达70%,如果能有效降低采购成本,就抓住了成本优化的关键。为了有效地提高采购效率及降低采购成本,汽车企业都较早地开始了电子采购(EP:E-Procurement)模式的实践。
汽车行业的电子采购活动中贯穿着工作流和信息流两种活动,其中工作流是企业生产活动的主流,是企业生产经营活动的核心,而信息流是伴随着采购流程而产生的,是电子采购活动的重要组成部分。上海汽车在自主品牌的建设和发展过程中,充分意识到电子采购的重要性,在借鉴了上海通用和上海大众等优秀企业成熟的电子采购经验的基础上,自主开发出一套先进的电子采购管理平台,其业务架构如图1所示,软件架构如图2所示。
从图2可以看出,上海汽车的电子采购平台采用J2EE架构,并采用IBM的Websphere Application Server(简称WAS)作为应用服务器,IBM的WebSphere Process Server(简称WPS)作为流程引擎。
在上海汽车电子采购平台的研制过程中,我们遇到大量的人工工作流,人工工作流的处理,是一个复杂的技术难题,本文就重点介绍我们在研制采购平台过程中人工工作流平台的设计方法,供同行参考。
工作流平台的设计理念如下:
1)打破各孤立系统的信息孤岛,恢复被信息孤岛割断了的本来是密切相连的业务流程,保证各系统之间的互联、互通、互享、互动。
图1 采购平台业务架构图
2)重用功能模块,避免功能的交叉与重复,特别是对已有的业务系统的重用。
3)建立业务流程驱动的开发模式,建立业务人员和IT人员的桥梁。
4)建立开放型,松耦合的流程平台,并且建立在业界的标准之上。
5)便于流程的集中管理和数据的中央集成,用数据总线整合和交互各种数据信息。
6)有完备的流程监控、查询、监督和分析的功能。
图 2 采购平台软件架构图
图 3 总体架构设计图
人工工作流平台的总体架构设计如图3所示:
总体架构设计说明:
人工工作流平台的总体架构分为三个部分:
1)流程门户系统
(1)流程门户主要用于展现各个业务系统的流程单据;
(2)所有流程单据存放于Portal门户系统的数据库中;
(3)流程门户不会主动访问后台的业务系统;
(4)流程门户与后台业务及流程没有任何强耦合的关联关系;
(5)流程门户与后台业务子系统及流程通过配置手段进行统一展现和访问。
2)各个子系统业务和流程访问系统
(1)主要运行各个子系统的核心业务程序及其访问后台工作流引擎的程序;
(2)用于处理业务相关数据;
(3)用于和后台工作流引擎进行流程访问。
3)后台业务流程核心运行系统
(1)主要运行各个业务系统所需的工作流程;
(2)控制业务的流转;
(3)实现流程相关数据与核心业务数据松耦合;
(4)实现业务数据和流程数据分开,但是又关联的功能;
(5)业务数据通过BOUUID(全局变量名)唯一标识实现,并嵌入流程的数据BO(业务对象简称)中。
工作流平台的核心内容主要有以下六方面:
1)流程门户系统
(1)任务查询和管理架构;
(2)前端页面表单逻辑架构;
(3)流程BO和外部业务数据的整合(如任务的查询列表,任务的填写和完成等);
(4)流程数据和业务数据的事务性控制(提交任务时,保证两者的一致性);
(5)流程实例和任务实例的管理。
2)常用流程模板的模式设计
3)组织架构的管理和配置
人员任务分配架构。
4)业务规则配置架构
流程设计及配置架构。
5)安装,运维模块
6)流程监控
以下重点介绍人工工作流平台设计中的难点,分别是任务查询和管理框架、Cunsom Table(用户表)框架、前端页面表单逻辑与业务数据整合的框架。
流程平台的工作流查询架构为:
1)WPS的工作流任务列表查询采用custom table解决方案,custom table含有流程相关的任务数据,同时也包含和业务相关的业务数据。
2)工作流平台拥有自己应用后接口分别去查询系统的custom table工作列表。
3)人员工作的分配由用户的一个“人员组织架构和任务分配系统”维护,统一管理人员的分配。流程引擎通过应用接口调用该“人员组织架构和任务分配系统”,得到对于某个流程、某个节点的人员信息。
2.2.1 应用范围
人工任务的查询一般需要流程数据和业务数据的联合查询,这需要流程数据库和业务数据库的一个整合方案。另外,当系统中运行了大量的人工任务实例时,通过流程引擎提供的应用接口来查找工作项的效率就会很低(因为有许多表的join查询)。为了解决这两个问题,我们引入了Custom Table的概念。该方案通过利用系统提供的应用接口的Event Handler(事件处理器)来跟踪任务实例的生命周期,并在任务实例的状态变化时将特定的数据写入到Custom Table中。通过这种方式,和流程相关的关键信息以及查询业务数据都被存储到Custom Table中,从而在查询工作项时可以直接查询Custom Table,无需再使用流程的API(应用程序接口的简称)来执行查询。
2.2.2 Custom Table的功能列表
1)当任务被创建时,任务相关的业务数据被自动写入到Custom Table。
2)当任务被处理时(Claim),任务所有人和任务状态被自动的更新到对应的数据上。
3)当任务被Transfer(转移)时,新的任务所有人的ID也会被自动的更新到数据表中。
4)当任务被完成时,跟该任务相关的数据会被自动的从Custom Table中删除。
5)当任务被终止时(用户可以显示的终止流程来终止任务,或者流程中出现异常导致任务所在的范围被终止),跟该任务相关的数据会被自动的从Custom Table中删除。
目前,我们已经在上海汽车的电子采购平台中实现了Custom Table的以下功能:
1)待办任务记录
提供了当前处于Ready和Claim状态的任务基本信息。
2)已办任务历史
如果选择了保留任务历史,则在任务完成时自动将代办任务记录转移到已办任务历史表中,然后把记录从待办任务记录表中删除。
2.3.1 流程门户设计
流程门户的设计核心思想为:
1)核心使用MVC(Model-View-Controller的简称)实现,实现业务数据、逻辑控制、UI表现的分离;
2)展现层使用ExtJS(一种JavaScript框架)框架;
3)控制层使用依赖注入方式开发,提高开发的灵活性;
4)数据访问使用JPA(Java Persistence API的简称)风格 Annotation(注释)方式进行描述对象属性和数据库表的关联关系,并实现CRUD(创建、查询、更新、删除的简称)的自动实现。
2.3.2 子业务及流程访问系统层架构设计
1)业务功能单元实现的设计思想等同于流程门户的设计思想;
2)后台WPS工作流程访问使用轻量的EJB Thin客户端,实现了EJB POJO化的敏捷开发。
2.3.3 后台业务流程核心运行平台架构概要设计
1)使用业界标准流程描述语言BPEL开发核心业务流程服务;
图 4 BOUUID全局变量的应用示例
2)WPS流程中的人工任务节点使用嵌入接口的方式,在一个事务中自动更新前台门户流程单列表展现库表Custom_Task_Work_T;
3)通过EJB Statelss SessionBean的方式向外提供工作流引擎的访问接口。
1)流程门户系统、业务和流程访问系统、业务流程运行系统三个系统互为独立,属于松耦合的体系架构,他们之间的互联主要通过BOUUID来进行实现关联;
2)当业务系统发起流程前,会自动为业务订单生成唯一的BOUUID,并作为此订单数据的ID进行标识;
3)在启动后台流程过程中会自动把BOUUID传递进去,在人员任务状态变化中激活的EventHandler会自动把此BOUUID放置到 Portal 门户流程单据列表核心数据库表Custom_Task_Work_T中,作为业务数据关联的唯一标识;
4)利用BOUUID,可以在任何处理的阶段快捷地获取业务数据;
5)最终实现流程数据和业务数据的分离,并能在需要的时候进行关联处理。
在WPS中,BPEL流程定义中BOUUID与具体业务库表ID的关系可以用图4来表示。
本文重点介绍了汽车电子采购平台中人工工作流的解决方案,目前该方案已经成功应用于上海汽车的电子采购平台中,所涉及的业务覆盖了所有上海汽车自主品牌轿车相关的采购业务,涉及5000多家国内外供应商,该方案的实施,大大提高了上海汽车的采购效率,从而有效地降低了采购成本,实践证明是一个可行的、满足复杂采购业务的好方案。
在方案的实施过程中,我们也总结出一些人工工作流设计经验,供同行参考:
经验一:基本功能组件化、可变功能脚本化。
在流程设计时,把那些可能变化的因素提取出来,变成可定制的脚本或参数定制文件。
经验二:利用规则引擎,动态定制流程。
业务策略并不是静态的,它们经常变更,且其关联的业务流程也会随之变更。 因此,可以考虑用规则引擎,事件处理器等动态方法进行流程的设计。
经验三:流程模版分类和可定制化。
首先分析企业的流程,然后对企业流程进行分类。对每一类流程建立一个(或多个)流程模版类。然后在这个流程模版类中,对易改变的流程节点用动态方式进行节点的增加和消减。
经验四: 考虑流程体系的可移植性。
在设计一个部门的流程体系时,考虑将来把该系统移植到其他相似部门时的重用问题。方法是尽量多的设置可定制的脚本或参数文件,把流程体系变为可定制的。
[1] 程嵘.基于业务流程再造设计汽车整车厂电子采购管理系统[D].上海交通大学,2008.
[2] 王莉,张颖江.供应链管理下的电子采购系统[J].软件导刊,2009,8(6).