商信互联
本主题介绍了调度程序模块支持的“资源”功能的概念,描述了调度程序事件和资源如何关联,并详细介绍了如何将资源分配给调度程序事件。
在现实中的调度应用程序中,其中处理大量正在调度的数据,约会(调度程序事件)很少按“原样”处理,但通常分配给不同的资源。资源可以是不同的种类,在特定的调度应用程序中关于什么应该是资源的决定取决于该特定应用程序执行的任务的细节。以下是调度任务的一些示例,说明了这些任务中的约会和资源。
公司。
资源:该公司的每个员工
事件:员工花费在执行特定任务上的任何时间间隔。
汽车租赁公司。
资源:该公司拥有并可供出租的每辆汽车。
事件:租用公司任何汽车的任何时间间隔。
教育中心。
资源:在该中心工作的每个老师,或在该中心的每个教室。
事件:中心老师在任何教室讲课的任何时间间隔。
在后一个示例中,两种或两种资源都是可能的(老师和房间)。但是,调度程序控件不允许事件属于不同性质的资源。因此,为了在调度应用程序中显示此数据,我们建议使用两个不同的事件列表视图。一个事件列表视图可用于将教师显示为资源,另一个事件列表视图可用于将教室显示为资源,但都应绑定到同一数据以确保一致性。
该调度模块工作与实现类DevExpress.Persistent.Base.General.IEvent接口和类实现DevExpress.Persistent.Base.General.IResource接口。为了支持资源功能,IEvent接口公开了ResourceId属性。此属性指定一个XML字符串,其中列出了相关资源的标识符。请注意,调度程序模块支持ResourceSharing策略。因此,可以将多个资源分配给一个事件。下图演示了此概念:
内置DevExpress.Persistent.BaseImpl.Event类,它实现了IEvent接口,具有内置的多对一对多关联DevExpress.Persistent.BaseImpl.Resource类,它实现的IResource接口。事件的IEvent.ResourceId属性中列出了事件的Resources集合中的所有Resource对象。
要在应用程序中使用内置的Event和Resource类,请通过Module Designer将Event类添加到解决方案中的模块。内置的Resource类将自动添加。如果使用DevExpress.Persistent.BaseImpl.Event类的后代,内置的DevExpress.Persistent.BaseImpl.Resource类也将添加到自动UI生成过程中。这使您可以拥有扩展的Event类,但可以将继承的关联与Resource类一起使用。
在运行时,您可以通过显示“资源列表视图”和“详细信息视图”的顺序创建和显示“资源”对象。此外,您可以在“事件详细信息”视图中将所需的资源添加到事件的“资源”集合中:
...在Windows窗体应用程序中:
...在ASP.NET应用程序中:
资源也显示在事件列表视图中。下图显示了如何在事件列表视图中显示两个资源(1和2)的集合:
...在Windows窗体应用程序中:
...在ASP.NET应用程序中:
在此图像中,您可以看到同时使用两个资源的事件。但是,您只能显示所需资源的事件。为此,请使用Scheduler控件右下角的Resource Navigator。它旨在滚动浏览资源,并更改一次在屏幕上显示的资源数量。
要由Scheduler模块支持,Resource类必须实现DevExpress.Persistent.Base.General.IResource接口。业务类库中的内置DevExpress.Persistent.BaseImpl.Resource类实现了此接口。自定义Resource类也必须实现此接口。因此,要实现自定义Resource类,请从内置的DevExpress.Persistent.BaseImpl.Resource类继承,或者从头开始实现IResource接口。您可以在以下位置查看内置Resource类的源:%PROGRAMFILES(x86)%\ DevExpress 19.2 \ Components \\ Sources \ DevExpress.Persistent \ DevExpress.Persistent.BaseImpl \ Resource.cs。
由于内置的Event类与内置的Resource类相关联,因此您将必须实现一个自定义的Event类才能将其与自定义的Resource类相关联。为此,请使用内置Event类的源。它们位于:默认情况下%PROGRAMFILES(x86)%\ DevExpress 19.2 \ Components \\ Sources \ DevExpress.Persistent \ DevExpress.Persistent.BaseImpl \ Event.cs。
必须将用作“计划程序列表编辑器”的资源数据源的对象类型设置为“应用程序模型”的“视图” | “ IModelListViewScheduler.ResourceClass”属性。<ListView>节点:
调度程序模块使用此属性扩展了应用程序模型。如果您有一个在您的应用程序中实现IResource接口的类,则该类将自动分配给该属性。如果您有几个实现IResource接口的类,则可以将它们中的任何一个分配给此属性。否则,将设置第一个找到的类型。