现在,向日葵甘特的开发已经有了一段时间了,在这一段时间之中,我们积累了很多相关的经验和设计上的理解,这一些内容使我们的产品结构渐渐的清晰稳定下来,我们知道,不仅仅我们在开发之中需要这些内容,用户在使用我们的甘特图的时候,也需要比现在更加能理解我们的甘特图的原理和实现,因此,从现在开始,我们将渐渐的发布系列文章《理解向日葵甘特》,供大家开发时候的参考。
这一系列文章将从数据的开始,一直讲解到最后的实现,你对该系列文章的反应将会影响到我们是否长期的进行这样的内容分享。
这次讲解的内容是向日葵甘特的主体数据结构,向日葵甘特图按照一般的设计思路,支持以下四种数据实体:任务,资源,链接,资源分配,下面我们将逐个的讲解:
1.任务,这个实体在甘特图数据结构之中是一种标准的树形结构,每个项目有一个根任务,根任务是代表整个文档的任务,通常不能给该任务分配资源和添加链接,也不会显示在甘特图之中,每个项目应该有且仅有一个根任务。每个任务可以有多个链接,多个资源分配;
2.资源,这个实体在甘特图数据结构之中也是一种标准的树形结构,和任务类似,也有一个根资源,同样,根资源不能被分配,每一个资源可以有多个资源分配对象;
3.链接,这个实体用来代表任务和任务之间的关系,仅仅是一个没有顺序的列表;
4.资源分配,这个实体用来描述任务和资源质检的关系,也是一个没有顺序的列表;
根据以上的描述,我们可以绘制出如下格式的数据结构示意图:
这个示意图比较清晰的说明了以上四种数据实体之间的关系,现在,我们再了解一下每个实体的属性,虽然实体的属性可以灵活的使用,不过有一些属性是用来描述各个实体之间的关系的(下面称为结构属性),这些属性必须严格按照要求进行设置,还有一些是在后面的甘特图显示和操作之中约定使用的属性(下面称为约定属性),这些属性最好也按照约定的模式进行处理,否则部分功能可能受到影响。
我们先看看各个实体的结构属性列表
类型 | 属性字段名称 | 属性类型 | 属性描述 |
任务 | UID | 字符串 | 用来唯一的标识一个任务,每个任务必须有UID而且互不相同,不会改变 |
任务 | Summary | 布尔值 | 用来代表该任务是不是有子任务,有子任务时该项必须为True |
资源 | UID | 字符串 | 用来唯一的标识一个任务,每个任务必须有UID而且互不相同,不会改变 |
资源 | Summary | 布尔值 | 用来代表该任务是不是有子资源,有子资源时该项必须为True |
链接 | UID | 字符串 | 用来唯一的标识一个任务,每个任务必须有UID而且互不相同,不会改变 |
链接 | PredecessorUID | 字符串 | 该链接前置任务的UID |
链接 | SuccessorUID | 字符串 | 该链接后置任务的UID |
资源分配 | UID | 字符串 | 用来唯一的标识一个任务,每个任务必须有UID而且互不相同,不会改变 |
资源分配 | TaskUID | 字符串 | 分配任务的UID |
资源分配 | ResourceUID | 字符串 | 所分配资源的UID |
以上的这些字段由于是用来描述实体之间的关系,非常重要,必须严格按照内容提供数据。
当然,下面的字段也并非不重要,因为要实现甘特图的功能,也要按照标准来使用,否则,甘特图的显示可能会不正常,在这里我们也列出甘特图之中目前所有支持的约定字段名称,这个列表可能会随着需求的增加而更改。
类型 | 属性字段名称 | 属性类型 | 属性描述 |
任务 | ID | 整数 | 这个字段代表任务的顺序号,实际上,因为甘特图的内容是分块加载的,考虑到性能问题,默认情况下甘特图变化的时候并不维护此字段的更新 |
任务 | OutlineNumber | 字符串 | 代表任务的大纲数字,实际上,因为甘特图的内容是分块加载的,考虑到性能问题,默认情况下甘特图变化的时候并不维护此字段的更新 |
任务 | OutlineLevel | 整数 | 代表任务的大纲级别,实际上,因为甘特图的内容是分块加载的,考虑到性能问题,默认情况下甘特图变化的时候并不维护此字段的更新 |
任务 | Start | 日期时间 | 代表任务的起始时间,默认情况下甘特图会维护概要任务的起止时间和所有的子任务的起止时间一致,可以拖动甘特图上的任务条更改此属性 |
任务 | Finish | 日期时间 | 代表任务的结束时间,默认情况下甘特图会维护概要任务的起止时间和所有的子任务的起止时间一致,可以拖动甘特图上的任务条更改此属性 |
任务 | Name | 字符串 | 代表任务的名称,在任务甘特图列表框可以编辑更改此属性 |
任务 | ReadOnly | 布尔值 | 代表该任务是否只读,如果设置为true,在甘特图的操作之中将会不允许对该任务进行操作*1 |
任务 | PercentComplete | 整数 | 0-100的数字,代表任务的完成进度,拖动甘特图上的任务条可以更改此属性 |
任务 | Notes | 字符串 | 任务的说明文字 |
任务 | ConstraintType | 整数 | 任务的限制类型,从0-7的整数,分别代表'越早越好','越晚越好','必须开始于','必须完成于','不得早于...开始','不得晚于...开始','不得早于...完成','不得晚于...完成' |
任务 | ConstraintDate | 日期时间 | 任务的限制时间,此属性和ConstraintType属性一起使用默认会显示在甘特图的图标列里面 |
任务 | ActualStart | 日期时间 | 实际开始时间 |
任务 | ActualFinish | 日期时间 | 实际结束时间 |
任务 | Hyperlink | 字符串 | 超级链接的文本,此属性默认会显示在甘特图的图标列里面 |
任务 | HyperlinkAddress | 字符串 | 超级链接的URL地址,此属性默认会显示在甘特图的图标列里面 |
任务 | ClassName | 字符串 | 任务的显示样式,将影响任务在图中的样式 |
任务 | Collapse | 布尔值 | 该任务(概要任务)是否被折叠,点击概要任务名称之中的+-图标可以更改此属性 |
任务 | LineHeight | 整数 | 该任务显示行高的像素值,在任务列表中拖动任务之间的分隔条可以调整该值 |
任务 | Critical | 布尔值 | 代表该任务是否是关键任务 |
任务 | BaselineStart | 日期时间 | 跟踪甘特图的起始时间 |
任务 | BaselineFinish | 日期时间 | 跟踪甘特图的结束时间 |
资源 | Name | 字符串 | 代表资源的名称,在资源甘特图列表框可以编辑更改此属性 |
资源 | ID | 整数 | 这个字段代表资源的顺序号,实际上,因为甘特图的内容是分块加载的,考虑到性能问题,默认情况下甘特图变化的时候并不维护此字段的更新 |
资源 | OutlineNumber | 字符串 | 代表资源的大纲数字,实际上,因为甘特图的内容是分块加载的,考虑到性能问题,默认情况下甘特图变化的时候并不维护此字段的更新 |
资源 | OutlineLevel | 整数 | 代表资源的大纲级别,实际上,因为甘特图的内容是分块加载的,考虑到性能问题,默认情况下甘特图变化的时候并不维护此字段的更新 |
资源 | ReadOnly | 布尔值 | 代表该资源是否只读,如果设置为true,在甘特图的操作之中将会不允许对该任务进行操作 |
资源 | Notes | 字符串 | 资源的说明文字 |
资源 | ClassName | 字符串 | 资源的显示样式,将影响资源在图中的样式 |
资源 | Collapse | 布尔值 | 该资源是否被折叠,点击资源名称之中的+-图标可以更改此属性 |
资源 | LineHeight | 整数 | 该资源显示行高的像素值,在资源列表中拖动资源之间的分隔条可以调整该值 |
链接 | Type | 整数 | 0-3的整数,分别代表 '完成-完成(FF)','完成-开始(FS)','开始-完成(SF)','开始-开始(SS)' |
资源分配 | Units | 浮点数 | 0-1的小数,代表资源的分配比例 |
*1:关于任务的只读:虽然任务被设置为只读理论上讲意味着所有的属性都不能更改,实际上对有些属性的更改并没有没有受到只读的限制,而这个属性的列表是允许配置的。
以上就是目前甘特图支持的所有的字段列表(该列表可能随时变化),我们建议对于类似的功能,尽量严格采用我们定义的字段和格式,我们没有定义的字段,可以灵活的自己定义。
本文介绍的全部内容就是向日葵甘特图的基础数据结构,在后面,我们将要介绍怎么去使用和实现这些数据。
基于AJAX的向日葵甘特图组件
官方网址: http://www.51diaodu.cn/ (我要调度网) 向日葵甘特图组件交流群: 63867839
英文网站: http://www.sfgantt.com/