• FlexGantt 是当前 Java 中 先进的甘特图解决方案。FlexGantt 使用一个很高的抽象层次,能适用于多样的、通常是不同的域,例如 ERP 系统、生产计划和调度程序、制造执行系统或项目公文管理程序。这些使得 FlexGantt 能从其他有局限性的项目计划(资源、人、任务)甘特图库中脱颖而出。

     

     

    特征综述 About Feature

     

    模型视图控制器:
    FlexGantt 遵从与 Swing 相同 MVC 方法。许多不同的模型用于各种各样的用途。一个日历模型跟踪假日和周末。一个页面模型支持使用者加载不同的计划范围,一个书签模型存储了应用程序和用户自定义书签。然而,首要的模型是甘特图,它为甘特图组件提供数据。它是树状图模型的延伸,因此它能在甘特图的左手边填上数据(左手边是树状图)。它同样返回成为时间线的对象显示在右手边时间线的下方。时间线对象代表活动、工作、事件、重要事件,甚至任何可以放在时间线上的事情,因为它可以被连接到时间点或时间区。下面的图片显示了甘特图模型的结构。

    分屏/双甘特图
    几乎所有计划和调度程序都需要在水平卷动时保持两个不同模型或同一模型内两个不同部分的数据一致。FlexGantt 框架包括一个双甘特图可以实现上述目标。用户可以在任何时间分割/取消分割甘特图。水平分割线能用于调整上下两部分大小。时间线对象可以从一个拖至另一个。

    书签:
    用户日益习惯于书签的概念。FlexGantt 同样支持它们,而且用户可以使用它们来快速调整时间线设置,这样一个特定的时间点、间隔和范围会被显示在甘特图上。定义过的书签被列在菜单的导航控件中。当用户点击菜单按钮时,如果控制键被按下,将会显示被标签的时间间隔的小预览图片。

    层:
    FlexGantt 使用独特的层方法,该方法因在图片和绘图程序中的使用而闻名。每个甘特图由两个层集合组成,系统层集合提供核心功能(例如绘制垂直网格线),另一个层集合绘制时间线对象(活动、事件、重要事件)。下面的图片显示了层栈。程序可以增加任意多的时间线对象层,可以容易地一次完成分组对象、显示/隐藏的功能。层同样支持透明化,因此层叠时间线对象能够容易地被识别。

    拖放网格:
    时间线对象可以被水平拖动、缩放和垂直拖动。一个可见网格能被拖放操作激活,所以时间线对象可以更容易地被放置在特定时间。网格由策略控制,意味着任何种类的网格都可以被完成。可以设置默认网格策略使得时间线对象可以吸附到从千年、百年、十年、年、月、星期、日以至于毫秒的任何时间。

    策略控制行为:
    调度程序在显示信息、编辑数据、响应用户交互方面有着千差万别。FlexGantt 的策略框架能够根据这些不同而被用于设定相适应的甘特图。策略是小的决定者,通常不包含很多的代码。它们同样是无状态的。在许多情况下,它们仅仅返回标记(booleans)和命令。标记用作控制程序流,而命令被用作实现实际的数据修改(通过一个包含撤销和恢复的命令栈)。

    可插入显示和编辑器:
    Swing 定义了许多显示和编辑类用作它的用户界面组件,例如树、表格或列表。FlexGantt 与之相同,定义了树表单元、列头、弹出、日期线模型、时间线对象、事件线对象的显示。时间线对象编辑器在甘特表左手边的透明窗口里显示(见下图)。

    弹出/注释:
    时间线下方的栏是显示一个事件的好区域,但是由于空间限制,它只能显示有限的信息。当鼠标指针悬停在这一栏上,显示弹出/注释是一个很好的特性,这样就能显示足够多的信息,提供给计划者用作制订调度决定。FlexGantt 的弹出可以与 Swing 组件一样被自定义。不同的显示可以被映射到不同种类的弹出对象。弹出对象由特定的弹出策略导出。下面的图片显示了默认的弹出显示,它显示了序列化形式的弹出对象。

    打印:
    甘特表显示的计划是一份文档,而任何文档都应该能打印。内建的打印支持使得用户指定需要打印的时间范围和间隔(见下图)。结果表可以被打印成具有多页的宽度和高度。

    关系:
    时间线对象之间具有某种关系是很普遍的。例如项目计划软件通常在它们之间定义约束。一些约束的例子:“在……之后开始”,“在……之前完成”,“同时开始”,“同时完成”。FlexGantt 通过绘制它们之间的线条来显示关系。每个程序有自己的显示方式(不同的约束有不同的颜色和/或不同的线风格)。通过插入自定义关系显示,可以实现任何种类的关系显示。

    懒载入:
    根据应用程序类型,需要显示的数据量可能十分庞大。在这种情况下,只有使用“懒载入”方法,用户界面才可以迅速和有较快响应。“懒载入”意味着数据只在用户真正需要时,从服务器(或数据库)传到客户端。FlexGantt 从 底层设计支持懒载入。例如:实现树表展开监听界面的对象将在树展开前收到一个事件,这样,父节点的子节点可以被载入。页面模型是另一个支持懒载入架构的例子。

    命令框架:
    FlexGantt 提供一个小但强大的命令框架。它被用来支持编辑操作的撤销和恢复。命令框架包含命令、命令栈、命令栈监听器和进度监视器。命令通过甘特表被执行、撤销和恢复,甘特表内部使用一个可置换的命令栈。为了保证用户界面的相应,命令在自己的线程中进行。命令栈事件在命令执行时被提交。进度监视器用来显示命令的进度。子进度监视器用来监视包含其他许多命令的混合命令。一旦一个命令结束执行,它将被加入到命令栈的撤销列表中。当一个命令被执行而无法撤销时,这一列表将被清空。命令框架使用一个高级抽象层次,这一已存在的命令架构(传统代码)可以被重用。

    页面:
    如果一个调度程序需要处理大量的时间线对象,分割时间线到若干页/时间跨度是有必要的。这一方式将数据分为小块,甘特表可以更加容易地处理。页模型处理单独的页面。可以在当前页、前一页、后一页、首页和尾页查询。用户界面提供一个控件用于选择单独页面。

    可变行高:
    FlexGantt 图的每行可以有自己的高度。这样特性在树表节点代表不同类型的对象或一个量与每个节点相关联是十分有用。在此情况下,行高可以反映这样量(例如一个资源的容量)。

    多行排序:
    甘特图左手边的树表支持多行排序,意味着用户可以同时选择多个树表列,表中数据将基于此选择排列。 FlexGantt 使用快速排序算法进行排序,支持升/降序排列。

    可自定义时间线:
    每个程序有着对时间线的自定义的特殊要求。一些需要在日期旁显示周数,另一些则需要显示天数(例如“第241天”)。时间线可以灵活设计。它的模型可以被替换,它的显示可以被替换,甚至整个时间线可以被替换为自定义子类。

    日历模型:
    日历模型提供甘特图中有关周末、假日、或任何特殊时间范围的数据。日历模型的入口显示在整个层容器的高度(右手边)。 显著的使用日历模型的例子是对周末的定义。周末的背景将会以灰色显示。

    自动卷动:
    如果 FlexGantt 图频繁更新它的“现在时间/系统时间”,有时使程序注意这样时间是有必要的。当自动卷动被激活,现在时间光标(垂直虚线)将提留在层容器的中央,即使时间流逝。当程序具有更多监视功能而不是交互调度功能时,这是一个非常有用的特性。

    多线:
    多线特性使得甘特表在同一行上下显示时间对象。这样原可能互相重叠的时间线对象可以正常显示。

    产品实际效果截图:
    点击查看大图

    点击查看大图

    点击查看大图

    点击查看大图

    点击查看大图

    点击查看大图

    点击查看大图