Java 在使用springboot optaplanner spring boot starter时,如何使用多个ConstraintProviders
optaplanner spring boot starter会自动发现containtProvider,而无需solverConfig.xml,因此,如果我们想针对不同的问题使用多个contrantProvider,例如 问题A需要使用problemAContraintProvider,问题B需要使用ProblemBContractProvider,是否有任何类型的注释可以使用,并告诉SolverManager使用特定的ConstraintProvider实现Java 在使用springboot optaplanner spring boot starter时,如何使用多个ConstraintProviders,java,spring-boot,optaplanner,Java,Spring Boot,Optaplanner,optaplanner spring boot starter会自动发现containtProvider,而无需solverConfig.xml,因此,如果我们想针对不同的问题使用多个contrantProvider,例如 问题A需要使用problemAContraintProvider,问题B需要使用ProblemBContractProvider,是否有任何类型的注释可以使用,并告诉SolverManager使用特定的ConstraintProvider实现 public class Pro
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),
};
}
}
简而言之,答案是否定的;与中的答案类似,每种类型的规划问题都需要一个新的解算器配置,该配置定义了
constraintProviderClass
optaplanner spring boot starter仅支持单个解算器配置,因此仅支持单一类型的规划问题。简短回答是否;与中的答案类似,每种类型的规划问题都需要一个新的解算器配置,该配置定义了
constraintProviderClass
optaplanner spring boot starter
仅支持单个解算器配置,因此仅支持单一类型的规划问题。您需要添加一个solverConfig.xml
来覆盖查找ConstraintProvider
类的默认行为(然后由于找到两个类而导致禁食失败)
添加src/main/resources/solverConfig.xml
(可以使用in-application.properties定制文件位置),并使其包括以下内容:
<solver>
<scoreDirectoryFactory>
<constraintProviderClass>...FirstConstraintProvider</>
</scoreDirectoryFactory>
</solver>
…第一约束提供者
但正如Radovan指出的:我们还不支持在同一个Spring Boot应用程序中进行多个SolverManager/solverConfig注入。这是一个API缺口。您需要添加一个
solverConfig.xml
来覆盖查找ConstraintProvider
类的默认行为(然后由于找到两个类而导致禁食失败)
添加src/main/resources/solverConfig.xml
(可以使用in-application.properties定制文件位置),并使其包括以下内容:
<solver>
<scoreDirectoryFactory>
<constraintProviderClass>...FirstConstraintProvider</>
</scoreDirectoryFactory>
</solver>
…第一约束提供者
但正如Radovan指出的:我们还不支持在同一个Spring Boot应用程序中进行多个SolverManager/solverConfig注入。这是一个API缺口