我正在尝试示例项目以了解如何使用 Optaplanner 功能(在 wildfly11 上使用版本 7.11-Final)。我安装了一些内置
employee rostering
示例,当我尝试通过 REST API(使用 SOAP-UI)发布不同的 xml 时,在使用我修改的示例后遇到了一个非常奇怪的错误。
使用以下 xml(摘录)效果很好,我可以毫无问题地提交 xml 并检索调用相关端点的最佳解决方案:
<TeamRoster>
<employeeList>
<Employee>
<name>Luigi</name>
</Employee>
<Employee>
<name>Mauro</name>
</Employee>
<Employee>
<name>Pietro</name>
</Employee>
<Employee>
<name>Gino</name>
</Employee>
</employeeList>
<teamList>
<Team>
<name>Squadra 1</name>
<employeeList>
<Employee reference="../../../../employeeList/Employee"/>
<Employee reference="../../../../employeeList/Employee[2]"/>
</employeeList>
.........
相反,使用以下修改后的 xml(带有 id/reference):
<TeamRoster id="1">
<employeeList id="2">
<Employee id="3">
<id>0</id>
<name>Luigi</name>
</Employee>
<Employee id="4">
<id>1</id>
<name>Mauro</name>
</Employee>
<Employee id="5">
<id>2</id>
<name>Pietro</name>
</Employee>
<Employee id="6">
<id>3</id>
<name>Gino</name>
</Employee>
</employeeList>
<teamList id="7">
<Team id="8">
<id>0</id>
<name>Squadra 1</name>
<employeeList id="9">
<Employee reference="3"/>
<Employee reference="4"/>
</employeeList>
kie 服务器的响应是消息错误:
com.thoughtworks.xstream.converters.ConversionException:引用无效
详细信息:
message : Invalid reference
reference : 3
referenced-type : com.linkit.trostering.Employee
referenceable : true
class : java.util.ArrayList
required-type : java.util.ArrayList
converter-type : com.thoughtworks.xstream.converters.collections.CollectionConverter
path : /TeamRoster/teamList/Team/employeeList/Employee
line number : 25
class[1] : com.linkit.trostering.Team
converter-type[1] : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
class[2] : com.linkit.trostering.TeamRoster
version : 7.11.0.Final
我已经看到 optaplanner 示例项目中包含的其他示例使用此选项(如果我理解它是 xtream 功能)来引用已经使用 id 而不是 xml 路径定义的事实。
现在我怀疑带有 kie 服务器的 Optaplanner wb 是否附带 xstream 不同的设置?是否有任何选项必须通过 REST 发送才能使用 xtream 的此功能?还有什么别的吗?
提前感谢您提供的任何帮助,非常感谢