
| 出版日期: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 数据源的读取 |
|||||||||||||||||||||