• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 语文学习 > 正文

    【基于Web服务的跨校选课系统的设计】跨校选课

    时间:2019-01-14 03:33:58 来源:雅意学习网 本文已影响 雅意学习网手机站

      【摘要】分析合并高校和“大学城”校区、校际间信息共享的需求和特点,针对现有解决方案和建设模式存在的问题,结合面向服务的思想和工作流集成技术,提出基于Web服务的跨校选课应用系统集成方案,给出一种松耦合且可扩展的架构。文章阐述基于Web服务的跨校选课系统运行的环境和机制,借助BEA Web Logic Platform8.1集成平台实现系统的主要功能,论证其可行性及优越性。
      【关键词】跨校选课系统;Web服务;工作流;协同
      【中图分类号】G40-057 【文献标识码】A【论文编号】1009―8097(2009)12―0054―04
      
      一 研究背景
      伴随高校合并和“大学城”的出现,高校间资源整合、优势互补的发展趋势,促使学生选课范围向分布式、异构环境延伸,传统教务信息管理平台已无法满足跨校选课过程动态、并发和协同的需要。因此,我们有必要设计有效的跨校信息共享系统。
      对于数字化校园信息共享模式的研究,目前有相同实体对象公共存储的方法;基于对象规范化的共享方式;基于系统互操作框架的信息共享机制[1]。这些方法主要关注于解决底层数据标准化的问题,或者是局部信息共享的问题,这种自底向上的方法难以适应跨校业务从全局出发的思路;尽管像COM/DCOM、COBRA和Java RMI等分布式对象中间件较好地解决了校区局域网内的互操作问题,但这种紧耦合模式并不能满足跨校区异构系统之间动态协同的需求;随着Web Services和工作流技术的发展,人们考虑利用Web服务解决跨域系统的互操作问题,但服务与工作流技术相结合的研究,主要集中于语义Web服务的研究,有的是在传统工作流系统的基础上提供对Web服务建模和执行的支持,并没有解决面向服务工作流的分布式服务如何进行事务性协作的问题[2]。
      我们基于SOA架构思想,利用Web Services技术,将异构的应用程序以Web服务的方式组织起来,通过灵活可变的流程建模和设计,将这些服务串接起来,从而实现一个完整的业务处理流程,满足工作流的柔性需求;我们可以将这些已经定义好的流程,继续组织包装成一个Web服务,通过服务注册和服务发现,动态地作为子流程元素,进一步作为上一层系统流程的服务单元,通过建立有效得协同机制和协同接口,实现业务流程的事务性协同;利用逻辑实体业务流程管理器(Business Process Management,BPM)负责高层服务的组合、发布和提供,满足跨域业务间的动态协同。
      
      二 基于Web服务的跨校选课系统框架结构
      在SOA架构下,我们设计了跨校选课系统,如图1所示。跨校选课业务流程的建立是分布进行的,每个参与者(分校区或学校)可以建立自己的流程,完成特定的业务目标。在更高的层次上,通过业务流程管理器BPM将这些流程组合在一起,实现更复杂的业务流程。为了组合这些流程,考虑到环境的异构和分布特性,将分校区流程发布为Web服务,就可以在XML、HTTP、SOAP和WSDL等标准协议的基础上实现流程的集成。流程可以封装为Web服务,Web服务又可以被调用来实现复杂业务流程中的一个步骤。流程的执行与流程的监控和管理都建立在这个基本思想之上。
      
      图1 跨校选课系统框架结构
      业务流程管理器(BPM)是一个逻辑实体,负责高层服务的组合、发布和提供。在物理实现时它可以是一个独立的系统,也可以作为其他校区应用管理系统中的一个功能模块而存在[3]。当有跨校区业务需求时,业务流程管理器进行组合服务的设计,通过注册中心查找到所需的服务,然后对现有校区服务进行流程组合,形成新的流程服务并将其发布到注册中心,在此过程中,业务流程管理器作为服务请求者查找服务,但是并没有与真正的服务绑定。从而形成一种松耦合和可扩展的架构。
      此体系结构业务流程协同具有动态的特性,一方面是协同活动间依赖关系的动态性,即相互协同的活动间往往具有输入输出依赖、因果依赖或时序依赖等,预定的依赖关系在协同过程中可能会因为一些意外因素而做出修改,但由于在顶层业务流程设计过程中并没有绑定真正的服务,因此流程的更改不会影响校区应用实体,也不涉及与其他校区实体的接口关系;而在流程执行过程中,时序关系发生的变更只是由业务流程管理器的流程执行管理器来执行,服务请求者和被调用校区应用系统都不会感知到任何变化,即协作活动间的依赖关系可以在被调用方未知的情况下动态更改。协同动态性的另一方面是协同参与者可能动态加入或退出,比如跨校选课系统,在规定学分的选课规则下,学生可以按照任意顺序任选、退选A校或B校的课程,协同的活动划分也可随着协同的进展而动态调整。同样的,也只需在业务流程管理器的顶层流程设计中进行修改,动态增加或删除的校区应用实体对服务请求者和其他被调用实体都不受影响,从而实现参与者的动态增加、删除和调整。
      
      三 基于Web服务跨校选课系统的实现
      在面向SOA架构下,我们将应用逻辑与业务流程逻辑分离,具体协同过程如图2所示。在不修改校区内业务流程具体功能实现的前提下,只修改集成业务的流程模型来改变系统功能,从而快速应对跨校区业务动态协同的需求。
      
      图2 跨校区选课业务流程协同
      假设A校某学生实例化了一个跨校选课流程,需要B校和C校的业务协同。按照用户(A校)实例化的流程,该流程执行到第2个活动需要B校的业务协同,用户调用了Internet上B校教务管理系统的Web选课服务A接口。B校教务管理系统接收到选课服务A的执行请求后,向消息管理器中写入学生跨校区选课实例化请求,如果用户合法,消息协调器获取该消息后驱动工作流机执行该流程实例,并将执行结果写入注册中心中,此时B校教务管理系统的该流程实例处于等待状态,需要用户再次通知才可以完成业务提交。选课服务A获取结果并返回给用户,当用户确认选课服务B执行成功时才继续实例化需要C校的第3个活动,该活动的执行过程与第2个活动类似。这些协同活动的执行成功与否直接决定了用户跨校选课的流程是否可以继续流转,只有在所有活动全部执行成功时,用户才向B校和C校的所有相关协作服务发出业务提交请求,B校和C校相应完成提交操作。如果此时B校和C校的提交过程出现任何错误,用户均将不能完成业务提交,并将通知B校和C校进行相应的补偿操作。此外超时机制[5]确保了在出现各种故障时,用户、B校和C校可以脱离等待状态并释放相关资源。
      1 分校区选课流程的发布及重用
      基于Web服务技术,校区原有业务流程无需改变原有的应用系统,只有在原有系统的前提下,加上一个SOAP接口就可以将现有、用不同技术开发的系统互连起来,提供相应的数据交互和访问操作,从而实现远程、大范围的业务流程集成。图3提供了业务流程发布的模型。
      
      图3 业务流程发布过程
      对于原有的系统,使用适配器将它们表示为Web服务形式,提供SOAP等标准接口,注册到UDDI,对外提供业务流程服务。流程定义和流程管理工具均通过SOAP接口同原有的业务流程进行交互,流程定义工具将负责UDDI和注册服务资源之间的交互。我们以基于服务的WSDL定义构建Web的静态服务客户端,使用EJB和Java Bean接口以及类构建Web服务,Web Logic Workshop通过“Overview”自动提供WSDL定义,任何给出WSDL文件的Web服务都可以被Web Logic Workshop方便地调用[4]。
      2跨校选课流程的执行过程
      (1) 流程定义
      ● 跨校选课事务处理
      分校区选课流程是被跨校选课流程调用的子流程,它以服务的形式发布到服务注册中心,当用户建模需要选取这个服务时,业务流程管理器就把该子流程作为控件添加进主流程。通过初始化与用户交互的任务控件,集成跨校选课Web应用与业务流程管理器中的业务流程。
      业务流程管理器接收带有选课信息的标准Java对象作为参数,然后把Java对象中的数据转换为导入的XSD Schema所代表的通用选课对象。作为处理跨校选课请求的主流程,因为涉及人工交互,因此它的响应时间是不确定的,该流程被认为是一个长时间运行的流程。长时间运行的流程可能会因为响应问题发生无法预计的阻塞,因此针对重大失败需要有故障恢复的能力。
      有状态流程支持那些包括复杂、长时间运行逻辑的场景,为了满足跨校选课一定的可靠性和可恢复需求,通过添加有状态节点、或者强制事务边界的逻辑,可以把一个流程变成有状态的。例如,一个流程首先接受消息,转换消息,发送消息给协同校区,然后等待一个有状态异步响应。为了使Web服务在于客户端的异步通信过程中能够有效地跟踪数据,我们采用Web Logic Workshop中的隐式会话惟一标识某个客户端和web服务之间的通信,并维护操作之间的状态。业务流程管理器与Web服务之间的异步会话代码如下:
      /**
      * @common: operation
      * @common: message-buffer enable="true"
      * @jws: conversation phase="start"
      */
      Public void createOrderAsync (int custID, OrderEntryServiceFolder.OrderInfo order)
      {
      orderEntryService.createOrderAsync (custID, order);
      }
      ● 定制审核逻辑
      经过业务流程管理器与Web服务之间的交互,建立了一个业务流程逻辑。在映射到执行操作之前,只有满足了学分制选课规则的要求,比如专业课和选修课的配比,总学分的要求等,才能执行具体选课业务。我们在业务流程逻辑和应用逻辑之间加入审核逻辑。审批逻辑需要在具体绑定服务之前执行,我们使用建模环境的“前置”处理功能添加定制逻辑,并使用XMLBeans接口来设置数值。添加定制逻辑之后的Java源代码如下:
      // Set the judge priority in the order document
      MyJudgepriority = MyJudgepriority.toUpperCase ();
      MyJudge.getJudge ().setJudgePriority (MyJudgepriority);
      (2) 流程执行
      满足了选课学分的规则之后,进入应用逻辑物理实现阶段,业务流程执行管理器运行,向分校区的所有相关协作服务发出业务提交请求,具体校区相应完成提交操作。因为子流程的执行是并发的,我们在主流程中要实现并发子流程的环节放置Task Node,设置create-tasks="false"、signal="last-wait" 。在Task Node的Node-Enter action中,我们手动为每一个Task创建一个任务实例,同时我们取得Task的名字也就是要并发的子流程的名字,创建流程实例。为每个新创建的流程实例设置流程变量:TaskInstanceID表示创建当前子流程的那个主流程任务实例ID,并使子流程开始流转。子流程结束,取得流程变量TaskInstanceID,该流程变量TaskInstanceID是创建他的那个主流程的任务实例,得到该Task Instance,并TaskInstance.end().这个时候因为我们设置了Task Node的Signal为"last-wait",所以当所有的子流程均结束的时候,主流程才会继续,这样我们也就实现了子流程的并发效果。首先让我们看一下主流程的流程定义:
      
      
      
      
      
      
      
      我们要利用这个Task Node实现并发子流程,create-tasks="true"是为了可以手动控制任务实例的创建,同时创建子流程,signal="last-wait"是为了实现当所有子流程均已完成,主流程才能继续运行的效果
      
      
      要并发的子流程之一
      
      
      要并发的子流程之二
      
      
      
      
      
      
      
      
      
      System.out.println("主流程启动,并设置主流程ID");
      
      
      
      
      System.out.println("主流程结束");
      
      
      
      3 跨校区选课流程的监控和管理
      流程实例监控可以提供完整的信息,并允许管理员终止、修改或挂起有问题的流程,可以前瞻性地监控业务事件并获得自动异常通知,从而提高业务效率。关于业务流程的监控和管理,研究的焦点在于如何将数据或活动状态传给监控者,以及监控信息的图形化显示。而已有的监控方法,只关注个体的可靠执行,对个体间协调引发的不一致状态的监控处理未能提出有效的解决方案。
      我们采用层次型协同监控模型[6],根据执行跨校选课流程的不同实例之间的组织层次关系,派遣不同的监控者实施监控。一个业务流程的多个层次关系如图4所示。通过监控者之间的协调机制实现对异常状态在不同层次的诊断与处理,以保持全局状态的一致。
      
      图4 跨校选课业务流程分解实例
      图4为一个跨校选课流程实例,它分解为5个子业务流程:BP0,BP1,BP2,BP3,BP4。当迁移业务流实例化时,在跨校区层,系统相继派遣5个不同的子流程实例分别负责相应业务流程的执行。当某个任务(如T3)的激活条件满足时,相应的子流程实例执行。为执行一个任务,可同时或依次激活一个或多个子流程实例。如果某个迁移实例的任务全部执行完毕,它将结果返回给其父迁移实例后可先行退出。每个子迁移流程都有相应的监控者,监控者记录所有交互的状态信息,如果某个迁移实例退出,则其监控者将其从持有的协同监控任务中删除,同时更新其上层监控者的协同监控任务视图。下图是流程的实例和实例状态监控截图。
      
      
      
      四 总结
      该系统考虑到校园网各应用系统运行情况良好,为了不影响学校各关键业务应用的正常运行,充分地利用和发现现有资源,采用面向服务的SOA架构,应用间是松耦合的,全校各业务处理和业务信息存储不会集中在单一的服务器和数据库上,而是采用分布式层次型的处理和信息结构,各应用系统拥有其独立的业务数据(资源)库和业务处理,通过信息采集交换平台和信息共享、互操作平台,实现跨校区、跨部门、跨应用的共享互联互通,既能保证信息的全校共享,又符合各业务系统处理分布、信息分布的特性。
      跨校选课系统的安全管理,目前我们实现了基于角色的安全。另外,考虑Web服务的安全性,如何在Web服务之间传递的SOAP消息之上设计安全机制,保证消息在传输过程中以及到达接收方计算机的安全性,是我们下一步的主要工作。另外,系统中存在对静态WSDL文件仅仅提供静态绑定,以及使用资源局限性的问题,如何实现实时业务流程及时发现资
      源,使服务提供者提供的Web服务在异构环境中能够动态加入业务流程。
      ――――――――――
      参考文献
      [1] 许鑫,金莹.高校遗留系统信息整合研究[J].中国教育信息化,2009,1:14-17.
      [2] 李建华,马华,刘星沙.面向服务工作流的分布式业务管理研究[J].计算机工程,2007,33(4):58-63.
      [3] 李文�,邱雪松.基于SOA的IP网管系统间动态协作体系结构[J].通信学报,2008,29(12):81-85.
      [4][EB/OL].
      [5] 李慧芳,范玉顺.工作流系统时间管理[J].软件学报,2002,13(8):1552-1557.
      [6] 卢朝霞,曾广周.面向迁移工作流可靠执行地协同监控模型[J].计算机研究与发展,2009,46(3):398-406.

    推荐访问:选课 设计 系统 服务

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章