我目前正在为共享一些资源的任务构建一个调度应用程序。每个任务可能使用一定百分比的资源。
我需要在Drools规则中检查的是每个共享资源不被并行任务使用超过100%。
因此代码看起来如下所示:
@Data
public class Resource {
@PlanningId
private Integer id;
private String label;
}
public class ResourceUsage {
@PlanningId
private Integer id;
private Resource resource;
private int usagePercent;
}
要计划的实体
@Data
@PlanningEntity
public class TaskAssignment {
@PlanningId
private Integer id;
@PlanningVariable(valueRangeProviderRefs = { "slotRange" })
private Integer timeSlot;
private int duration;
private ResourceUsage resourceUsage;
public Integer getEndingSlot() {
return timeSlot + duration;
}
}
最后是解决方案
@Data
@PlanningSolution
public class PlanningSolution {
@PlanningId
private Integer id;
@PlanningEntityCollectionProperty
private List<TaskAssignment> tasks = new ArrayList<>();
@ValueRangeProvider(id = "slotRange")
public CountableValueRange<Integer> getSlotRange() {
return ValueRangeFactory.createIntValueRange(0, 10_000);
}
@ProblemFactCollectionProperty
private Set<Resource> resources = new TreeSet<>();
}
有没有办法或者我必须切换回我的时隙课程?
编辑:包含在一种阴影规划实体中的阴影变量能起到这个作用吗?
我终于找到了一种方法来编写一个规则,它允许我避免在时隙中迭代。其思想是在赋值的开头计算使用情况
rule "Maximum usage of a resource"
when
$r : Resource()
$p : TaskAssignment($id1 : id, $ts : timeSlot != null,
resourceUsage!.ressource==$r,
$usage : resourceUsage!.usagePercent);
accumulate(TaskAssignment(timeSlot != null, timeSlot <= $ts,
endingSlot > $ts, id != $id1,
resourceUsage!.ressource==$r,
$rate : resourceUsage!.usagePercent);
$s:sum($rate);
$s + $usage > 100)
then
scoreHolder.addHardConstraintMatch(kcontext, 100-($s + $usage));
end
我想禁用Sonar的规则,这样它就不会在网页中显示结果。在我的例子中,我想隐藏(或不捕获)关于尾随注释的结果。 是否可以在某处配置它? 谢谢。
问题内容: 如何在CSS中使用多于规则的内容? 我已将其插入样式表中: 当前,这仅适用于网站上的整个文本。但是,我想指定使用其他字体。我怎样才能做到这一点? 问题答案: 其中包括您在下面看到的CSS的更具描述性的细分(并说明了使它在IE6-9上更好地工作的调整)。
我在试着处理drools中的列表。我正在传递一个请求,其中包含一个购买列表。我想做几个规则,包括检查大小是否正确,然后如果所有元素都相同,如果所有购买都经过授权。。。我有以下代码,但在使用列表时遇到了问题。这是正确的方法吗?尤其是在检查尺寸时?
在JUnit 4.10及更低版本中,可以将规则注释为@规则和@ClassRur。这意味着规则会在类之前/之后以及每次测试之前/之后被调用。这样做的一个可能原因是设置一个昂贵的外部资源(通过@ClassRur调用),然后廉价地重置它(通过@Rur调用)。 从JUnit 4.11开始,@规则字段必须是非静态的,@ClassRule字段必须是静态的,因此上述操作不再可行。 有明确的变通方法(例如,明确地
我正在使用drools引擎构建一个预警系统。当条件满足时,我们需要在规则(RHS)的操作上执行由Spring Framework实例化的@Service方法。 让Spring框架创建的@service实例被Drools规则的操作(RHS)使用的方法是什么? 我遵循了以下指示: 使用表单导入功能(Rule1.drl)。此解决方案不起作用,因为该类是在drools中实例化的,需要执行静态方法 关于如何
选择器使用规则 1. 可以使用 * 通用选择器。 * 通用选择器效率低是一个误区,如有必要可以使用。测试文章关于css通配符性能问题不完全测试 例如: * { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } 2. 不要在选择器末尾使用 * 通用选择器。 CSS