了解项目作业调度中的域类

时间:2014-10-29 04:13:58

标签: optaplanner

我是optaplanner的新手,现在我专注于尝试理解项目作业调度。我尝试使用optaplanner手册中的示例数据来运行这个示例,如下图所示:

enter image description here

我对此示例中的域类有一些疑问:

  1. GlobalResource和LocalResource有什么区别?在示例中,所有资源都是GlobalResource吗?那么LocalResource的用途是什么?
  2. 有3个JobType:SOURCE,STANDARD,SINK,每个人的意思是什么? SOURCE意味着工作应该是第一个在其他工作之前开始的工作? STANDARD意味着它应该在前一个工作完成后运行,而不是在SINK工作之后运行? SINK意味着这是所有工作完成后的最后一项工作吗?
  3. Project类中属性releaseDate和criticalPathDuration的含义是什么?如果我们将它与上面的图片联系起来,项目Book1和Book2的价值是什么?
  4. ResourceRequirement中需求的含义是什么?
  5. 如果有人可以帮助我创建像optaplanner发行版中的xml示例数据,我将非常感激,因为它将帮助我更快地理解这个示例。谢谢&问候。

1 个答案:

答案 0 :(得分:2)

  1. LocalResource属于特定项目,GlobalResource在项目之间共享。 因此,LocalResource只需担心同一项目中的其他作业也会被使用,而GlobalResource必须担心所有其他任务。

  2. 这是一个实施技巧。源和接收器工作基本上是虚拟的。由于项目可能并行启动多个作业,因此将SOURCE作业放在其前面,以获得单个根。同样结束:它可以以多个结束,因此在它之后放置一个SINK作业,以便有一个尾部。这样可以更容易,更快地确定完工时间等。

  3. IIRC,releaseDate是我们开始第一份工作的第一个日期。例如:你必须创建一本书,但是你只能在下周一获得实际的最终内容,所以releaseDate是下周一(你不能在那个日期之前开始任何工作)。

  4. criticalPathDuration是理论上的最小持续时间(如果我们可以愉快地忽略资源IIRC)。例如:如果工作A需要5天而工作B需要2天而B必须在A之后完成,则关键路径持续时间为7天。添加工作C需要1天,并且可以与其他人并行完成,不会影响到这一点。

    1. ResourceRequirement是ExecutionMode和Resource之间的many2many关系。请记住,ExecutionMode属于特定的Job。例如:在执行中执行工作A模式A1需要1个工人和5天。在执行模式A2中执行工作A需要2个工人和3天。