我国唯一的项目管理信息化门户网站,国内项目管理软件资讯服务提供商

登录 注册
当前位置:首页 > IT信息化 > 正文

Jboss Seam和JBPM在软件项目管理系统中的应用研究

2018-12-13 来源:《电脑知识与技术》作者:东北师范大学 綦伟玮 潘伟
      摘要:通过研究 J2EE 新应用框架──Jboss Seam,发现 Jboss Seam 和 JBPM 工作流技术深度整合,初步实现了二者在实际软件项目 中的应用。 首先介绍了什么是 JBPM,概述了什么是 Jboss Seam。 通过比较研究传统软件项目管理系统的不足,浅谈并分析了 Jboss Seam 和 JBPM 在软件项目管理系统中的应用优势。 目的在于将 JBPM 的优势应用到软件开发的办公自动化管理当中,结合项目管 理的特点,研究发现利用 JBPM 工作流引擎开发出的项目管理系统,利于团队合作和分工;在系统的开发过程中利用 JBPM 技术,能 够降低程序开发的复杂度、简化代码的编写,提高开发效率。 
      关键词:JBPM;Jboss seam;工作流;工作流管理;软件项目管理
      软件工程项目开发是当今社会各领域不可缺少的重要活动,已经成为各领域信息化的基础。 在计算机科学发展的几十年的历 史中,软件学科获得了空前的发展,并逐渐成为该领域的核心技术。 在经历了若干大型软件项目的成功和失败后,人们才逐渐意识 到软件项目管理的独特问题:失败主要是由于使用的管理技术不当。 虽然目前好的管理不一定能使软件工程成功,但不好的管理一 定会导致软件工程的失败—— —软件使用的日期会大大拖后,成本也可能比预计的高出好几倍,而且最终软件很难维护。 为此,一个 好的软件项目管理系统的诞生,也是势在必行!
      近年来,工作流管理和业务流管理正在迅速成为企业获得软件敏捷性和适应性的重要方法。 Jboss JBPM 是一个面向流程的工 作流/BPM 框架和工具集。 它使业务分析人员能够与软件组件进行交互,有助于活的有效的业务解决方案。 把 Jboss JBPM 技术应用 到项目管理软件中是相当可行的举措。 为了提高项目开发效率我们将应用J2EE5.0 最新的轻量级框架Jboss Seam。 Seam 是一种企 业级 Java 的应用程序框架,它将 JSF 和 EJB3 的组件模型合二为一,消除了胶合代码,使得开发者专注于业务问题。 最值得一提的 是,Seam 整合了一系列主要的其他开放源代码框架, 例如 JBPM、Jboss Rules (又名 Drools)、Jboss Portal、JBoss Micro container 等等。 Seam 不仅能将它们“有机结合”起来,而且可以像整合JSF 和 EJB3 一样强化原有的框架。
      1 JBPM 的新应用
      1.1 JBPM 介绍
      JBPM( Java Business Process Management)是一种基于 J2EE 的轻量级的、灵活可扩展的工作流管理系统。 JBPM 为设计及开发工 作流和业务流程管理系统提供了一个先进的平台[1]。 JBPM 实现了流程逻辑与业务逻辑的分离,能够可视化的进行业务流程的分析、 定义和业务单元的组装,从而使应用开发人员更关注于业务逻辑的实现,降低了复杂流程应用的开发难度。
      JBPM 定义了使用 JBoss 流程定义语言编写的文件里面的流程定义。 JPDL 是一种面向图形编程(GOP)的语言,它基于节点、转 换和动作组成的模型。 在这种模型里面,节点是在流程定义过程中彼此相遇时执行的命令。 转换负责指导流程定义的执行过程,而 动作在节点或者转换事件发生时执行特定逻辑。 
      1.2 Jboss Seam 概述
      Jboss Seam 是一个 Java EE5 框架。 它通过把 JSF 与 EJB3.0 组件合并在一起,从而为开发基于Web 的企业应用程序提供一个最 新的模式。 Seam 可以让你把 EJB 组件直接绑定到 JSF 页面 [2]。 Seam 能够统一和集成现有的开源技术集成如 Facelets、Hibernate、 JBPM、Drools、Groovy、Java Port lets、BPM、AJAX、iText 和 Lucene。
图 1 为基于 JBoss Seam 的 Web 应用程序框架。
      1.3 JBPM 和 Jboss Seam 的整合
      Jboss Seam 与 JBPM 工作流实现了无缝整合,在基于 Jboss Seam 来开发具有 工作流的功能时, 只需简单的将 hibernate.cfg.xml 和 jbpm.cfg.xml 的文件配置一 下,在 WAR 的 components.xml 声明使用流程定义的JPDL 流程定义文件就实现 了系统的整合。 工作流的核心工作分为二个部分,一为流程的定义,二为流程实 例与业务数据实例绑定。 之后以不同的角色实现流程的流转即可[3]。

图 2 JBPM 和不同角色接口
      Jboss Seam 通过 JBPM 对业务流程和规则的整合提供了极好的支持。 在 Jboss Seam 应用中,可以指定 UI 动作(例如按钮点击)来触发业务流程。 只需要 通过 @CreateProcess 注释来标记 UI 事件处理方法。 业务流程是不同的用户以相 应顺序来完成的一系列任务。 可以用 @BeginTask 和 @EndTask 标注任务的开始 和结束。 当前任务结束时,JBPM 引擎将自动把进程前移,进行下一个任务。 Seam 让每个用户可以查看他/她的当前任务列表以及完成任务的下一个动作。 这些任 务列表是基于当前登录的用户角色生成的, 并且通过用户认证和授权的方式紧 密地整合到 Seam 安全框架中。 
      2 软件项目管理系统
      软件项目管理系统实际上就是利用高新的 IT 信息技术对软件工程项目的 开发过程进行管理。它所涉及的范围覆盖了整个软件工程过程。软件项目管理是 为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分 析和管理的活动。 软件项目管理的根本目的是为了让软件项目尤其是大型项目的整个软件生命周期(从分析、设计、编码到测试、维 护全过程)都能在管理者的控制之下,以预定成本按期,按质的完成软件交付用户使用。 软件项目管理系统恰好就是实现了软件项 目管理的自动化或半自动化。
      3 传统的软件项目管理系统的不足 
      传统的软件项目管理系统由于本身的局限性,越来越不能满足软件项目管理发展,存在如下缺陷: 首先,传统的项目管理系统基本上通过纸质文档来进行管理,不便于查找和了解项目的进展情况,也不便于对项目进行统计分 析、项目总结、项目成果利用等。 在项目规划、项目进度跟踪、资源分配和需求变更等方面都不能满足实际项目开发的需要,以至于 项目进度难以控制,项目开发过程难以规范化。 其次、传统的项目管理系统不能很好地解决资源冲突问题,特别是产品设计和软件 开发等项目。 在项目管理过程中往往会有大量的动态信息产生,是一个动态离散时间系统,不便于管理控制。 再次,传统的项目管理 系统只能处理特定的开发流程。 当开发流程发生变化时,就必须修改系统的应用程序或重新开发新的应用程序,否则无法满足项目 开发流程多样化和需求的不确定性。
      4 Jboss Seam 和 JBPM 在软件项目管理系统中的应用优势
      JBPM 作 为 J2EE 的一部分充分继承了其跨平台的,可移植的特点,Java 语言本身的扩展性有效地解决了重复开发和程序重构 的问题,“编写一次、随处运行”大大减少了浪费。通过我们对 Jboss Seam 和 JBPM 技术的研究,再次发现利用二者能够降低程序开发 的复杂度、简化代码的编写,提高开发效率。 Jboss Seam 对 JBPM 的集成有一定的方便性,主要表现在三个方面:第一、 提供内置对 象显示任务列表给用户;第二、 Jboss Seam 除新增 conversation 上下文外,还新增了 business_ process 上下文,这就是为工作流管理 提供的,应用程序可以将流程中涉及的相关状态作为 JBPM 变量存储于 business process 上下文,然后 Jboss Seam 可以持久化这些 JBPM 变量;第三、 提供方便的标签开始一个流程,开始一个任务、结束一个任务。 当 JBPM 运行时,使用简单强大的语言将在Sever 上输入的任务流程打包在流程档案中,可以很快的部署业务工作流程,并实时发布到 web 上,这样 JBPM 就将工作流应用开发的便 利性和企业应用集成能力更好的集合起来。用户可以实时监控流程状态,对 软件项目提供直观有效的管理。 同时,Jboss Seam 和 JBPM 都是开源的,对 企业降低管理成本有着绝对的优势。
      5 实例研究
      假设一个软件项目管理的常见操作,以实例的形式部署到JBPM 上,以 探讨其应用价值。 
      实例:项目经理看到《需求分析报告》的时候进行审核的过程,
      1) 流程定义
      流程图如图 3 所示。
图 3 审核流程
 Jpdl 文件:
  
-
xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="urn: jbpm.org:jpdl-3.2 http://jbpm.org/xsd/jpdl-3.2.xsd">
 -  
 
-
 -
 
 
 -
 
 
 --> 
 
  
-
 
  
 
       2) 初始化 actor ids
      Jbpm 对流程中用户的管理是通过actor id 和 group actor ids。 seam 内置了一个部件Actor 来方便指定当前的actor ids.这个工作 一般在用户登陆时完成。
 @In(create=true) Actor actor 
 Public String login(){
 … 
Actor.setId(user.getUserName());
 Actor.getGroupActorIds().addAll(user.getGroupNames());
 …}
      3) 启动一个工作流
 @out(scope=ScopeType.BUSINESS_PROCESS,required=false)
 Long taskId; 
@Out(scope=ScopeType.BUSINESS_PROCESS,required=false)
 Float total;
@Out(value=“employee”,scope=ScopeType.BUSINESS_PROCESS,required=false)
 String employeeName@CreateProcess(definition="TaskManagement")
 public void submitTask() { 
try { 
completedTask = purchase(employee, currentTask);
 taskId = completedTask.getTaskId();
 total= completedTask.getNetAmount();
 employeerName= completedTask.getEmployee().getUserName();
 }}
      4) 任务分配 
      当开始一个工作流的时候,任务实例被创建,任务实例必须分配给一个用户或用户组,相应 seam 中分配任务有二种方式—分 配给用户或用户组,如: 
      分配给用户:
 
 
      5) 开始任务
      Seam 提供了两个标注开始任务:@StartTask 和 @BeginTask. 开始任务时开始一个 conversation 上下文, 能在其中访问保存在 business process 上下文中的变量。
 @BeginTask
 public String viewTask() {
 Task = (Task) em.createQuery("select o fromTask t join fetch taskLines where t. taskId = :taskId")
 .setParameter("taskId",taskId)
 .getSingleResult();return "accept";
 } 
      6) 结束任务
      Seam 提供 @EndTask 标注结束任务,并指明下一步流程。 如:
 @EndTask(transition="approve")
 public String accept() { 
task.process();
 return "employee1";} 
      通过以上实例我们发现。将 Jboss Seam 和 JBPM 引入到软件项目管理系统是可行,并且有着显著的优势。实际操作也相对简单。 对于一个软件公司而言,即使是业务流程有改变,我们也只需要将新的流程通过可视化的设计定义,并部署到 Jboss JBPM 服务器上。一个新的工作流程就马上可以开始。JBPM 提供了持久化的解决方案,通过将定义好的 “工作流程”存储到数据库当中,并提供对 外的接口,我们可以在这些基础之上进行二次开发。 总之有了 Jboss Seam 和 JBPM 的完美结合,工作流的部署将变得格外省力和简 单,容易操作,上手快,大大的提高了企业的工作效率。 
      6 结束语 
      我们采用 Jboss Seam 开发软件,将会更好的利用JBPM 技术,更快的提高软件开发效率,而且基于 Jboss Seam 良好的封装性,我 们开发出的软件必然有良好的稳定性,易于后期维护。 从而,我们将得到一个稳定性较好的项目管理软件,相信项目管理者利用这 个相对稳定的管理软件去开发和管理项目,在今后的工作中一定会事半功倍,大大提高软件开发效率,进而提高企业利润。 
      参考文献:
      [1] 高艳蓉.用 Jboss JBPM 管理业务流程[J].计算机世界•技术与应用,2006(24). 
      [2] 范会联,张玉芳.基于 Jboss Seam 的 web 应用程序的设计[J].微计算机信息,2007,23(1).(本文于2009年发表于《电脑知识与技术》)
分享到:

免责声明:
  1、项目管理信息化网发布的所有资讯与文章是出于为业界传递更多信息之目的,并不意味着赞同其观点或证实其描述。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请浏览者仅作参考,并请自行核实相关内容。
  2、本站部分内容转载于其他网站和媒体,版权归原作者或原发布媒体所有。如文章涉及版权等问题,请联系本站,我们将在两个工作日内进行删除或修改处理。敬请谅解!

延伸阅读:

more>

会议活动

more>

公开课

more>

PMO

Copyright © 2021 项目管理信息化网 版权所有 京ICP备17062359号-9 如转载本站文章,请注明原作者和原发布媒体

本着互联网分享精神,本站部分内容转载于其他网站和媒体,如内容涉及版权等问题,请联系本站进行删除或修改处理

客服电话:010-89506650 89504891 非工作时间可联系:18701278071(微信) QQ在线:574888227

新闻与原创文章投稿:tougao#cpmta.com 客服邮箱:info#cpmta.com(请将#换成@)

我国唯一的项目管理信息化门户网站,国内项目管理软件资讯服务提供商,隶属卓橡公司

项目管理信息化微信公众号

PMO大会微信公众号