




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汽车模具产业链协作公共服务平台工作流集成方案目前,随着产业链平台的调研、分析以及设计进行到一定阶段,平台工作流应用问题又提上日程,对于工作流在平台的应用从最初的热情到淡漠再到今天的迫切经历了一个对平台应用逐步深入、螺旋上升的认识阶段。平台要易于开发、维护以及拓展,同时要面临产业链内与产业链间的多种业务应用,不可避免要面对一些复杂、多变的业务流程应用,因此平台需要一个适宜的工作流解决方案。目前项目面临的问题是一个方面我们需要工作流,另一个方面是我们不可能采用商用的工作流,商用的第三方工作流一般在10万到20万左右,对于研发的项目不太合适。对于公司自主开发的AVIDM工作流本身的一些限制,也不加考虑,此外还考虑到与平台技术框架进行整合的问题,我们目前对于工作流的调研、分析以及选型主要集中在国内外的开源工作流上,同时结合我们的技术平台最终我们的将调研目标定位在国内外JAVA开源工作流上。一、国内外JAVA开源工作流简介1.国外JAVA开源工作流国外有许多优秀的开源工作流,先将其简介列举如下:OpenWFE OpenWFE是一个开放源码的Java工作流引擎。它是一个完整的业务处理管理套件:一个引擎,一个工作列表,一个Web界面和一个反应器(存放自动代理)。它可以可以跟你的程序很好的给合。jBpm jBpm是一个灵活可扩展的工作流管理系统。作为 jBpm运行时server输入的业务流程使用简单强大的语言表达并打包在流程档案中。jBmp将工作流应用开发的便利性和杰出的企业应用集成(EAI)能力结合了起来。jBmp包括一个Web应用程序和一个日程安排程序。jBmp是一组J2SE组件,可以作为J2EE应用集群部署。OpenEbXMLOpenebXML项目致力于提供一个ebXML框架,主要支持不久将由 UN/CEFACT和OASIS发布的ebXML规范2.0版。 Werkflow Werkflow是一个灵活可扩展的基于流程和状态的工作流引擎。它的目标是满足可以想象的所有工作流程,从企业级的业务流程到小范围的用户交互流程。通过使用可插拔和分层结构,可以方便地容纳各种工作流语义。 OSWorkflowOSWorkflow是一个灵活的工作流引擎,设计成可嵌入到企业应用程序中。它提供了许多的持久化API支持包括:EJB,Hibernate,JDBC和其它。OSWorkflow还可以与Spring集成。wfmOpenWfMOpen是WfMC和OMG中所谓工作流设施(workflow facility) (工作流引擎)的J2EE实现。工作流通过扩展的XPDL描述。 OFBizOFBiz是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类WEB应用系统的框架。 OFBiz最主要的特点是OFBiz提供了一整套的开发基于Java的web应用程序的组件和工具。包括实体引擎, 服务引擎, 消息引擎, 工作流引擎, 规则引擎等。ObjectWeb BonitaBonita 是一个符合WfMC规范、灵活的协同工作流系统。 对于各种动作如流程概念建模、定义、实例化、流程控制和用户交互等提供了全面的集成图形工具。 100% 基于浏览器、使用SOAP和XML数据绑定技术的Web Services封装了已有的工作流业务方法并将它们以基于J2EE的Web Service形式发布。基于活动预测模型的第三代工作流引擎。Bigbross Bossa速度非常快、轻量级的引擎,使用富有表达能力的Petri网定义工作流,不要求关系数据库,使用简单,能和Java应用集成。事实上,它是按嵌入式设计的。 XFlow XFlow运行于EJB和servlet容器中。TavernaTaverna项目的目标是提供一种语言和软件工具,方便在eScience中使用工作流和分布计算技术。Enhydra SharkShark完全基于WfMC和OMG标准,使用 XPDL作为工作流定义语言。流程和活动的存储使用Enhydra DODS(一个开源OR映射工具)。 PowerFolderPowerFolder是一个容易使用,容易安装基于J2EE的工作流服务器,包括开发人员使用的基于web的studio。Open Business EngineOpen Business Engine是一个开放源码的Java工作流引擎,支持WfMC规范,包括接口1(XPDL)、接口2/3(WAPI)和接口5。OBE为活动的运行提供了一个可控的集中环境。OBE主要基于J2EE实现。 OpenWFEOpenWFE是一个开放源码的Java工作流引擎。 它包括可升级的三个组件:引擎、工作列表和Web界面。它的流程定义语言虽然使用XML格式,其灵感来源于 Scheme,一种Lisp方言。FreefluoFreefluo 是一个使用Web Service的工作流协同工具,可以处理WSDL的Web Service调用。支持两种XML格式的工作流语言:IBM的WSFL和XScufl。Freefluo非常灵活,它的核心是不与任何工作流语言或执行架构关联的可重用协同框架。 Freefluo包括可执行使用WSFL一个子集描述的工作流的运行库。 TwisteTwister的目标是提供新一代、易集成、应用Java领域中最新成果、面向B2B的工作流解决方案。流程引擎基于BPEL业务流程规范和Web Service标准。 Con:cerncon:cern工作流引擎基于扩展的案例(case)处理方法,流程由一组具有前后条件的活动组成。JFlowerJFlower是一个用Java开发的工作流引擎,可以通过Java插件来扩展。服务器可以解析XML文档来执行任务,检查条件。会话数据保存在一个数据库中,所以服务器是完全可伸缩的。JFolderJFolder (formerly PowerFolder) 是一个工作流服务器和开发环境,它可以配置在任何J2EE服务器与数据库。JAWE基于Java的图形化工作流编辑器。图形化工作流编辑器 。使用JAVA语言开发,开放源码 。严格遵循WFMC规范 。XPDL(XML Process Definition Language)WFMC的 XML 过程描述语言 。工作流定义文件保存在本地的XML文件中 ZebraZebra是一个工作流引擎。原先的设计是为了填补商业开源工作流引擎的空白。它有一些不同于其它工作流系统的特点:*所有工作流模型都可以在workflow patterns中描述*一个易于使用的GUI designer *一个持久层中间件*OO设计*一个基于Turbine的Web应用程序ActiveBPELActiveBPEL引擎是一个健壮的运行时环境,它能执行用户按BPWL4WS或just BPEL规范编写的业务流程. YAWLYAWL(Yet Another Workflow Language)一个开源工作流语言/处理系统.它基于现有的工作流处理系统与工作流语言的一个精确分析.不像传统的系统,它提供对大部分工作流模式的直接支持.YAWL支持控制流透视图,数据透视图并且能与WSDL标准的web服务相结合.MOBEMidOffice BPEL Editor (MOBE) 是一个开源平台能够让执行,监控,调整,结束每个定义的过程和谐地结合起来.这个平台的实现使用到J2EE技术与公共的标准如:BPEL,XML与SOAP.RUNA WFERUNA WFE是一个基于JBOSS-JBPM引擎的开源工作流工作平台它是一个跨平台适用于商业流程处理的最终用户解决方案,很容易与所有SQL数据库管理系统相结合.micro-workflowmicro-workflow框架适用于那些要在他们程序中分离控制与逻辑方面的开发者,所以这个框架可以使他们的流程相互独立。这样有利于代码重复使用与代码的完整性。bexeebexee是一个BPEL执行引擎并且是BPEL标准的一个开源实现.PXEPXE-Process eXecution Engine是一个模块化的商业流程执行引擎.支持用WS-BPEL2.0或用BPEL4WS1.1规范描述的商业流程.2.国内JAVA开源工作流目前国内的JAVA开源工作流比较少,而且相关的资料也比较少,目前比较有名气的是:Agileflow AgileFlow目前是国内一款比较好的开源JAVA工作流引擎,最新版建构在开源工作流JBPM之上,比较适合国内的应用。WillowWillow是目前国内两大开源Java工作流引擎之一,具有相对比较完备的文档。Sapphire二、 几个主要的工作流比较通过对国内外主要的工作流资料的调研,对以下几款适合我们需要的工作流进行比较。1.sharkShark是体系和功能最为复杂的代表。它是另一款遵循WfMC的XPDL标准开源工作流引擎,并且同时遵循OMG组织的Workflow Management Facility规范。优点:在所有开源工作流引擎中,Shark的体系最为完备和复杂。其一直秉承着“模块化”的思想,所以比较容易扩展。缺点:但是自从被 Together公司收购后,Shark的商业化色彩已经越来越浓,改称为Together Workflow Server,并仅以Community Edition的形式提供了部分开源代码供参考。2.jbpm基于JBoss+EJB的工作流引擎。jBmp将工作流应用开发的便利性和杰出的企业应用集成(EAI)能力结合了起来。jBmp包括一个Web应用程序和一个日程安排程序。jBmp是一组J2SE组件,可以作为J2EE应用集群部署。国内目前有部分人研究jBpm。优点:安装简便,支持动态部署,工作流引擎支持交互界面的脚本,适用于WEB环境。缺点:与JBoss和EJB结合过于紧密,不便于分离。3.osworkflow非常灵活的工作流引擎,完全基于插件思想,可扩展性极强,基于状态。 优点:工作流引擎可工作于JSP Container,EJB Container,WS Container。 引擎支持自动任务和手工任务;工作流实例以及相关数据可以持久化,可以选择JDBC、EJB、Hibernate等持久化方式;具有工作流脚本图形编辑器;各种功能基于插件方式,易于集成已有系统;工作流可以调用Java、EJB、Bean Shell、BSF等功能;支持权限;定时任务调度;适用于Web和非Web环境。缺点:非标准脚本语言,工作流引擎对于自动任务支持尚不完善。4.OFbizOFBiz本身是一套独立完整的企业应用框架,包括了通常的通用中间件和部分领域的逻辑中间件 ,OFBiz最出名的是它的实体引擎和服务引擎,此外还提供了规则引擎和工作流引擎。 优点:实体引擎和服务引擎,灵活强大稳定,基于其上的工作流引擎也是不错了。用例比较多,参考文档较丰富。 缺点:庞大,不是单独的工作流引擎。5.AgileFlow开源工作流引擎AgileFlow基于ww2+spring+hibernate架构实现,是国内两大开源Java工作流引擎之一,实现了工作流引擎的绝大部分功能,易学易用,目前整合了JBPM应用,同时agile引擎对jbpm引擎提供支持优点:已经在sourceforge注册成为其开源社区的一部分,具有后续的支持,且对国外的开源工作流引擎JBPM提供支持缺点:由于在很大程度上只是个人以及少部分人的努力,对于其后续的发展不太看好。6.AVIDM工作流AVIDM工作流是公司自主研发的工作流产品,采用EJB架构形式,实现了工作流引擎的大部分功能。优点:本公司自主研发,相对来说容易获得技术支持以及相关文档缺点:与Weblogic结合过于紧密,不便于移植以及拓展三、平台对于工作流的需求1.支持多流程的并发平台的服务对象是汽车模具产业链,平台的业务将会涉及多个流程的并发问题 2.支持流程间的协作平台作为产业链协作公共服务平台,工作流程必须支持跨企业的业务流程之间的协作3.支持主流程与子流程对于一个在产业链各上下游企业间流转的流程,同时也必须能够与企业内部的子流程进行协作4.支持平台基本架构基于J2ee技术架构,同时支持SSH应用框架,至少能够整合Hibernate、Spring框架应用四、工作流选型 在工作流选型的过程中,刚开始考虑采用公司自主开发的AVIDM工作流,但是由于其移植问题,考虑到未来的拓展以及项目费用相关的问题,最终放弃了选择AVDIM工作流;对于国外的工作流主要考虑的是JBPM、shark与OSWorkFlow,其中由于考虑到shark目前的开源程度不够,想要在上面进行拓展比较困难,而且比较难于学习,而OSworkflow,虽然它一度成为采用开源工作流的首选,但是由于它不是建立在标准之上,而且OSWorkflow所依赖的FSM模型对于分支、聚合、子流程的支持度很低,故最后选定JBPM作为本项目的工作流引擎,主要从以下几个方面考虑:(1)优点a)轻巧,使用Hibernate实现b)扩展性好,支持各种事件和节点的扩展,c)工作流原理和实现简单,代码容易维护d)支持变量e)支持子流程f)参与者与应用集成非常简单(2)应用目前,该产品在国内有相当的一部分人正在研究其应用,能够找到相关的应用资料(3)支持由于其成为jboss家族的一员,有jboss的强大技术后备支援,前景看好,专家预测在不久将超过shark成为开源工作流的先锋(4)扩展jBpm是最适合扩展的代表,是在所有开源引擎中最适宜被商业化应用的一款。首先 其流程建模模型是基于Activity Diagram(活动图)的,并在引擎构建上融入了FSM和PetriNet思想,所以其内核和根基比较牢固扎实。其次,自从被JBoss收购后,其3. x系列的结构更加趋于微内核,Plug-in思想也更加深入。其同时还提供了对BPEL扩展,存储支持JBoss Hibernate实现,集成了JBoss seam,规则引擎准备采用JBoss rules,并准备集成JBoss Messaging。这样,不论从内核和外围应用,jBpm都具有了强劲的动力。(5)功能Jbpm结合应用了状态图+活动图+PetriNet的知识,而且,这里的活动图还是UML2.0版的。UML2.0的活动图中,节点不叫活动(Activity)而叫动作(action),活动成了一个高层次的概念,它包含一个动作序列。一个活动图展现一系列的动作,这些动作组成了活动。Jbpm把action也改名了,称为state。Jbpm使用的状态图的概念有transition/event等,这个自己去看吧。Jbpm来内部实现中还采用了PetriNet的概念,如token,signal等,巧妙地利用Parent-Child Token的机制处理分支、父子流程等复杂应用场景。 (6)其它对于工作流的选择的考虑的主要因素还有就是向平台的基本架构整合的问题,目前我们设计的汽车模具产业链协作公共服务平台采用J2EE技术机构,在技术实现上采用比较流行的SSH开源框架,因此工作流选择的首要参考标准是能够与平台进行整合,而JBPM刚好在持久层采用Hibernate技术框架,同时其能够与Speing 技术框架进行整合,并且Spring提供了相应的整合模块Spring-Jbpm Module。对于WebApp,目前Jbpm的webconsole主要是通过JSF来实现的,但这不是主要问题,可以向Struts进行移植。五、JBPM详述见JBPM userguide六、整合JBPM七、集成JBPM考虑到目前平台采用J2EE技术架构,同时采用SSH技术框架,对于JBPM的整合主要从数据库以及向SSH整合来实现。(1)环境IDE:Eclipse3.2.1JDK:J2SDK1.5.06Ant:apache-ant-1.7.0Web:Tomcat5.5.17jBPM:jbpm-starters-kit-3.1.4Database:SQLServer2000Hibernate:Hibernate3.2.1Spring:Spring2.0.1Struts:Struts1.3.5Spring-Jbpm Module:v0.7首先下载JBoss jBPM Starters Kit 3.1.4,解压到D:jbpm-starters-kit-3.1.2,后面简称JBPM_HOME。目录下含有五个子目录:1) jbpm jBPM的软件包,包含源码,例子等文件内容。2) jbpm-bpel只含有一个网页 3) jbpm-db各种数据库hibernate配置文件示例,有些还包含了相应的jdbc驱动程序。 4) jbpm-designer辅助开发jBPM的Eclipse插件,具体在jbpm-gpd-feature子目录中 5) jbpm-server一个已经配置好了的基于JBoss的jBPM示例。 为了便于开发,同时安装Jbpm的Eclipse插件jbpm-designer,最简单的安装方式是将该文件下的eclipse文件夹中的相应目录内容导入到Eclipse开发环境中。(具体方法参考SSH的整合方式)(2)持久化Jbpm的数据持久化采用Hibernate框架,因此对于Jbpm在持久化方面的整合主要是连个方面:一是持久化表的生成,二是Hibernate.cfg.xml文件的配置持久化表:将 jbpm-starters-kit-3.1.1 下的子目录 jbpm 改名为 jbpm.3 ,否则在执行下面的 ant 命令时会报如 jbpm.3 目录不存在的错误: D:jbpm-starters-kit-3.1.1jbpm-dbbuild.xml:361: The following error occurred while executing this line: D:jbpm-starters-kit-3.1.1jbpm-dbbuild.xml:68: Basedir D:jbpm-starters-kit-3.1.1jbpm.3 does not exist 在 DOS 窗下,进入 D:jbpm-starters-kit-3.1.1jbpm-db 目录,执行如下命令: 执行成功后,在 D:jbpm-starters-kit-3.1.1jbpm-dbbuildmysqlscripts 目录里生成了四个 sql 文件,它们做什么用的一看名字就知道了。在sqlserver中建立我们的应用库,如jbpm,然后导入相应的sql语句就可以生成完整的持久化表。注:目前还没有考虑是否将Jbpm的数据库与平台数据库合并的问题。Hibernate.cfg.xml:在Eclipse环境中,利用Jbpm插件可以生成默认的Hibernate.cfg.xml文件(参看相应的生成文件),其中需要修改的主要是数据库的引入部分: org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql:/:3306/jbpm root root true false false其中的参数参照实际应用进行修改。 完成上述两个步骤,基本上就完成了jbpm持久化向平台的整合。(3)与Spring框架整合Jppm与Spring整合的一个重要工具是Spring-Jbpm module插件,通过这个插件,可以轻松的实现二者的整合。首先到Spring网站下载相应的插件包并导入到项目工程中,最后需要做的就是修改Spring的配置文件,由于Spring支持多SessionFactory以及多数据源,因此可以很容易实现二者的整合,只需要对Spring配置文件进行修改:(本项目中采用另外建立一个Spring配置文件jbpm-pring-cfg.xml的形式) classpath:hibernate.cfg.xml 通过上述配置,基本上实现了Jbpm向Spring整合。(4)webApp通过前述几个步骤地整合,基本上可以建立起工作流的应用,可以进行工作流基于IDE控制台的测试。但向Struts整合不能够通过配置来实现,因为目前jbpm的web控制台采用的是JSF技术框架,故jbpm的web应用需要通过移植来实现。一个简单实例:public ActionForward search(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception if (log.isDebugEnabled() log.debug(Entering search method); / These are my Spring beans that contain the business logic. / The BpmManager is where I have my jBPM logic UserManager userMgr = (UserManager) getBean(userManager); BpmManager bpmMgr = (BpmManager) getBean(bpmManager); com.pragmatic.model.User user = null; / Looki
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2019年党建知识竞赛简答题题库及答案
- 2025年国内贸易买卖合同范本下载
- 2025合伙权益解决方案合同协议书
- 2025中国建设银行贷款合同范本
- 2025合法的服装分销合同协议
- 2025年农村果园承包合同范本
- 2025云端存储合同范本
- 企业安全培训巡查课件
- 2022年五险一金培训
- 超声监测眼晶状体变化-洞察及研究
- 牧护关镇街道小学2025-2026学年第一学期工作计划
- 2025年《医疗器械监督管理条例》培训考核试卷附答案
- 2025-2030矿山机械跨境电商新模式拓展及品牌出海战略报告
- 养老金融科普知识培训课件
- 慢性咳嗽大讲堂课件
- 互联网企业文化调研报告及分析框架
- 农村商业银行三年发展战略规划与实施方案
- 暂住人员管理办法
- 护理查对不良事件案例分析
- 化验室精细化管理
- 洗衣服劳动与技术课件
评论
0/150
提交评论