Optaplanner 7.11: ошибка идентификации / ссылки при отправке xml для решения проблемы на kie-сервере - PullRequest
0 голосов
/ 03 октября 2018

Я пробую примеры проектов, чтобы понять, как использовать функции Optaplanner (используя версию 7.11-Final на wildfly11).Я установил несколько встроенных примеров и теперь столкнулся с очень странной ошибкой после использования измененного мной образца employee rostering, когда я пытаюсь опубликовать другой xml через REST API (используя SOAP-UI).

Использованиеследующий 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 (с идентификатором / ссылкой):

        <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.

Теперь я сомневаюсь, что Optaplanner wb с сервером kie поставляется с другими настройками xstream?Есть ли какая-либо опция, которую необходимо отправить через REST, чтобы использовать эту функцию xtream?Любая другая вещь?

Заранее спасибо за любую помощь, которая очень ценится

1 Ответ

0 голосов
/ 03 октября 2018

Ваш первый xml использует ссылки XPath.Ваш второй xml использует ссылки id.Второй требует другой настройки XStream:

xStream = new XStream();
xStream.setMode(XStream.ID_REFERENCES);
...