optaplanner spring boot starter会自动发现contraintprovider,而不需要solverconfig.xml,因此如果我们要为不同的问题使用多个ConstantProvider,例如问题a,需要使用ProblemAcontrantProvider,问题b,需要使用ProblemBContrantProvider,是否有任何类型的注解我可以使用并告诉SolverManager使用特定的constraintprovider实现
public class ProblemAConstraintProvider implements ConstraintProvider {
@Override
public Constraint[] defineConstraints(ConstraintFactory constraintFactory) {
return new Constraint[] {
typeMatch(constraintFactory),
timeSlotMatch(constraintFactory),
};
}
}
public class ProblemBConstraintProvider implements ConstraintProvider {
@Override
public Constraint[] defineConstraints(ConstraintFactory constraintFactory) {
return new Constraint[] {
checkId(constraintFactory),
};
}
}
2条答案
按热度按时间gv8xihay1#
简单的回答是否定的;与springboot optaplanner中的答案类似,我们是否可以使用多个@planningsolution类和多个solvermanager,每种类型的规划问题都需要一个新的解算器配置来定义
constraintProviderClass
.这个
optaplanner-spring-boot-starter
仅支持单个解算器配置,因此仅支持单一类型的规划问题。d6kp6zgx2#
您需要添加一个
solverConfig.xml
重写查找ConstraintProvider
上课(然后禁食失败,因为它发现了两个)。添加
src/main/resources/solverConfig.xml
(可以使用in application.properties定制文件位置)并使其包含以下内容:但正如radovan所指出的:我们还不支持在同一个spring boot应用程序中进行多个solvermanager/solverconfig注入。这是一个api缺口。