首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Optaplanner 7.9.0无法解组调用REST API时出现输入字符串错误

Optaplanner 7.9.0无法解组调用REST API时出现输入字符串错误
EN

Stack Overflow用户
提问于 2018-08-07 23:10:22
回答 1查看 518关注 0票数 0

大家好,我是optaplanner的新手,所以在wildfly 11上安装了kie-wb和kie-server (7.9)的最新版本后,我正在尝试示例项目,以了解如何使用Optaplanner的功能。我安装了两个内置示例: optaCloud和Employee_rostering示例。首先,一切正常,安装、配置和部署到kie-server,并在REST客户端上使用SOAPUI调用rest api进行得很好(同时提交xml|json样本数据作为解决方案)。

对于第二个,安装和部署也是可以的,但是主要的问题是在官方文档中没有样本数据(xml|json),通过post提交给求解器以请求解决方案。

经过谷歌搜索,我终于在红帽网站(Employee Rostering sample)上找到了这篇文章……阅读这些内容,我可以看到它与我上面使用的kie-wb示例项目"Employee_rostering“中的示例(数据模型、数据对象和drl规则)是相同的。因此,我尝试使用本文中的xml数据示例向求解器提交解决方案请求。问题似乎出在这个xml示例数据上,实际上,当我使用此xml作为主体使用SOAPUI提交rest请求时,kie-server的响应是带有主体的500 Internal Server Error

代码语言:javascript
复制
<data contentType="text/plain;charset=UTF-8" contentLength="2950">
  <![CDATA["Unexpected error during processing: Can't unmarshall input string: 
    <employeerostering.employeerostering.EmployeeRoster>
        <employeeList>
          <employeerostering.employeerostering.Employee>
            <name>John</name>
              <skills>
        ....

有谁有这方面的经验吗?如有任何建议/信息,欢迎光临。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-08-10 00:34:54

解析的REST请求必须包含以下标头

代码语言:javascript
复制
authorization: Basic cGxhbm5lcjpQbGFubmVyMTIzXw==
X-KIE-ContentType: xstream
content-type: application/xml

在SOAP-UI中,我添加了一个自定义的头X-KIE-ContentType: xstream (auth basic和content type已经可以了)。这是我成功提交给求解器的示例XML正文内容

代码语言:javascript
复制
        <employeerostering.employeerostering.EmployeeRoster>
          <employeeList>
            <employeerostering.employeerostering.Employee>
              <name>John</name>
              <skills>
                <employeerostering.employeerostering.Skill>
                  <name>reading</name>
                </employeerostering.employeerostering.Skill>
              </skills>
            </employeerostering.employeerostering.Employee>
            <employeerostering.employeerostering.Employee>
              <name>Mary</name>
              <skills>
                <employeerostering.employeerostering.Skill>
                  <name>writing</name>
                </employeerostering.employeerostering.Skill>
              </skills>
            </employeerostering.employeerostering.Employee>
            <employeerostering.employeerostering.Employee>
              <name>Petr</name>
              <skills>
                <employeerostering.employeerostering.Skill>
                  <name>speaking</name>
                </employeerostering.employeerostering.Skill>
              </skills>
            </employeerostering.employeerostering.Employee>
          </employeeList>
          <shiftList>
            <employeerostering.employeerostering.Shift>
              <timeslot>
                <startTime>2017-01-01T00:00:00</startTime>
                <endTime>2017-01-01T01:00:00</endTime>
              </timeslot>
              <requiredSkill reference="../../../employeeList/employeerostering.employeerostering.Employee/skills/employeerostering.employeerostering.Skill"/>
            </employeerostering.employeerostering.Shift>
            <employeerostering.employeerostering.Shift>
              <timeslot reference="../../employeerostering.employeerostering.Shift/timeslot"/>
              <requiredSkill reference="../../../employeeList/employeerostering.employeerostering.Employee[3]/skills/employeerostering.employeerostering.Skill"/>
            </employeerostering.employeerostering.Shift>
            <employeerostering.employeerostering.Shift>
              <timeslot reference="../../employeerostering.employeerostering.Shift/timeslot"/>
              <requiredSkill reference="../../../employeeList/employeerostering.employeerostering.Employee[2]/skills/employeerostering.employeerostering.Skill"/>
            </employeerostering.employeerostering.Shift>
          </shiftList>
          <skillList>
            <employeerostering.employeerostering.Skill reference="../../employeeList/employeerostering.employeerostering.Employee/skills/employeerostering.employeerostering.Skill"/>
            <employeerostering.employeerostering.Skill reference="../../employeeList/employeerostering.employeerostering.Employee[3]/skills/employeerostering.employeerostering.Skill"/>
            <employeerostering.employeerostering.Skill reference="../../employeeList/employeerostering.employeerostering.Employee[2]/skills/employeerostering.employeerostering.Skill"/>
          </skillList>
          <timeslotList>
            <employeerostering.employeerostering.Timeslot reference="../../shiftList/employeerostering.employeerostering.Shift/timeslot"/>
          </timeslotList>
          <dayOffRequestList/>
          <shiftAssignmentList>
            <employeerostering.employeerostering.ShiftAssignment>
                <shift reference="../../../shiftList/employeerostering.employeerostering.Shift" />
            </employeerostering.employeerostering.ShiftAssignment>
            <employeerostering.employeerostering.ShiftAssignment>
                <shift reference="../../../shiftList/employeerostering.employeerostering.Shift[2]" />
            </employeerostering.employeerostering.ShiftAssignment>
          </shiftAssignmentList>
        </employeerostering.employeerostering.EmployeeRoster>

解决方案响应(以JSON格式):

代码语言:javascript
复制
        {
            "container-id": "employeerostering_1.0.0-SNAPSHOT",
            "solver-id": "solver-1",
            "solver-config-file": "employeerostering/employeerostering/EmployeeRosteringSolverConfig.solver.xml",
            "status": "SOLVING",
            "score": {
                "value": "0hard/-2soft",
                "scoreClass": "org.optaplanner.core.api.score.buildin.hardsoft.HardSoftScore"
            },
            "best-solution": {
                "employeerostering.employeerostering.EmployeeRoster": {
                    "employeeList": [
                        {
                            "name": "John",
                            "skills": [
                                {
                                    "name": "reading"
                                }
                            ]
                        },
                        {
                            "name": "Mary",
                            "skills": [
                                {
                                    "name": "writing"
                                }
                            ]
                        },
                        {
                            "name": "Petr",
                            "skills": [
                                {
                                    "name": "speaking"
                                }
                            ]
                        }
                    ],
                    "shiftList": [
                        {
                            "timeslot": {
                                "startTime": {
                                    "dayOfYear": 1,
                                    "dayOfWeek": "SUNDAY",
                                    "dayOfMonth": 1,
                                    "monthValue": 1,
                                    "year": 2017,
                                    "month": "JANUARY",
                                    "hour": 0,
                                    "minute": 0,
                                    "second": 0,
                                    "nano": 0,
                                    "chronology": {
                                        "calendarType": "iso8601",
                                        "id": "ISO"
                                    }
                                },
                                "endTime": {
                                    "dayOfYear": 1,
                                    "dayOfWeek": "SUNDAY",
                                    "dayOfMonth": 1,
                                    "monthValue": 1,
                                    "year": 2017,
                                    "month": "JANUARY",
                                    "hour": 1,
                                    "minute": 0,
                                    "second": 0,
                                    "nano": 0,
                                    "chronology": {
                                        "calendarType": "iso8601",
                                        "id": "ISO"
                                    }
                                }
                            },
                            "requiredSkill": {
                                "name": "reading"
                            }
                        },
                        {
                            "timeslot": {
                                "startTime": {
                                    "dayOfYear": 1,
                                    "dayOfWeek": "SUNDAY",
                                    "dayOfMonth": 1,
                                    "monthValue": 1,
                                    "year": 2017,
                                    "month": "JANUARY",
                                    "hour": 0,
                                    "minute": 0,
                                    "second": 0,
                                    "nano": 0,
                                    "chronology": {
                                        "calendarType": "iso8601",
                                        "id": "ISO"
                                    }
                                },
                                "endTime": {
                                    "dayOfYear": 1,
                                    "dayOfWeek": "SUNDAY",
                                    "dayOfMonth": 1,
                                    "monthValue": 1,
                                    "year": 2017,
                                    "month": "JANUARY",
                                    "hour": 1,
                                    "minute": 0,
                                    "second": 0,
                                    "nano": 0,
                                    "chronology": {
                                        "calendarType": "iso8601",
                                        "id": "ISO"
                                    }
                                }
                            },
                            "requiredSkill": {
                                "name": "speaking"
                            }
                        },
                        {
                            "timeslot": {
                                "startTime": {
                                    "dayOfYear": 1,
                                    "dayOfWeek": "SUNDAY",
                                    "dayOfMonth": 1,
                                    "monthValue": 1,
                                    "year": 2017,
                                    "month": "JANUARY",
                                    "hour": 0,
                                    "minute": 0,
                                    "second": 0,
                                    "nano": 0,
                                    "chronology": {
                                        "calendarType": "iso8601",
                                        "id": "ISO"
                                    }
                                },
                                "endTime": {
                                    "dayOfYear": 1,
                                    "dayOfWeek": "SUNDAY",
                                    "dayOfMonth": 1,
                                    "monthValue": 1,
                                    "year": 2017,
                                    "month": "JANUARY",
                                    "hour": 1,
                                    "minute": 0,
                                    "second": 0,
                                    "nano": 0,
                                    "chronology": {
                                        "calendarType": "iso8601",
                                        "id": "ISO"
                                    }
                                }
                            },
                            "requiredSkill": {
                                "name": "writing"
                            }
                        }
                    ],
                    "skillList": [
                        {
                            "name": "reading"
                        },
                        {
                            "name": "speaking"
                        },
                        {
                            "name": "writing"
                        }
                    ],
                    "timeslotList": [
                        {
                            "startTime": {
                                "dayOfYear": 1,
                                "dayOfWeek": "SUNDAY",
                                "dayOfMonth": 1,
                                "monthValue": 1,
                                "year": 2017,
                                "month": "JANUARY",
                                "hour": 0,
                                "minute": 0,
                                "second": 0,
                                "nano": 0,
                                "chronology": {
                                    "calendarType": "iso8601",
                                    "id": "ISO"
                                }
                            },
                            "endTime": {
                                "dayOfYear": 1,
                                "dayOfWeek": "SUNDAY",
                                "dayOfMonth": 1,
                                "monthValue": 1,
                                "year": 2017,
                                "month": "JANUARY",
                                "hour": 1,
                                "minute": 0,
                                "second": 0,
                                "nano": 0,
                                "chronology": {
                                    "calendarType": "iso8601",
                                    "id": "ISO"
                                }
                            }
                        }
                    ],
                    "dayOffRequestList": [],
                    "shiftAssignmentList": [
                        {
                            "shift": {
                                "timeslot": {
                                    "startTime": {
                                        "dayOfYear": 1,
                                        "dayOfWeek": "SUNDAY",
                                        "dayOfMonth": 1,
                                        "monthValue": 1,
                                        "year": 2017,
                                        "month": "JANUARY",
                                        "hour": 0,
                                        "minute": 0,
                                        "second": 0,
                                        "nano": 0,
                                        "chronology": {
                                            "calendarType": "iso8601",
                                            "id": "ISO"
                                        }
                                    },
                                    "endTime": {
                                        "dayOfYear": 1,
                                        "dayOfWeek": "SUNDAY",
                                        "dayOfMonth": 1,
                                        "monthValue": 1,
                                        "year": 2017,
                                        "month": "JANUARY",
                                        "hour": 1,
                                        "minute": 0,
                                        "second": 0,
                                        "nano": 0,
                                        "chronology": {
                                            "calendarType": "iso8601",
                                            "id": "ISO"
                                        }
                                    }
                                },
                                "requiredSkill": {
                                    "name": "reading"
                                }
                            },
                            "employee": {
                                "name": "John",
                                "skills": [
                                    {
                                        "name": "reading"
                                    }
                                ]
                            }
                        },
                        {
                            "shift": {
                                "timeslot": {
                                    "startTime": {
                                        "dayOfYear": 1,
                                        "dayOfWeek": "SUNDAY",
                                        "dayOfMonth": 1,
                                        "monthValue": 1,
                                        "year": 2017,
                                        "month": "JANUARY",
                                        "hour": 0,
                                        "minute": 0,
                                        "second": 0,
                                        "nano": 0,
                                        "chronology": {
                                            "calendarType": "iso8601",
                                            "id": "ISO"
                                        }
                                    },
                                    "endTime": {
                                        "dayOfYear": 1,
                                        "dayOfWeek": "SUNDAY",
                                        "dayOfMonth": 1,
                                        "monthValue": 1,
                                        "year": 2017,
                                        "month": "JANUARY",
                                        "hour": 1,
                                        "minute": 0,
                                        "second": 0,
                                        "nano": 0,
                                        "chronology": {
                                            "calendarType": "iso8601",
                                            "id": "ISO"
                                        }
                                    }
                                },
                                "requiredSkill": {
                                    "name": "speaking"
                                }
                            },
                            "employee": {
                                "name": "Petr",
                                "skills": [
                                    {
                                        "name": "speaking"
                                    }
                                ]
                            }
                        }
                    ],
                    "score": "0hard/-2soft"
                }
            }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51730096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档