Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在使用springboot optaplanner spring boot starter时,如何使用多个ConstraintProviders_Java_Spring Boot_Optaplanner - Fatal编程技术网

Java 在使用springboot optaplanner spring boot starter时,如何使用多个ConstraintProviders

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

optaplanner spring boot starter会自动发现containtProvider,而无需solverConfig.xml,因此,如果我们想针对不同的问题使用多个contrantProvider,例如 问题A需要使用problemAContraintProvider,问题B需要使用ProblemBContractProvider,是否有任何类型的注释可以使用,并告诉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),
    
                };
    }
}

简而言之,答案是否定的;与中的答案类似,每种类型的规划问题都需要一个新的解算器配置,该配置定义了
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缺口