




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PRIMETONTECHNOLOGIES,LTD.上海普元信息技术有限责任公司PrimetonBPS6.5开发教程EOS开发模式Nopartofthisdocumentmaybereproduced,storedinanyelectronicretrievalsystem,ortransmittedinanyformorbyanymeans,mechanical,photocopying,recording,otherwise,withoutthewrittenpermissionofthecopyrightowner.COPYRIGHT2008byPrimetonTechnologies,Ltd.ALLRIGHTSRESERVED.导读本文档的阅读对象为软件设计和开发人员,为了能更好的理解和使用(PrimetonBPSTM,BusinessProcessSuite,简称普元流程平台);您需要了解HTML、Javascript、Java、JSP、SQL等J2EE的基本知识,这将为您能更好的学习本文档起到事半功倍的效果。本文档将通过案例来引导读者运用PrimetonBPSTM产品在PrimetonEOSTM使读者能够很快的运用PrimetonBPSTM平台中进行实际的流程开发,产品开发流程应用。本文档旨在让您学会使用PrimetonBPSTMForEOS业务流程的开发过程、关键要点及常用场景,包括业务流程的定义、开发、调试、运行、部署、监控、业务定制,为了更轻松高效的学习本文档,我们推荐的学习方法请参见附录,同时在学习过程中,您也许随时会用到以下文档:《PrimetonEOS6程序员教程》《PrimetonBPS开发指南》《PrimetonBPS参考手册》《PrimetonBPS管理员手册》以上文档请见产品的联机帮助。导读2目录3第1章BPS6.5概述51.1BPS6.5产品介绍51.2BPS6.5产品组件51.3BPS6.5实现机制71.3.1BPS6.5参考模型71.3.2BPS6.5角色模型81.3.3BPS6.5数据模型101.3.4BPS6.5流程引擎与业务应用部署模式111.4BPS6.5产品安装13第2章案例实现202.1预备知识202.2关键知识点202.3需求分析212.4项目准备222.4.1数据模型设计222.4.2基础框架搭建232.5流程设计建模292.5.1组织机构建模292.5.2业务目录规划312.5.3业务流程建模322.5.4业务资源定义362.6流程实现402.6.1任务列表实现402.6.2流程环节实现412.7部署发布502.7.1发布流程与资源502.7.2发布EOS程序532.8流程运行与监控542.9需求变更582.10流程调整592.10.1业务资源配置592.10.2环节调整612.10.3分支规则调整622.10.4参与者规则调整642.10.5时间限制调整652.10.6发布运行662.11案例分析702.12小结71第3章常用场景指南733.1业务化表单使用733.2结合业务查询分库73第4章附录774.1BPS6.5常用术语774.2源代码运行774.3推荐学习方式794.4进阶学习参考804.5FAQ80第1章BPS6.5概述本章提要您将了解PrimetonBPS6TM产品的定位、产品结构图、相关组件和概念参考模型。以及您如何将普元流程平台和自己的应用集成?如何在EOS开发模式下快速的搭建开发环境?BPS6.5产品介绍普元业务流程平台套件(PrimetonBPSTM:BusinessProcessSuite,简称普元流程平台)是业界第一个完全基于业务化思想实现的SOA流程平台产品,负责对业务流程整个生命周期的管理,包括业务流程的设计建模、测试与调试、部署、运行、监控、管理。PrimetonBPSTM是遵从WfMC参考模型而又具备中国特色特性的流程平台产品。PrimetonBPSTM是具有中国特色的流程平台产品。它融入了国内电子政务与电信等行业的特殊要求,在符合WfMC规范的同时,又提供了灵活的工作任务分派策略、业务流程版本管理策略、丰富的流程模式、灵活的组织模型等特性,使得它能够从容应对复杂的中国特色流程模式和人工流程的处理。PrimetonBPSTM采取了多种方式以保证流程引擎高效稳定的运行,满足大型流程应用建设需求,比如良好的事件驱动式系统架构、优化的BPS数据库、历史数据与运行数据分离、集群高速缓存等等。PrimetonBPSTM业务流程定制选件提供基于WEB的业务化流程设计和调整能力,支持流程建设阶段完全业务化的分析建模,以及流程维护阶段敏捷的业务化流程变更,从而极大提高业务人员参与流程建设的能力,加快流程响应业务变化的速度。BPS6.5产品组件PrimetonBPSTM由以下九部分产品组件组成:BPSProcessServer(BPS流程引擎)、BPSAPI&ComponentLibrary(BPSAPI和构件库)、BPSStudio(BPS流程设计建模工具)、BPSProcessComposer(BPS业务流程定制)、BPSRuleEngine(BPS规则引擎)、BPSRuleComposer(BPS业务规则定制)、BPSGovernor(BPS引擎治理工具)、BPSAdmin&Monitor(BPS流程管理监控台)和BPSWorkClient(BPS流程客户端)。BPS6.5产品结构如图1-1所示。图1-1BPS产品结构图BPSProcessServer(BPS流程引擎)BPSProcessServer(BPS流程引擎)是BPS运行期的核心,为企业流程运转提供驱动力,保证大业务量并发场景下的流程操作的顺利执行。BPSProcessServer共有三个职责:流程调度、任务调度和应用调度。BPSProcessServer支持包含自由流在内的多种复杂的流程模式,能灵活满足中国特色的业务需求;BPSProcessServer支持复杂的代理代办模型,对人工任务的灵活性存在很大的优势;BPSProcessServer同时负责与内部或外部的各种应用以同步或异步方式进行交互,保证引擎处理过程中的事务完整性,促使互联网时代大量业务交互能够顺利进行。BPSRuleEngine(BPS规则引擎)BPSRuleEngine(BPS规则引擎)是一个高性能的业务规则运行环境,它能从业务变量以及系统环境数据中获取必要的数据作为决策数据源,通过复杂计算得出条件判断结果或者参与者集合,然后把结果传递给流程引擎使用。通过把业务规则引擎和流程引擎的配合使用,可以大大提高业务配置化能力,快速支持业务流程和业务策略的变更。BPSAPI&ComponentLibrary(BPSAPI和构件库)BPSAPI&ComponentLibrary(BPSAPI和构件库)提供众多的流程API与EOS服务构件,为流程业务开发提供了极大的便捷性。在实际的应用开发过程中,Java开发模式中一般是通过API调用流程引擎所提供的服务,EOS平台开发模式中一般是通过调用EOS服务构件中的服务来使用流程引擎所提供的服务。BPSAPI和构件库是BPS流程引擎的访问接口,是对引擎功能的完备封装。BPSAPI和构件库包括:流程定义管理接口和服务、实例管理接口和服务、客户端接口和服务、代理代办接口和服务、特殊功能接口和服务以及页面标签库。BPSStudio(BPS流程设计建模工具)BPSStudio(BPS流程设计建模工具)是基于Eclipse插件体系结构实现的可视化流程设计器,它既可以与用户基于Eclipse的Java集成开发环境融合,又能与PrimetonEOSTM的集成开发环境无缝集成,提供一体化的流畅的开发体验。BPSGovernor(BPS引擎治理工具)BPSGovernor(BPS引擎治理工具)是集成BPS提供的系统管理工具,系统管理员可以通过它对BPS流程引擎进行配置和管理。BPSProcessComposer(BPS业务流程定制)BPSProcessComposer(BPS业务流程定制)是在PrimetonBPSTM流程引擎之上实现的基于Web的业务化流程定制工具,它支持业务部门的流程管理人员基于Web的方式进行流程的业务化配置与调整,为业务人员提供完全的业务域支撑能力,敏捷响应业务流程的变更。BPSRuleComposer(BPS业务规则定制)BPSRuleComposer(BPS业务规则定制)是在PrimetonBPSTM流程引擎和PrimetonBPSTM规则引擎之上实现的基于Web的业务化规则定制工具,通过该组件,业务管理人员可以在系统维护期间维护业务规则,使业务策略的变更及时体现到IT系统当中。业务规则定制过程中可以引用业务变量、流程上下文数据、活动上下文数据等,以"类自然语言"的方式进行灵活的配置,并可以进行各种复杂的运算。BPSAdmin&Monitor(BPS流程管理监控台)BPSAdmin&Monitor(BPS流程管理监控台)是业务流程管控人员的流程操作平台。通过它,业务流程管控人员不但可以对流程实例实施挂起、恢复、回退等操作,还可以进行代理代办交接等管理动作,甚至可以查询业务审计日志,对业务操作人员的流程动作进行监控。BPSWorkClient(BPS流程客户端)BPSWorkClient(BPS流程客户端)是一个客户端的典型案例,它为流程的开发、调试和验证提供极大的便捷性。通过BPS流程客户端,业务人员和开发人员不但可以执行启动流程、查看任务、完成任务等基本操作,还可以进行包括代理、代办、领取等复杂操作。BPS流程客户端主要用来进行流程的模拟调试,验证流程的可行性和正确性。在业务运行阶段,应用一般需要构造满足自己特殊需要的客户端。BPS6.5实现机制1.1.2BPS6.5参考模型1993年,国际工作流管理联盟WfMC(WorkflowManagementCoalition)的成立标志着工作流技术开始进入相对成熟的阶段。WfMC在工作流管理系统的相关术语、体系结构及应用编程接口等方面制定了一系列标准,提出了工作流参考模型。工作流参考模型确定了工作流管理系统的基本架构。该架构是开发工作流软件时应当采纳的系统模型,当然,一个工作流管理系统也可以不遵循这个模型标准,或只实现这个模型的一部分,但事实证明,这个模型结构是目前最为合理的。PrimetonBPSTM的参考体系架构在WfMC描述的体系架构基础上进行了加强和改进,如图1-2所示。图1-1流程参考模型(WfMCExtended)在开发期,开发人员主要通过集成BPSStudio的流程定义工具来定义流程。由于流程定义工具需要依赖组织模型和外部相关应用,所以在流程开发以前需要首先实现组织模型接口,构造被调用的应用(Java方法、EOS服务等)。如果开发者暂时不确定组织模型,也可以先使用产品内置的简单组织模型。在运行期,流程引擎是所有依赖的中心。BPS流程引擎包含流程调度引擎和任务表管理器两大部分。流程引擎主要完成这些工作:通过从组织模型获取到适当的参与者来调度人为参与的人工活动;通过调用外部应用来实现运转的自动活动;通过访问流程相关数据进行必要的路由判断;通过流程控制数据来记录流程运行的轨迹;通过访问日历接口来进行恰当的时限设置。流程调度引擎和任务表管理器之间通过任务表作为联系纽带,通过任务表的状态变迁来进行相互的驱动。1.1.3BPS6.5角色模型BPS应用环境中一共包含九种角色,分别是:业务分析人员职责描述:进行组织流程框架的规划和业务流程的梳理、流程的业务建模、流程分析。基本技能要求:精通某一领域业务知识和流程需求;熟悉业务流程梳理概念与方法。产品针对特性:提供流程梳理后的建模与模拟运行功能。业务流程配置员职责描述:进行业务流程的流程定制、流程调整、流程测试与验证、流程发布、流程监控、流程统计分析、流程优化。基本技能要求:熟悉业务需求,了解业务流程基本概念,了解业务流程实现过程。产品针对特性:流程建模功能、程测试验证功能、流程统计分析功能、流程调整功能。流程实施人员职责描述:主要是指开发商的流程实施人员,基本同流程配置员。基本技能要求:基本同流程配置员。产品针对特性:基本同流程配置员。流程开发人员职责描述:在流程开发人员的工作过程中,除了开发流程本身(定义流程、活动等)之外,还要开发流程相关的资源。比如,相关的任务列表、环节展现界面的开发、活动处理逻辑、组织模型接口的定制等。基本技能要求:精通相关服务构件开发所需技能,如JEE开发技能、EOS构件开发技能等,熟悉业务流程基本概念和实现过程。产品针对特性:BPSStudio、业务资源管理、业务流程定制、流程测试验证、流程管理监控。业务操作员职责描述:一般是通过和任务表的交互来进行工作的,他们通过工作流客户端进行流程的发起、获取到任务列表,然后处理具体的任务。基本技能要求:精通某领域业务,了解业务流程基本概念。产品针对特性:流程客户端、流程监控功能。业务管理员职责描述:对流程进行监控和管理,包括监控和跟踪流程和任务的状态,对异常流程进行维护等,还可能进行一些代理代办或工作交接的工作。基本技能要求:熟悉流程监控和管理的流程与方法,了解业务流程概念。产品针对特性:流程管理监控。系统管理员职责描述:进行系统配置、业务目录管理、权限设置等。基本技能要求:熟悉领域技术相关知识。产品针对特性:业务目录管理、引擎配置管理。应用维护人员职责描述:进行应用系统的软件升级、缺陷修复、流程所使用资源的管理等。基本技能要求:熟悉系统维护与升级相关知识,了解业务化流程定制过程与方法。产品针对特性:流程管理监控、业务资源管理。超级系统管理员职责描述:进行统一流程平台的配置,包括受管引擎实例的配置等。产品针对特性:受管引擎实例配置。1.1.4BPS6.5数据模型基于BPS6.5开发的应用包含以下数据:业务流程定义数据、流程控制数据、流程相关数据、任务表数据、组织模型数据、流程日历数据和流程应用数据。部分数据的概念如图1-3所示。图1-1流程数据模型业务流程定义数据业务流程定义数据定义了流程的拓扑结构、流程所包含的活动、流程的相关数据定义以及流程使用的资源等流程规格特性。BPS6.5把业务流程定义数据存储在文件系统(开发时)或关系数据库(运行时)中。流程控制数据流程实例运行期间进行实例化所产生的数据,由于流程实例经常存在于一个相对较长的生命周期中,一般为一天到几个月,所以工作流控制数据需要持久化存储。BPS6.5把流程的控制数据存储在关系数据库中。流程相关数据工作流相关数据是在流程运转过程中和控制流程运转条件相关的数据,相关数据也可以用来保存在不同活动之间传递的信息。在BPS6.5中,相关数据以结构化的形式存储在关系数据库中。任务表数据任务表是流程引擎和参与者(机构、角色、人员等)交互的一个媒介。人员通过任务表来获取自己的任务并执行。在BPS6.5中,任务表数据存储在关系数据库中。组织模型数据组织模型是工作流系统依赖的一个重要的资源模型,是人工活动执行所需要的必备条件。考虑到组织模型在不同的企业和单位差异性非常大,BPS6.5提供了接口来限定组织模型,并不提供具体的组织模型数据。通过实现组织模型接口,用户可以使用多种存储形式的遗留系统数据。流程日历数据工作日历是人工任务的时间相关的一个重要概念。考虑到不同企业和单位的差异性也比较大,BPS6.5也提供了接口来限定工作日历,并不保存具体的数据。流程应用数据流程应用数据是所有应用数据中和工作流相关的那一部分数据,一般用来保存流程实例在业务方面的属性。流程应用数据一般不在工作流引擎的管理范围之内,但是在BPS6.5中,用户可以在任务表和应用数据之间建立关联,从而达到引擎和业务的更好的交互。1.1.5BPS6.5流程引擎与业务应用部署模式BPS6.5ProcessServer主要支持三种典型的与业务应用的部署方式:独立部署模式--BPS服务器与应用功能分开部署集中部署模式--BPS服务器与用户应用集中部署与EOS集中模式--BPS服务器与EOS应用逻辑集中部署这三种部署方式中,前两者适合与BPS6.5ForJava的环境,最后一种适合于BPS6.2ForEOS的环境。独立部署模式指BPS6.5产品模块与用户业务应用部署在相互独立的应用服务器下,通过远程调用来访问BPS6.5引擎和BPS6.5资源,如图1-4所示。图1-1独立流程服务器应用集成集中部署模式指BPS6.5产品模块与用户业务应用耦合在一起,以用户应用为载体(称为嵌入部署模式)或以BPS引擎所在应用为载体部署在应用服务器上,如图1-5所示。开发方式采用BPS6.5Studio和Eclipse插件集成开发。图1-2嵌入式应用集成与EOS集中部署指BPS6.5产品作为EOS应用可选组件部署在EOS应用中,如图1-6所示。开发方式采用EOS环境中集成的BPS6.5开发环境,用户可以很方便的编辑流程,以及利用EOS一体化开发平台。图1-3EOS应用集成BPS6.5产品安装开发环境搭建可参见Flash演示动画,观看时,请确保Flash存放在非中文目录中。BPS其他版本的安装请参见《PrimetonBPS6.5产品安装指南》。BPSStudio(BPS流程设计建模工具)是基于Eclipse插件体系结构实现的可视化流程设计器,提供可视化的业务流程定义、可视化表单开发与调试、以及业务流程部署等功能。BPSStudio既可以与基于Eclipse的Java集成开发环境融合,又能与PrimetonEOSTM的集成开发环境无缝集成,本教程介绍第二种集成方式,即安装PrimetonPlatform6.5开发版时选择BPS选件。PrimetonPlatform6.5开发版安装1.启动安装程序将安装光盘插入CD-ROM中,在autorun界面中选择安装Primeton6.5开发版。若不是通过autorun形式启动安装程序,请直接执行安装程序文件install.exe。2.阅读安装简介,如图1-7所示,单击【下一步】按钮。图1-4简介3.阅读开发版的许可声明后,选择“本人接受许可协议条款”单选按钮,如Error!Referencesourcenotfound.所示,单击【下一步】按钮。图1-5许可协议4.单击【下一步】按钮,从弹出的对话框中选择安装目录,如图1-9所示。设置完毕,单击【下一步】按钮。图1-6选择安装路径安装路径最多可输入64个字符,只能由半角英文字符、数字或下划线“_”组成,且不允许带空格。如果所选的安装目录已经安装过BPS产品,则安装程序将提示用户选择其他目录。5.选择应用服务器,在下拉列表框中选择应用服务器,BPS开发版缺省提供Tomcat-5.5.20服务器,如图1-10所示,单击【下一步】按钮。图1-7选择应用服务器6.选择安装组件,如图1-11所示,单击【下一步】按钮。图1-8选择安装组件7.设置管理员信息,根据实际情况输入用户名称和机构名称,安装程序默认用户名称为当前登录操作系统的用户名,如图1-12所示,单击【下一步】按钮。图1-9设置管理员信息8.选择IP和管理端口,在下拉列表框中选择本机IP,如图1-13所示,单击【下一步】按钮。图1-10选择IP9.创建应用,应用名默认为default”,如图1-14所示,单击【下一步】按钮。图1-11创建应用10.配置数据库。(1)在下拉列表框中选择数据库类型,如“Oracle”。(2)输入数据库的相关配置信息。配置Oracle类型数据库的界面,如图1-15所示。图1-12配置Oracle9类型数据库(3)如果初次安装BPS且是初次使用某个数据库用户,建议选择初始化数据库,将BPS所需表结构建立起来。对于已执行过初始化的数据库,再次初始化将覆盖已经存在的BPS系统表。选择是否“初始化数据库”(4)单击【数据库连接测试】按钮,测试所配置数据库是否可以成功连接。(5)单击【下一步】按钮。11.开始安装,安装过程中显示各组件的安装进程,如图1-16所示。图1-13正在安装12.程序提示开发版已经成功安装,如图1-17所示。选择“现在查看readme.txt文件。”复选框,可以查看readme文件内容。图1-14安装完成13.单击【完成】按钮,完成BPS开发版的安装。14.验证安装(1)将在开始程序菜单出现如下菜单,如图1-18所示。图1-15快捷菜单(2)检查安装日志。打开BPS安装目录下的platform_install.log安装日志文件,检查安装过程是否有异常信息。(3)通过“开始程序PrimetonPlatform6.5启动Server”启动BPSServer,查看控制台是否有异常。http侦听默认占用8080端口,此端口容易冲突,冲突导致服务无法启动成功。修改Tomcat中的端口:打开安装目录\apache_tomcat-5.5.20\conf目录下的server.xml,修改其中的8080端口。第2章案例实现本章提要您将从一个具体的案例开发中了解如何在EOS应用中开发BPS流程,如何在流程中调用WebService服务,如何调用BPS构件库,触发流程引擎一步一步运行;如何在Web界面上定制或调整业务流程,实现敏捷响应流程的需求变化。预备知识建议具备EOS6.0及以上版本的基础开发技能。关键知识点本章通过开发简单的报销流程,帮助您了解EOS应用中BPS流程的开发过程和流程中调用外部WebService的实现方法;通过调整报销流程,帮助您了解在Web界面上灵活调整、敏捷定制业务流程的方法;通过对案例的分析,帮助您更深刻地理解EOS应用与BPS的结合原理,功能技术实现与业务流程解耦的开发方式。关键知识点:流程的设计开发过程外部WebService的调用BPS关键构件的使用流程引擎的运行原理业务流程的定制案例开发过程总览本章案例是基于从“技术实现”到后期运维阶段的“业务调整”的过程进行流程应用开发,案例的开发过程如图2-1所示。图2-1案例开发过程图整个过程不一定要严格按顺序进行,很多情况下是交互或迭代进行的。需求分析在某公司,员工每月的通讯费、车补费、出差车旅费、出差补贴等都需要填写报销单后,交给部门主管审批。如果部门主管审批不通过,员工就不能报销;如果审批通过,就交给财务审阅。财务审阅确认后,调用已有的入账服务,将报销信息归档,员工才会收到报销的费用。由于公司员工比较多,报销种类也多,各部门主管和财务部门每天都会收到很多纸质报销单进行审批或审阅,对员工来说,无法直接了解自己报销单的情况,需要跟主管或财务人员沟通。基于这种情况,公司急需建立一套报销流程,进行无纸化办公,提高报销效率,减轻部门主管和财务部门的工作量。了解了这些需求后,我们发现部门主管审批是否通过是员工能否报销的关键,考虑到报销中还会存在一些特殊情况,如报销费用太大或非预算项目内的报销,决定将报销费用和是否是预算项目这两个因素设计在报销流程中,方便以后报销流程的优化或调整。整个报销流程的分析结果如下:需求分析:1.为公司的财务部门实现无纸化报销流程2.报销流程包含的活动:填写报销单,部门主管审批,财务审阅,报销信息入账3.报销要做的工作:填写报销单,保存报销单,部门主管审批,保存部门主管的审批意见,财务审阅,保存审阅人信息,报销信息入账4.报销信息入账是直接调用公司已经存在的WebService服务,不用重复实现5.报销流程涉及的人员:员工,部门主管,财务6.影响报销的因素:部门主管审批结果、报销金额、是否是预算内项目需求设计:根据需求分析可以得到如图2-2所示的流程图。图2-2流程设计图项目准备对本章案例提供了源代码、对应的数据库脚本。导入源代码及部署、运行的方法可参见4.4源代码运行一节,或者可参见教程配套的Flash演示动画,观看时,请确保Flash存放在非中文目录中。2.1.2数据模型设计1.创建业务表根据报销流程的需求描述,创建报销单信息表Expenseinfo、报销审批信息表Expensecheck。其中Expenseinfo存放员工填写的报销单信息、财务审阅人;Expensecheck存放审批人信息;入账信息是调用外部的入账服务,所以在调用方不需要创建表。具体的建表脚本如下:--CreatetabledroptableEXPENSEINFO;createtableEXPENSEINFO(EXPIDNUMERIC(18)notnull,PROCESSINSTIDNUMERIC(18)notnull,EXPNAMEVARCHAR(20)notnull,EXPMONEYNUMBERnotnull,REASONVARCHAR(255),ISBUDGETITEMCHAR(1),AUDITORVARCHAR(20));altertableEXPENSEINFOaddconstraintP_EXPprimarykey(EXPID);--AddcommentstothecolumnscommentoncolumnEXPENSEINFO.EXPIDis'报销单编号';commentoncolumnEXPENSEINFO.PROCESSINSTIDis'流程实例ID';commentoncolumnEXPENSEINFO.EXPNAMEis'报销人';commentoncolumnEXPENSEINFO.EXPMONEYis'报销金额';commentoncolumnEXPENSEINFO.REASONis'报销原因';commentoncolumnEXPENSEINFO.ISBUDGETITEMis'是否预算内项目';commentoncolumnEXPENSEINFO.AUDITORis'财务审阅人';--CreatetabledroptableEXPENSECHECK;createtableEXPENSECHECK(EXPIDNUMERIC(18),CHECKERVARCHAR2(20),ISAGREECHAR(1),ADVICEVARCHAR(255));--AddcommentstothecolumnscommentoncolumnEXPENSECHECK.EXPIDis'报销单编号';commentoncolumnEXPENSECHECK.CHECKERis'审批人';commentoncolumnEXPENSECHECK.ISAGREEis'审批结果';commentoncolumnEXPENSECHECK.ADVICEis'审批意见';建表脚本适用于oralce9i、oralce10g。每次报销对应一个流程实例,所以在报销单ExpenseInfo表中需要一个字段存放流程实例ID,如PROCESSINSTID。2.1.3基础框架搭建1.创建项目点击EOSStudio工具条上的【文件新建EOS项目】启动项目创建向导,在弹出的对话框中选择“空项目”,点击【下一步】,填写项目详细信息,如图2-3所示,创建名称为BPSDemo的项目。图2-1创建项目点击【下一步】,显示项目的引用库信息。默认情况下EOS项目引用基础构件库和BPS基础构件库。点击【完成】,在“资源管理器”视图中显示出BPSDemo项目。2.创建构件包右键单击资源管理器中项目BPSDemo,在菜单中通过选择【创建构件包】,弹出创建构件包对话框,输入构件包名称为“com.primeton.bps.sample”,点击【完成】后,“资源管理器”中BPSDemo项目如图2-4所示。图2-2项目及构件包3.数据建模在EOS应用开发中采用数据定义的方式来描述数据结构。一个数据定义由数据实体和显示模型组成,一组数据定义组成了一个数据集。本案例中涉及到的报销单信息表Expenseinfo、报销审批信息表Expensecheck就需要导入成EOS应用中的数据实体,从而描述数据结构的名称和类型信息。(1)创建数据库表在数据库中、或利用数据库第三方工具运行2.4.1数据模型设计章节中的数据库脚本创建数据表。另外,也可以借助EOS中内置的SQL编辑器来运行后缀名为sql的文件,如图2-5所示。图2-3创建数据库表(2)创建数据集并导入数据实体展开com.primeton.bps.sample构件包中的【数据数据模型】,在com.primeton.bps.sample包中创建名称为expdataset的数据集。在数据集的空白处,点击右键,在弹出的菜单中选择【导入数据实体】,将Expenseinfo表、Expensecheck表导入到该数据集中,导入时如图2-6所示。图2-4导入数据实体(3)设置显示属性针对数据实体中各属性的类型或特点,可以设置它们的显示属性或者校验类型等。比如:报销单信息表Expenseinfo中主键expid,流程实例IDprocessinstid,报销人expname以及报销金额expmoney不允许为空,可以对数据实体中这些属性设置校验类型。打开expname的高级属性对话框,设置校验类型为必填项,如图2-7所示。同样的方式,设置expmoney的验证类型为实数且为必填项。设置Expenseinfo中的reason及Expensecheck中的advice的录入方式为“textarea”。图2-5设置显示属性4.导入外部WebService的WSDL外部WebService部署在开发版自带的Tomcat服务器中,具体部署方法参见4.4源代码运行一节。(1)访问发布的外部WebService报销信息入账是调用公司已经存在的入账服务,本案例模拟实现了一个服务AccountService。首先要将其部署在应用服务器中,再启动服务器,在浏览器中访问该服务。根据应用服务器所在IP地址、端口号、应用的端口号以及服务名称拼装成服务的访问地址::8080/mydomain/services/AccountService?wsdl。如图2-8所示,在浏览器中可以显示AccountService服务的WSDL描述,说明这个WebService服务已经发布成功。BPS6.2调用WebService支持的WSDL规格:portType:WSDL中可以定义单portType和多portType;binding:WSDL中可以定义单binding和多binding;service:WSDL中可以定义单service和多service;port:WSDL的service结点下可以定义单port和多port;part:WSDL的Message结点下可以定义单part和多part来表示数据;SOAP:在数据传输时,支持soap规范1.1,soap规范1.2;wsdl:WSDL的定义格式支持规范1.1。图2-6访问发布的外部WebService本案例模拟的这个服务暴露的接口是saveAccount方法,输入参数是ExpInfo类型的服务数据对象,返回值是字符串数组类型的变量。调用时需要特定的用户名和密码作为消息头,传入报销单信息(封装为ExpInfo类型),返回值是消息头中的用户名和密码信息。(2)导入发布成功的WebService展开com.primeton.bps.sample构件包中的【服务接口定义】,右键选中下面的com.primeton.bps.sample包,在菜单中选择【导入】,在弹出的对话框中选择【EOS导入WSDL】,点击【下一步】,在“WSDL地址”中输入服务的访问地址“:8080/mydomain/services/AccountService?wsdl”,如图2-9所示。图2-7导入WSDL点击【完成】,提示“导入已经成功完成”,在项目的构件包中“服务”模块显示如图2-10所示。图2-8服务导入结构流程设计建模2.1.4组织机构建模报销流程在运行过程中,要由员工完成填写报销单,由部门主管完成审批,由财务完成审阅。那么这些人员可以是具体的某个人,也可以是某个部门中的一个人,也可以是某个岗位或者拥有某个角色的一个人。那么如何让流程能够识别人员或者人员所在的组织机构呢?BPS自带了一个组织机构,可以方便用户快速设置流程中各个活动的参与者。本案例就使用该缺省的组织机构。其组织机构模型如图2-11所示。图2-1BPS缺省的组织机构模型BPS支持的组织机构:缺省的组织机构模型在[BPS安装目录]\apache-tomcat-5.5.20\webapps\default\WEB-INF\_srv\work\system\com.primeton.workflow.core\META-INF\OMServiceModel.xml中定义。自定义的组织机构必须实现BPS提供的一套组织机构接口,请参考产品帮助文档中“BPS帮助文档开发参考BPS典型场景开发指南”中“结合自定义组织机构的使用场景”章节。通过“开始程序PrimetonPlatform6.5PlatformStudio”启动EOS集成开发环境,默认进入到EOS开发透视图。如图2-12所示,启动EOSServer。图2-2启动BPSServerEOSServer启动成功后,在EOSStudio右边的“组织模型”视图中,点击“”按钮刷新组织模型,如图2-13所示。图2-3刷新组织模型刷新后,将默认的组织机构数据更新到视图中,如图2-11所示。刷新“组织模型”时,EOSServer必须处于正常运行状态。2.1.5业务目录规划公司存在各种各样的业务,财务部门的报销流程肯定不同于HR部门的请假流程,为了更清晰地区分各个特定的业务,方便管理,就需要对业务进行分类管理,也就是规划公司的业务目录。业务目录也可以分多级进行组织,即每个业务目录还可以包括多个下级业务目录。在项目资源管理器中,双击BPSDemo项目下面的“业务资源”,打开业务资源编辑器。在业务资源编辑器中选中“领域业务目录”,点击“”增加业务目录,默认产生的名称为“业务目录1”。修改其名称及描述为“A公司”,保存后如图2-14所示。图2-1增加业务目录选中“A公司”,再添加一个“财务”业务目录,用于放置所有跟财务相关的流程、业务属性。最终业务目录设置如图2-15所示。图2-2最终业务目录2.1.6业务流程建模1.创建流程在业务资源编辑器中,选中“财务”业务目录,为其添加一个流程。如图2-16所示。图2-1添加流程在弹出的“创建BPS流程向导”对话框中,选择构件包:com.primeton.bps.sample,输入文件名称:exp,显示名称:报销流程,如图2-17所示。点击【完成】即创建了exp.workflowx,在中间的流程编辑器中自动创建开始和结束图元。图2-2创建报销流程2.设计流程根据报销流程的业务规则和需求设计,在流程编辑器中,用【选用板】上的“人工活动”表示需要人工参与的活动,用“WebService活动”表示调用外部服务的活动,并用“连接线”按照流程的业务规则依次连接各活动,设置为业务化的名称,拖拽“注释”增加注释信息。完成后的流程如图2-18所示。图2-3定义报销流程3.设置流程属性双击流程编辑器的空白处,弹出“BPS流程属性设置”对话框,用来设置一些和整个流程有关的属性。点击“相关数据”选项卡,这里是通过设置与业务流程相关的数据来确定流程实例状态转移条件。在本案例中,部门主管审批后,要根据他的审批结果决定流程的分支,那么就需要将部门主管的审批结果存放在相关数据区中,这里用变量isagree来表示;另一方面,在需求分析中梳理出来的另外两个关键因素:报销费用expmoney和是否是预算项目isbudgetitem也设置在相关数据区中。对入账是调用外部的WebService服务,该服务暴露的接口saveAccount的输入参数是ExpInfo类型的对象,返回值是字符串数组,分别定义变量wsdl_exp和returnUser与输入参数和返回值一一对应。详细设置如图2-19所示。图2-4设置报销流程的相关数据4.设置活动属性(1)人工活动:填写报销单双击“填写报销单”,弹出“人工活动属性设置”对话框。点击“参与者”选项卡,默认是流程启动者,意味着谁填写报销单,谁就启动报销流程,符合业务规则,不用修改。(2)人工活动:审批双击“审批”,在弹出的“人工活动属性设置”对话框中点击“参与者”选项卡,设置该活动的参与者“从参与者列表获得”,点击“”选择参与者,如图2-20所示。图2-5选择参与者点击【确定】后,设置如图2-21所示。图2-6设置部门主管审批的参与者(3)人工活动:财务审阅双击“财务审阅”,在弹出的“人工活动属性设置”对话框中,点击“参与者”选项卡,同样设置该活动的参与者“从参与者列表获得”,并从组织机构树中选择Rolec下面的Snoppy。如图2-22所示。图2-7设置财务审阅的参与者2.1.7业务资源定义业务资源是BPS为了支持流程的业务化定制而将业务流程中所使用到的要素的业务化包装,使得业务人员无需理解该要素的技术细节,而只需要关注其业务属性并使用。在本案例中,填写报销单,主管审批,财务审阅,报销单信息入账,以及流程运转的判断因素都是报销流程中的要素,对业务人员而言,不需要关注程序如何实现,只需要根据流程要素的业务员化名称或描述,进行选择和使用。人工任务打开报销流程exp.workflowx,按住Ctrl键,鼠标同时选中“填写报销单”、“审批”和“财务审阅”,点击鼠标右键,在弹出菜单中选择“生成业务资源定义”,如图2-23所示。图2-1生成人工任务的业务资源定义点击后,弹出“批量生产业务资源”对话框,如图2-24所示。图2-2批量生成业务资源点击【确定】按钮,弹出提示创建成功对话框,将选中的人工活动都对应生成了业务资源中的人工任务。双击打开“填写报销单”的属性设置对话框,可以看到刚才创建的业务资源已经自动与当前活动关联,如图2-25所示。其它几个人工活动类似。图2-3“填写报销单”人工任务设置业务手段:为了支持业务部门的流程配置员(或称为业务人员)进行业务化定制与调整,以他们可以理解的方式进行配置的方式就称为“业务手段”。技术手段:在设置流程属性时,有些需要技术开发人员通过灵活的扩展性实现一些通过业务手段无法实现的功能,这种方式就称为“技术手段”。业务变量业务变量是一些规则参数或业务化的变量,在报销流程中审批结果、报销金额和是否是预算内项目是报销的关键,在图2-19中,已设置成整个流程的相关数据,但这里的定义是针对技术开发人员的,我们仍然需要将它们业务化,让业务人员更容易理解。在图2-19中,有“业务变量”Tab页,这里定义的业务变量仅能用于当前流程。同一类业务有可能有相同业务含义的规则参数,比如在财务管理中,除了有报销流程,还存在申请备用金流程、借款流程等,都会涉及到审批结果、金额这些参数,为了方便同一类业务中可以复用相同或类似的变量,需要将它们定义在业务资源中。而入账服务需要的报销单信息及返回值是只针对外部服务,而且业务人员也不需要关注这部分的调用实现,所以这两个变量就不需要定义成业务资源。在exp.workflowx中,双击“通过”连接线,在“连接线属性设置”对话框中设置主管审批通过的条件:取消选中“默认连线”前的复选框,在“简单表达式”中,“左值类型”选择“业务变量”,鼠标点击“左值”下的按钮,弹出选择业务变量的对话框,点击【新增】按钮,可以创建一个业务变量。通过【浏览】选择“财务”业务目录,增加“审批结果”业务变量,如图2-26所示。图2-1增加“审批结果”业务变量点击【确定】,在“右值”下面输入“Y”,最终设置如图2-27所示。图2-2“通过”连接线属性设置对报销金额、是否是项目内预算这两个规则参数,需要直接在业务资源中定义。双击BPSDemo项目下面的“业务资源”,打开业务资源编辑器,可以看到在流程定义中直接定义的人工任务和业务变量。选中“财务”,点击“添加业务资源”的按钮,依次增加两个业务变量:名称分别为报销金额、预算内项目,XPATH需要与流程中定义的相关数据的xpath一致,分别为expmoney、isbudgetitem,如图2-28所示。图2-3报销流程的业务资源流程实现流程设计建模中完成了报销流程的建模,包括环节(填写报销单、审批、审阅、入账等)、执行的序列、流程中包含的规则和环节的参与者等的梳理。接下来进行技术细节的实现,从“业务建模”到“技术实现”。报销是由多种角色的人协作完成,不同的人有不同的工作职责,员工登录报销系统后,填写并提交报销单,部门主管和财务人员登录后,要审核或审阅报销单,等等。要想进行各自的工作,首先就要列出他们需要完成的所有工作,或者提供给他们查看任务列表的功能。接着,从待办任务列表中选择一个任务执行,这时对部门主管来说,就是执行报销单的审批;对财务人员来说,就是进行报销单的审阅,这也就对应上了业务资源中人工任务具体的实现部分。所以,整个报销流程的实现分为任务列表的实现和流程环节的实现。2.1.8任务列表实现本案例中用户的登录、查看任务列表的功能直接借助默认的BPS客户端来实现,不再另外实现。BPS客户端以Web界面的方式,提供了启动流程、查看工作项、领取/执行工作项、代理设置等功能。登录BPS客户端默认支持的登录用户是“组织模型”视图中刷新的子参与者,如图2-11所示。其中登录用户的用户名是图中每个用户的id值,密码统一为000000。待办已办任务用户成功登录BPS客户端后,默认分页显示当前登录用户需要执行的待处理(包括自己、代理、代办及协办的任务)的工作任务,并提供了查询功能。如图2-29所示。图2-1待办任务列表在任务列表中,点击任务对应的【执行】,会显示出该任务对应的执行页面;点击【查看】可以显示出当前流程的运行图。点击第二个Tab页【已处理任务】,同样以分页的形式显示出当前登录用户已处理的任务。2.1.9流程环节实现在待办任务列表中点击【执行】时,BPS客户端会先链接到客户端内部的操作,将当前活动对应的相关信息,比如所在的流程实例ID、当前活动ID、当前活动产生的工作项ID、参与者等信息封装在类型为com.eos.workflow.data.WFWorkItem的workitem变量中,再传入到当前活动所配置的实现入口URL的请求上下文中。在设置相关数据和结束工作项等功能中都需要用到workitem对象中包含的信息。填写报销单“填写报销单”需要完成以下操作:填写报销单信息,将信息保存到数据库中,将报销金额、是否预算内项目、入账服务需要的报销单信息对象设置到流程的相关数据区中,结束当前工作。1.设计填写报销单页面流用页面流将“填写报销单”活动的整个过程描述下来。展开com.primeton.bps.sample构件包中的【展现页面流】,右键选中下面的com.primeton.bps.sample包,在弹出的菜单中选择【创建页面流】,创建名称为“expMsg”的页面流。在编辑器中设计如图2-30所示。图2-1“填写报销单”页面流2.设计填写报销单页面在构件包的【展现页面资源】下面创建“create.jsp”,用来完成用户填写报销单的功能。在该页面中主要利用组合控件中“DataForm”来生成Expenseinfo实体中报销人expname、报销金额expmoney、是否预算内项目isbudegtitem及报销原因reason的录入代码。在报销单提交后,需要将流程实例ID设置到报销单信息中才能完整保存信息,根据流程实例ID才能将所需数据设置到相关数据区,而且要获取到当前活动产生的工作项ID才能结束当前工作,这样BPS引擎才能触发下一个活动。这里需要的流程实例ID和工作项ID已存放在执行“expMsg.flowx”的第一个请求上下文中workitem对象中,由于没有将其设置在页面流级别变量中,所以为了在后面的逻辑流中获取其中的数据,就需要借助页面的隐藏域来保存这两个ID的值。对报销人来说,就是登录BPS客户端的用户,可以从会话上下文中获取登录用户的名称及ID。页面的关键代码如下:<!--获取工作项ID及流程实例ID,并设置在expenseinfo对象的属性中--><h:hiddenname="expenseinfo/workItemID"property="workitem/workItemID"/><h:hiddenname="expenseinfo/processinstid"property="workitem/processInstID"/><!--页面上显示报销人名称--><b:writeproperty="userObject/userName"scope="session"/><!--隐藏报销人的ID--><h:hiddenname="expenseinfo/expname"property="userObject/userId"scope="session"/>workitem:workitem是com.eos.workflow.data.WFWorkItem类型,可以从构件库视图中【com.eos.workflow数据实体WFWorkItem】中查看到该实体的各个属性及类型。如果要查看各属性的中文描述,请参考“BPS帮助文档开发参考附录BPS实体与状态数据实体对象参考工作项(WFWorkItem)”章节。将“creat.jsp”关联到页面流中“填写报销单”的视图图元中。并在“save”连线上设置类型为“com.primeton.bps.sample.expdataset.Expenseinfo”的expenseinfo变量来绑定页面上的报销单信息。3.设计保存报销单逻辑流右键构件包的【构件】下面com.primeton.bps.sample包,创建名称为“exp”的逻辑构件,再在该逻辑构件下面创建名称为“saveExp”的逻辑流,接收从页面上提交到页面流中的报销单信息,完成:保存报销单,将报销金额、是否是预算内项目、入账服务需要的报销单信息设置到相关数据区中,结束当前工作。在空白处设置逻辑流的输入参数及入账服务需要的报销信息对象,如图2-31所示。图2-2“填写报销单”逻辑流属性整个逻辑流设计如图2-32所示。图2-3“填写报销单”逻辑流图中设置数据到相关数据调用的是构件库中【com.eos.workflow构件服务RelativeDataManagerServicesetRelativeData】方法,该方法是根据流程实例ID,将对象值放到相关数据区中指定的xpath下。以“设置金额到相关数据”为例,流程实例ID和报销金额可以从输入参数中获取,在图2-19中已设置了在流程中报销金额的xpath是“expmoney”,所以其参数设置如图2-33所示。图2-4“设置金额到相关数据”属性设置图中“结束工作项”调用的是构件库中【com.eos.workflow构件服务WorkItemManagerServicefinishWorkItem】方法,该方法是根据工作项ID完成工作项。“结束工作项”的参数设置如图2-34所示。图2-5“结束工作项”属性设置4.完善填写报销单页面流将“saveEx”关联到页面流中“保存报销单”的逻辑流图元中,并将“save”连线上设置的变量作为参数传入逻辑流内部。“结束”图元可以关联一个成功页面,在本案例中,直接调用BPS基础构件库中存在的页面,如图2-35所示。图2-6页面流中“结束”属性设置5.设置人工任务“填写报销单”的实现入口双击BPSDemo项目下面的“业务资源”,打开业务资源编辑器,依次展开业务领域目录,点击“填写报销单”人工任务,在右边设置其类型为“页面流”,点击【浏览】,在弹出的对话框中选择“expMsg.flowx”作为其实现,设置如图2-36所示。图2-7“填写报销单”人工任务属性设置部门主管审批“部门主管审批”需要完成以下操作:根据流程实例ID查询报销单,审批报销单,将审批信息保存到数据库中,将审批结果设置到流程的相关数据区中,结束当前工作。1.设计部门主管审批页面流用页面流将“部门主管审批”活动的整个过程描述下来。在【展现页面流com.primeton.bps.sample】下面创建名称为“auditMsg”的页面流。在编辑器中设计如图2-37所示。图2-1“部门主管审批”页面流2.设计查询报销单的逻辑流利用赋值图元从请求上下文中workitem变量中获取流程实例ID:workitem/processInstID,则查询报销单就是根据获取到的流程实例ID查询报销单。在“exp”逻辑构件下面创建“getExp”逻辑流,用来接收从页面流中传入的流程实例ID,将查询出来的报销单信息返回给页面流。设计好后与页面流中“查询报销单”的逻辑流图元进行关联,将赋值图元中得到的流程实例ID作为输入参数传入,将返回值设置在一个变量中,以便后面的页面从中获取信息。3.设计部门主管审批页面在构件包的【展现页面资源】下面创建“audit.jsp”,用来完成部门主管审批报销单的功能。该页面分为两部分,上部可以利用“RecordView”来显示查询出来的报销单信息,下部利用“DataForm”生成审批人信息Expensecheck实体中报销意见advice的录入代码,而审批结果isagree在本案例中利用【同意】、【不同意】按钮来动态设置。在报销流程中,“审批”后有两个后继活动,要根据连接线上设置的审批结果(isagree)来判断执行哪个活动,所以,在页面中需要用隐藏域保存流程实例ID和工作项ID,在后面的逻辑流中根据流程实例ID将主管审批结果设置在相关数据区中,控制流程后面活动的流转方法;需要根据工作项ID结束当前的工作。而审批人同样可以从会话上下文中获取登录用户的信息。关键代码如下:<h:hiddenname="expensecheck/expid"property="exp/expid"/><h:hiddenname="expensecheck/workItemID"property="workitem/workItemID"/><h:hiddenname="expensecheck/processInstID"property="workitem/processInstID"/><h:hiddenname="expensecheck/checker"property="userObject/userId"scope="session"/>页面完成后,将“audit.jsp”关联到页面流中“部门主管审批”的视图图元中。并在“audit”连线上设置类型为“com.primeton.bps.sample.expdataset.Expensecheck”的变量来绑定审批信息。4.设计保存审批信息逻辑流在“exp”逻辑构件下面创建“saveAudit”逻辑流,需要接收从页面流中传入的审批信息,完成:将审批结果设置到相关数据区中,结束当前工作,保存审批信息。逻辑流设计如图2-38所示。图2-2“保存审批信息”逻辑流5.完善部门主管审批页面流将“saveAx”关联到页面流中“保存审批信息”的逻辑流图元中,并将“audit”连线上设置的变量作为参数传入逻辑流内部。“结束”图元同“填写报销单”页面流的“结束”图元一样,配置BPS基础构件库中存在的页面successBack_Client.jsp。6.设置人工任务“审批”的实现入口双击打开项目下面的“业务资源”,依次展开业务领域目录,点击“审批”人工任务,在右边设置其类型为“页面流”,点击【浏览】,在弹出的对话框中选择“auditMsg.flowx”作为其实现。如图2-39所示。图2-3“审批”人工任务属性设置财务审阅“财务审阅”需要完成以下操作:根据流程实例ID查询报销单,审阅报销单,将财务审阅人更新到报销单信息中,结束当前工作。1.设计财务审阅页面流财务审阅时也需要查看报销单信息,同“部门主管审批”的思路一样,需要获取流程实例ID,并将报销单信息查询出来,再进行审阅和更新。在【展现页面流com.primeton.bps.sample】下面创建名称为“checkMsg”的页面流,描述整个活动过程如图2-40所示。图2-1“财务审阅”页面流2.调用查询报销单的逻辑流利用赋值图元从请求上下文中workitem变量中获取流程实例ID,“查询报销单”的逻辑流图元直接关联已经实现的“getExp”逻辑流,将获取到得流程实例ID作为输入参数传入,将返回值设置在一个变量中,以便后面的页面从中获取信息。3.设计财务审阅页面在构件包的【展现页面资源】下面创建“check.jsp”,用来完成财务审阅功能。该页面可以利用“RecordView”显示报销单信息中的报销人、报销金额、是否预算内项目及报销原因,为了能触发后面的逻辑处理,再手动加上form信息及提交按钮。财务审阅后,主要是将财务审阅人更新到报销单信息中,并结束当前工作,所以在页面上需要用隐藏域保存报销单的主键ID、工作项ID、财务审阅人(即当前登录用户ID)。关键代码如下:<h:hiddenname="exp/expid"property="exp/expid"/><h:hiddenname="exp/workItemID"property="workitem/workItemID"/><h:hiddenname="exp/auditor"property="userObject/userId"scope="session"/>页面完成后,将“check.jsp”关联到页面流中“财务审阅”的视图图元中。并在“check”连线上设置类型为“com.primeton.bps.sample.expdataset.Expenseinfo”的变量来绑定报销单信息。4.审计更新报销单逻辑流在“exp”逻辑构件下面创建“updateExp”逻辑流,需要接收从页面流中传入的报销单信息,完成:将财务审阅人更新到报销单信息中,结束当前工作。逻辑流设计如图2-41所示。图2-2“更新报销单”逻辑流5.完善财务审阅页面流将“updateEx”关联到页面流中“更新报销单”的逻辑流图元中,并将“check”连线上设置的变量作为参数传入逻辑流内部。“结束”图元仍然选择BPS基础构件库中存在的页面successBack_Client.jsp。6.设置人工任务“财务审阅”的实现入口双击打开项目下面的“业务资源”,依次展开业务领域目录,点击“财务审阅”人工任务,在右边设置其类型为“页面流”,点击【浏览】,在弹出的对话框中选择“checkMsg.flowx”作为其实现。如图2-42所示。图2-3“财务审阅”人工任务属性设置入账服务“财务审阅”活动一旦结束后,“入账”活动就被触发。该活动是调用外部的一个WebService服务,在“2.4.2基础框架搭建”中已完成了“导入外部WebService的WSDL”工作,这时只需要在流程中配置“入账”这个WebService活动即可。1.配置活动的WSDL信息打开“exp.workflowx”流程,双击“入账”活动,打开属性设置框,选择第二个Tab页【WSDL配置】。点击【浏览】选择“AccountService.wsdl”后,显示出WSDL中的Service、当前Service下面的Port、对应的Operation及URL。设置如图2-43所示。图2-1“入账”的WSDL配置其中参数值及返回值可以利用“Alt+/”从流程的相关数据(图2-19)中获取已经定义的变量。返回值如果要加入到相关数据区中,要选中“回填相关数据”。如果调用的服务是多service多port多binding,可以在下拉菜单中进行选择。在本案例中调用的入账服务是多port多binding,在Port栏中可以选择“AccountServiceSOAP12port_http”,但是在EOS6.1中Binding的传输协议不支持jms,HTTP绑定,MIME绑定方式,所以不能选择“AccountServiceHttpport1”。2.配置活动的SOAPHeader信息WebService调用支持发送和接收Header,Header中可以传输身份认证信息、签名等信息。在本案例的入账服务中,服务端约定Header是字符串类型的userName和password两个信息。所以在“入账”活动的属性对话框中,打开第三个Tab页【SOAPHeader】,增加两个参数,它们的值用常量字符串模拟,设置如图2-44所示。图2-2“入账”的SOAPHeader配置部署发布案例开发完成后,保证编译通过(各个文件的图标上不带有“”),就可以部署案例。为了方便程序的调试,需要在EOSStudio内部启动EOSServer,启动方法如图2-12所示。如果已经通过点击“开始程序PrimetonPlatform6.5启动Server”来启动的EOSServer要先关闭。2.1.10发布流程与资源1.提交流程在“项目资源管理器”视图中选中“exp.workflowx”文件,在右键菜单中选择“流程定义库交互提交流程”,如图2-45所示。图2-1提交报销流程弹出“提交流程”对话框。可以在左边一栏依次展开各级目录,选中流程文件后,再在右边一栏选择提交方式。如图2-46所示。图2-2选择提交方式按默认方式提交:用户选择按照默认方式提交流程时会有两种情况:1.如果流程定义库已经存在了业务流程时则覆盖最新版本的流程。2.如果流程定义库中不存在流程定义时,会创建新版本流程。覆盖已有版本:如果流程不是第一次提交,用户可以从已经存在的版本列表中选择,指定一个已有的版本进行覆盖操作。创建新版本:用户提交业务流程时,用户可以选择创建新版本。版本生成规则是有工作流引擎控制的。如:当前流程版本为“1.1.1”,则会创建新版本“1.1.2”;如果第一次提交版本则会创建版本“1.1.1”。立即发布:选中立即发布,则为部署后马上执行发布动作,如果有已经发布的旧版本则取消发布旧版本,马上发布当前版本。不选立即发布,则为部署后不执行发布动作。如果是覆盖旧版本则不会改变原来版本的发布状态;如果是新版本则部署后为未发布状态。点击【下一步】,选中“领域业务目录”,依次展开,全部选中在业务资源中设置的人工任务、业务操作和业务变量,如图2-47所示。图2-3提交流程相关资源点击【完成】后,流程和业务资源提交成功,显示如图2-48所示。图2-4提交成功2.查看流程定义点击“开始程序PrimetonPlatform6.5BPSWorkspace”,显示登录界面。其中,用户名输入tiger,密码输入000000,成功登录后,默认显示流程管理监控中的“流程实例管理”模块。点击“业务流程管理”,依次展开左边“领域级业务目录”,可以看到刚才提交的报销流程及其版本号,点击版本号1.1.1*,在右边显示业务流程图,如图2-49所示。图2-5提交的报销流程版本号右上角的*,表示当前版本是已发布的版本。对于一个流程来说,发布版本最多有一个。2.1.11发布EOS程序在EOSStudio中所有项目默认是“自动构建”,如图2-50所示。图2-1自动构建项目“自动构建”是指在EOSStudio中文件或其引用的文件发生变化时会自动编译成运行时所需要的目标文件,在EOSServer启动的情况下,开发环境会立刻将正确的编译结果文件自动同步到服务器上。所以在开发期不需要额外的操作,EOS中的资源文件已经自动部署在了EOSServer中。如果在开发环境下需要手动部署,可以选中项目,在右键菜单中选择【部署】,或者选中构件包,在右键菜单中选择【部署】或【清除后再部署】。流程运行与监控确保EOSServer已处于正常启动状态。1.登录并启动报销流程点击“开始程序PrimetonPlatform6.5BPSWorkClient”,显示登录界面。输入BPS自带的组织机构树中的任一用户的用户名,即图2-11中每个人员后面括号里id的值,密码统一为000000。以tiger登录为例,如图2-51所示。图2-2登录页面登录成功后默认显示tiger的待处理任务。点击导航条菜单上的【启动流程】进入流程定义列表界面,如图2-52所示。图2-3流程定义列表在【流程定义列表】中找到业务流程名称为com.primeton.bps.sample.exp的流程,点击【启动】按钮,在【启动表单】中流程实例名称输入“报销流程”,流程实例描述输入“张三的报销流程”,如图2-53所示。图2-4启动流程点击【启动】后,提示流程启动成功。2.填写报销单流程启动完成后,在导航条菜单中选择【我的任务】菜单,在【待处理的任务】Tab页中显示出流程实例名称为“报销流程”并且工作项名称为“填写报销单”的工作项,如图2-54所示。图2-5待处理任务点击【执行】按钮执行报销流程中的【填写报销单】环节。填入报销信息,如图2-55所示。图2-6填写报销单点击【保存】后,提示“操作成功”,并会回到待处理的任务列表。此时对tiger来说,已无待处理任务,所以列表为空。点击第二个Tab页【已处理的任务】可以查看到刚才完成的“填写报销单”,如图2-56所示。图2-7查看报销人的已办任务点击【查看】,显示出流程监控图及工作项详细信息。而这些也都可以在BPS管理监控工具中查看到。登录BPSWorkspace,在“流程管理监控”的“流程实例管理”模块,依次展开左边“领域级业务目录”,可以看到报销流程及其版本号,点击版本号1.1.1*,在右边显示该流程下面所有的流程实例列表,如图2-57所示。图2-8流程实例列表在列表中点击流程实例名称“报销流程”,除了可以看到流程实例图,还可以执行许多操作:查看相关数据,挂起、终止、删除流程实例,查看活动实例信息和工作项信息等等,如图2-58所示。图2-9流程实例运行图在流程实例图上点击“审批”,在弹出的对话框中可以查看到该活动的工作项列表及参与者。从图2-21中也可以知道,要由“Goose”来完成审批。3.部门主管审批注销BPS客户端,返回登录页面,以用户名“goose”和密码“000000”登录。默认显示的待处理的任务列表中就有一条“审批”任务。点击【执行】后,显示报销单信息及部门主管审批操作页面,如图2-59所示。图2-10部门主管审批填写审批意见,点击【同意】,完成部门主管审批任务,系统回到待处理的任务列表。点击图2-58中的【刷新】按钮,可以看到流程运行到“财务审阅”,点击【相关数据】,弹出窗口显示出流程在运行填写报销单和部门主管审批活动中所设置的相关数据,如图2-60所示。图2-11相关数据4.财务审阅在“财务审阅”活动属性中参与者设置的是“Snoppy”,如图2-22所示。再以用户名“snoppy”和密码“000000”登录BPS客户端。同样,在待处理的任务列表中有一条“财务审阅”任务。点击【执行】,显示报销单的信息,如图2-61所示。图2-12财务审阅点击【提交】,完成财务审阅,BPS引擎直接调用外部的入账服务,完成入账活动操作。点击图2-58中的【刷新】按钮,可以看到流程已经结束。如图2-62所示。图2-13流程实例结束图需求变更报销流程运行一段时间后,随着公司规模地扩大、业务量地增多,员工的各种报销金额大幅度增长,公司为了开源节流、降低成本,提升竞争力,完善了报销等管理制度。调整后的报销制度是:员工填写的报销单,如果部门主管审批不通过,不允许报销;如果部门主管审批通过,金额小于等于1万且是预算内项目,则进行财务审阅,然后入账;如果不满足金额小于等于1万且是预算内项目的条件,则需要总监或VP进行审批。这时如果报销金额大于1万小于等于5万,是总监审
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 软件开发项目管理与质量控制流程手册
- 三农工作综合实施方案
- 农业产业化发展专项工作方案
- 应急救援项目可行性研究报告
- 垃圾焚烧发电发展模式
- 智能仓库物流
- 房地产项目投资可行性研究报告
- 高新技术企业研发团队建设与管理
- 软件工程流程与开发方法
- rdpac肿瘤复习测试卷含答案
- 基于大数据的拉萨旅游业市场分析
- 人力资源社会保障宣传工作计划及打算
- 2024年秋儿童发展问题的咨询与辅导终考期末大作业案例分析1-5答案
- 广东省广州市2021年中考道德与法治试卷(含答案)
- 2024年贵州省公务员录用考试《行测》真题及答案解析
- 2024-2030年中国滑板车行业竞争策略及发展前景预测报告
- 学校军事化管理培训
- 丧葬费家庭协议书范文范本
- 中小学生德育工作指南2022版
- 通信工程建设标准强制性条文汇编(2023版)-定额质监中心
- JJF(浙) 1171-2019 原子荧光形态分析仪校准规范
评论
0/150
提交评论