我正在使用Optaplanner申请员工排班。没有毅力,一切都很好。现在,我想添加Hibernate集成。我想从MySQL数据库中获取信息,并将其用作时间表输入。
在数据库中,我有位置和技能表。
员工数据、时隙和工作分配现在已在应用程序中硬编码。
我的域类,技能:
import javax.persistence.*;
@Entity
@Table(name = "SKILL")
public class Skill {
private long skillId;
private String name;
public Skill(String name) {
this.name = name;
}
public Skill() {}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "SKILL_ID")
public long getSkillId() {
return this.skillId;
}
public void setSkillId(long skillId) {
this.skillId = skillId;
}
@Column(name = "SKILL_NAME", nullable = false, length=250)
public String getSkillName() {
return this.name;
}
public void setSkillName(String skillName) {
this.name = skillName;
}
@Override
public String toString() {
return name;
}
}
和职位:
import javax.persistence.*;
@Entity
@Table(name = "POSITION")
public class Position {
private long positionId;
private String name;
private Skill requiredSkill;
public Position(String name, Skill requiredSkill) {
this.name = name;
this.requiredSkill = requiredSkill;
}
public Position() {}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "POSITION_ID")
public long getPositionId() {
return this.positionId;
}
public void setPositionId(long positionId) {
this.positionId = positionId;
}
@Column(name="POSITION_NAME", nullable=false, length = 100)
public String getPositionName() {
return this.name;
}
public void setPositionName(String positionName) {
this.name = positionName;
}
@OneToOne(cascade = CascadeType.ALL)
public Skill getRequiredSkill() {
return this.requiredSkill;
}
public void setRequiredSkill(Skill requiredSkill) {
this.requiredSkill = requiredSkill;
}
@Override
public String toString() {
return name;
}
}
不起作用的规则:
rule "Employee works only on positions with skills he has"
when
Assignment(
employee != null,
!getEmployee().getSkillSet().contains(getPosition().getRequiredSkill()))
then
scoreHolder.addHardConstraintMatch(kcontext, -100);
end
我认为数据库还可以,因为其中的数据以前是用这个应用程序创建的。此外,我还有另一个DRL规则正在运行。我没有收到任何警告/错误-只是在求解过程中没有考虑上述规则。
在解决我得到:
08:40:11.453 [main] DEBUG org.drools.core.common.DefaultAgenda - State was INACTIVE is now FIRING_ALL_RULES
08:40:11.453 [main] DEBUG org.drools.core.common.DefaultAgenda - State was FIRING_ALL_RULES is now HALTING
08:40:11.453 [main] DEBUG org.drools.core.common.DefaultAgenda - State was HALTING is now INACTIVE
08:40:11.453 [main] DEBUG org.optaplanner.core.impl.constructionheuristic.DefaultConstructionHeuristicPhase - CH step (1), time spent (134), score (-14init/-202hard/0soft), selected move count (7), picked move (domain.Assignment@4d354a3e {null -> domain.Employee@1511d157}).
此外,在乞讨会上,我收到了以下警告:
Failed to add the foreign key constraint. Missing index for constraint 'FKqx7n7alhjrnaw173dc48i47y0' in the referenced table 'skill'
看看我们是如何在optaweb员工名册中添加JPA-hibernate持久性的。
具体来说,对Shift
类的乐观锁定提供了一个挑战,我们像这样修复了它。
问题内容: 我有一个嵌套的flexbox布局(使用bootstrapv4),可根据横向/纵向模式更改方向。第一层(由flexbox使用该属性放置)包含5个用作按钮的图标。我无法在这些图标上正常使用该属性。 如果我不使用属性,则图标将按照自然顺序进行布局;但是,如果我尝试使用该属性对其进行布局,则无法正常工作。在代码中,()应该是最后一个元素。不是。我可以通过更改源中的顺序来获得所需的顺序。但是,我
更新: 如果我使用注释和路径:/*和/api/*-site可以很好地工作。但是因为我使用全局静态IP,所以我不能为每个IP创建一个以上的入口。如果我使用-site返回错误:
我有一个Firestore集合,结构如下: 但是,当我试图保护集合以只允许上面的快照(而不是对集合中其他文档的请求)时,我的权限是不正确的。这是我尝试过的: 我也试过: 它似乎有效,但不允许我访问文档的子集合。我需要rules方法才能工作。 在我列出答案之前,我会给一些时间,以防更有经验的人有更好的解决方案。
构造函数验证的代码: 如何测试对象: 我不知道为什么JavaScript版本与groovy版本的行为不同,我已经尝试更改了我能想到的所有组合,包括:、、、、和
我试图将我的流程变量放入业务规则任务中,并在该任务中更改该变量,但值保持不变。我做错了什么?流程是在kie工作台中开发的,不使用Eclipse。 在触发规则之前,我的变量在脚本任务中初始化,如 谢谢你的帮助!
在为我的项目实现了一些规则之后,我做了一个“ScoreConsistencyCheck”,以确保规则得到了正确的实现。 表示实现我自己的方法,该方法将在我提前终止求解或通过配置终止后调用,输出预期分数。该方法的参数是一个实例,基于解决方案的状态计算预期分数,然后将其与来自解决方案实例的“分数”变量的分数进行比较。 当我使用时,它不会抛出异常,但是当我这样尝试时,我有时会在构建启发式或本地搜索的特定