public class ConstraintProvider implements
org.optaplanner.core.api.score.stream.ConstraintProvider {
@Override
public Constraint[] defineConstraints(ConstraintFactory constraintFactory) {
return new Constraint[]{
requiredSkillLevelOfEmployeesForShifts(constraintFactory)
};
}
private Constraint requiredSkillLevelOfEmployeesForShifts(ConstraintFactory constraintFactory) {
return constraintFactory.from(Shift.class)
.groupBy(Shift::getEmployee, sum(Shift::getRequiredSkillLevel))
.filter((employee, requiredSkillLevel) -> requiredSkillLevel > employee.getSkillLevel())
.penalize("requiredSkillLevelForShifts",
HardSoftScore.ONE_HARD,
(employee, requiredSkillLevel) -> requiredSkillLevel - employee.getSkillLevel());
}
}
@RestController
@RequestMapping("/api")
public class RostersController {
@Autowired
private SolverManager<Roster, UUID> solverManager;
@PostMapping("/solve")
public Roster solve(@RequestBody Roster problem) {
UUID problemId = UUID.randomUUID();
// Submit the problem to start solving
SolverJob<Roster, UUID> solverJob = solverManager.solve(problemId, problem);
Roster solution;
try {
// Wait until the solving ends
solution = solverJob.getFinalBestSolution();
} catch (InterruptedException | ExecutionException e) {
throw new IllegalStateException("Solving failed.", e);
}
return solution;
}
}
DRL(scorerules.DRL
)和ConstraintProvider
是互斥的。您已经开始使用constraintprovider
实现约束,所以让我们继续使用它,并在其中添加您可能需要的任何新约束。ConstraintProvider
是新的Constraint Streams API的一部分,它允许您在Java中定义约束,并且易于使用ConstraintVerifier
进行测试。
<?xml version="1.0" encoding="UTF-8"?>
<solver>
<solutionClass>com.your.domain.Roster</solutionClass>
<entityClass>com.your.domain.Shift</entityClass>
<scoreDirectorFactory>
<constraintProviderClass>com.your.domain.ConstraintProvider</constraintProviderClass>
</scoreDirectorFactory>
</solver>
我使用testAd ID(ca-app-pub-3940256099942544/1033173712)从admob不是我的admob ID,我需要使用addTestDevice()太,而在移动设备测试?它甚至显示了测试广告屏幕,而不是实时广告。 因为我这样做了,我整天都在使用我的应用程序进行测试,晚上我收到了账户暂停邮件。
上下文:我正在研究SAML服务提供商实现。我们正在实施SAML Web SSO配置文件,其中包含用于生成AuthnRequest的HTTP-ReDirect绑定和用于接受Saml响应的HTTP-Post绑定(Dropbox for Business等流行产品使用的典型设置)。我们的SPendpoint将对网络上的任何人公开访问,我们的断言消费者服务URL是HTTPS。 SAML 规范非常明确地说明
我试图使用扩展EmptyInterceptor的拦截器类从hibernate获取审计记录。我的问题是,hibernate是否自动配置和调用拦截器类中的方法,或者我是否必须在hibernate中进行任何配置。cfg。xml还是任何地方?
问题内容: 我尝试搜索,但没有找到明确的答案。在Windows Server 2016上,没有实际安装Chrome浏览器。我下载了正确的“ chromedriver.exe”并将其放置在“ D:\ Apps \ chromedriver.exe”中。我已将完整路径添加为“ D:\ Apps \ chromedriver.exe”到我的环境PATH中。 当我尝试启动使用最新Selenium的Wind
我想使用新的log4j2-Java日志框架。一切正常,但我从一小时后就尝试加载一个自定义配置文件来配置日志记录(如日志级别)。 这是我的log4j2.xml: 我尝试了以下方法,但没有任何效果: 移动log4j2.xml文件,使其位于默认包中。 将log4j2.xml文件移动到项目中的任意位置 将log4j2.xml文件命名为log4j.xml 在项目中创建一个文件夹,将log4j2.xml文件放
问题内容: 使用JAXB时是否始终需要ObjectFactory类? 没有它,我得到这个异常: javax.xml.bind.JAXBException:“ com.abc”不包含ObjectFactory.class或jaxb.index 我搜集到的ObjectFactory可以说是矫kill过正。但是鉴于这个例外,我猜您需要它。.但不确定为什么吗? 问题答案: 当您使用factory方法时