ccidnet????

出版日期:2005-06-06 总期号:1417 本年期号:40

本期导读
要闻综合
中国信息化
网络与通信
产品与应用
渠道与市场
华东专刊
华南专刊
西北专刊
ILOG Views for .NET技术介绍(下篇)
Gantt for .NET


  (接上期)

  三、Gantt for .NET

  的一般框架

  ILOG Gantt for .NET是基于ILOG Views for .NET框架之上的这样一个类库:它对于显示与时间相关的信息,对于资源和任务的进程调度处理提供了强大支持的类库。

  1. 基于MVC模式的变形,V-C的捆绑,与M的分离:

  上篇中已经介绍过, Gantt for .NET是基于MVC模式的一种变形,称为Model-View Separation。在这种设计方式中,Model管理图表组件的数据,是底层的数据模型;View与Control结合在一起,管理着Model中数据的图形表示,在Gantt中这种设计模式可以清楚地区分数据模型和数据表示。

  Gantt for .NET最顶层的组件有三大类:任务进度图——Gantt Chart(也即甘特图)、资源调度图——Schedule Chart、甘特数据模型(Gantt Data Model),它们之间的关系如图1所示。

  前两大类负责控制与显示,其大致的功能已经在上篇中阐述过,此处不再重复。

  2. 甘特数据模型(Gantt Data Model):

  · IGanttModel :数据模型里最主要的接口。它表现为其它代表时间调度型数据的抽象接口的一个容器。该接口包括了创建各种数据实体的方法:activities, resources, constraints和reservations。当数据模型中的某部分被修改时,该接口就负责触发相应的事件。

  · IActivity :代表了在时间进度上要执行的某个任务。分级显示,任务可以包含子任务。至少有一个孩子的任务称为父任务。相反的,只有父任务的任务称为叶任务。每个任务都必须是能够惟一识别的。

  · IActivityCollection:Activities的集合。

  · IResource :表示能够被分配给一个任务使之完成的资源。同 IActivity 一样,也是分级显示,有父、子、叶资源之分,每个资源都必须能够惟一识别。

  · IResourceCollection:Resources的集合。

  · IConstraint :表示任务之间的约束。

  · IConstraintCollection:Constraints的集合。

  · IReservation :表示资源到任务的分配关系,为任务而预留的资源。

  · IReservationCollection:Reservations的集合。

  图2表示了Gantt Data Model的各个接口及接口之间的对应关系。

   任务进度图——Gantt Chart(也即甘特图)、资源调度图——Schedule Chart及其他的控件所显示的图表都是由接口IGanttModel定义的,这个接口定义了全部的数据模型。而IGanttModel中的各接口,又可以独立于整个数据模型的其它部分单独使用。例如,可以直接使用IGanttModel中的Activity,作为底层数据提供给界面上的GanttTable。这种方式提高了开发效率,同时又使得Gantt for .NET有了更大的使用空间。

  3. 数据源的读取

  数据模型IGanttModel对数据源的读取,有两种方式:XML和ADO.NET。

  在Gantt for .NET中,并非直接读取XML数据,而是通过另外的一种格式:SDXL。SDXL 是XML的一个应用,因此,可以很容易与其它基于XML的程序交互。与时间调度有关的数据被存入SDXL文件,并且也可从中读出保存至Gantt Data Model。

  如果要使用的数据与时间调度有关,而且是和数据库相连的,那么程序总是要很依赖于系统资源。SDXL 能很好地帮助区分这种数据,不需要与数据库相连,就能在SDXL文件中很轻易地使用与时间调度有关的数据。同时,当你使用ILOG Gantt for.NET时,你能够更加高效地操作与时间调度有关的数据, 并且通过Gantt for .NET很快地将这些数据显示出来。

  ADO.NET为分布式数据共享型应用程序提供了大量优秀的组件,Gantt for .NET又提供了一部分的类与ADO.NET整合起来,使得对于与时间调度有关的数据的访问变得更加便捷。

  Gantt for .NET提供了甘特数据模型适配器(Gantt Model Adapter),与ADO.NET中的DataAdapter所起到的桥梁的功能类似,Gantt Model Adapter用来将DataSet中的数据装载到Gantt Data Model中或将Gantt Data Model中的数据放入DataSet中。典型的Gantt Data Model与数据库的操作如下:

  · 从数据库读出数据:

  用ADO.NET Data Adapter将数据库中的内容读入内存中的DataSet,再使用Gantt Model Adapter将DataSet中的数据装载到Gantt Data Model中。

  · 修改Gantt data model:

  使用Gantt data model 所提供的API, 或者直接使用Gantt for .NET 所提供的数据控制功能,来修改Gantt data model。

  · 写回数据库:

  使用Gantt model adapter将Gantt data model中的数据装入内存中的DataSet,再使用ADO.NET data adapter将DataSet中的数据更新相应的数据库。(见图3)

  四、使用Gantt for .NET开发

  1.运用Gantt Chart组件的实例:

  通过Gantt for .NET中Control与View的捆绑,就可以快速得到一个最简单的应用程序。主要分以下三个步骤:

  (1)创建任务进度图——Gantt Chart显示控制数据,选择SimpleGanttModel控件作为应用程序的数据模型,选择GanttModel XmlSerializer控件作为SDXL文件读出数据的装载器。

  (2)将提供甘特图表显示数据的模型设置为甘特数据模型(SimpleGanttModel)。

  (3)通过GanttModelXml Serializer将XML数据装入甘特数据模型。

  在这个简单的应用程序里,使用了GanttDataModel连接数据源,并通过IActivities接口提供给Gantt Chart显示。由于Gantt Chart的面向任务的特性,只需要导入部分数据,体现了“按需导入”的机制,提高了运行效率。

  2. 运用Schedule Chart组件的实例:

  实例运用Schedule Chart(资源调度图)查看资源利用的情况,同时,利用LoadChart同步显示资源的负载度情况。主要分为以下五个步骤:

  (1)创建资源调度图——Schedule Chart和甘特数据模型(SimpleGanttModel)。

  (2)将提供资源调度图表显示数据的模型设置为甘特数据模型(SimpleGantt Model)。

  (3)通过GanttModelXml Serializer将XML数据装入甘特数据模型。

  (4)创建一个资源负载度表(Load Chart)。

  (5)将资源负载度表的位置、显示时间段、显示资源与Schedule Chart同步起来。

  上面的两个例子虽然简单,但是已经可以从中看到ILOG Gantt for .NET所具有的强大功能。通过简单而高速的开发,就能完成形式规范、执行高效的应用程序,这就是ILOG Gantt for .NET。

   (供稿:上海浦东软件平台有限公司http//www.sprt.com.cn;ILOG公司:http//www.ilog.com)

  

  图1 组件关系图

  

  图2 接口对应关系图

  

  图3 数据源的读取