摘要:通过研究 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 文件配置1 下,在 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 上下文中的变量。@BeginTaskpublic 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年在计算机知识与技术上发表) 分享到: