Задача REST не может обрабатывать символы Юникода во входных данных - PullRequest
0 голосов
/ 03 февраля 2020

Принимая во внимание следующее определение служебной задачи в BPS 3.6.0

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/suosTechBy">
  <process id="suosTechBy" name="SUOS Thech By" isExecutable="true">
    <startEvent id="startevent1" name="Start"></startEvent>
    <serviceTask id="servicetask1" name="REST Task" activiti:class="org.wso2.carbon.bpmn.extensions.rest.RESTTask" activiti:extensionId="org.wso2.developerstudio.bpmn.extensions.restTask.RESTTask">
      <extensionElements>
        <activiti:field name="serviceURL">
          <activiti:string>http://vs-otr-esb.otr.ru:8290/auth/token</activiti:string>
        </activiti:field>
        <activiti:field name="method">
          <activiti:string>POST</activiti:string>
        </activiti:field>
        <activiti:field name="input">
          <activiti:string>{"login":"login","password":"password!!"}</activiti:string>
        </activiti:field>
        <activiti:field name="outputVariable">
          <activiti:string>token</activiti:string>
        </activiti:field>
        <activiti:field name="headers">
          <activiti:string>{"Content-Type":"application/json;charset=UTF-8"}</activiti:string>
        </activiti:field>
      </extensionElements>
    </serviceTask>
    <endEvent id="endevent1" name="End"></endEvent>
    <serviceTask id="mailtask1" name="Mail Task" activiti:type="mail">
      <extensionElements>
        <activiti:field name="to">
          <activiti:string><![CDATA[fav@otr.ru]]></activiti:string>
        </activiti:field>
        <activiti:field name="subject">
          <activiti:string><![CDATA[bpms!!!]]></activiti:string>
        </activiti:field>
        <activiti:field name="text">
          <activiti:expression><![CDATA[${issue}
${fzres}]]></activiti:expression>
        </activiti:field>
        <activiti:field name="charset">
          <activiti:string><![CDATA[utf-8]]></activiti:string>
        </activiti:field>
      </extensionElements>
    </serviceTask>
    <sequenceFlow id="flow3" sourceRef="mailtask1" targetRef="endevent1"></sequenceFlow>
    <serviceTask id="servicetask2" name="REST Task" activiti:class="org.wso2.carbon.bpmn.extensions.rest.RESTTask" activiti:extensionId="org.wso2.developerstudio.bpmn.extensions.restTask.RESTTask">
      <extensionElements>
        <activiti:field name="serviceURL">
          <activiti:string>http://vs-otr-esb.otr.ru:8290/jira/issue/</activiti:string>
        </activiti:field>
        <activiti:field name="method">
          <activiti:string>PUT</activiti:string>
        </activiti:field>
        <activiti:field name="input">
          <activiti:string>{
    "username":"username",
    "password":"password",          
    "issueIdOrKey":"PROD-31"
}</activiti:string>
        </activiti:field>
        <activiti:field name="outputMappings">
          <activiti:string>issue:$.key,summ:$.fields.summary</activiti:string>
        </activiti:field>
        <activiti:field name="headers">
          <activiti:string>{"Content-Type":"application/json;charset=UTF-8"}</activiti:string>
        </activiti:field>
      </extensionElements>
    </serviceTask>
    <sequenceFlow id="flow4" sourceRef="startevent1" targetRef="servicetask2"></sequenceFlow>
    <sequenceFlow id="flow5" sourceRef="servicetask2" targetRef="servicetask1"></sequenceFlow>
    <serviceTask id="servicetask3" name="REST Task" activiti:class="org.wso2.carbon.bpmn.extensions.rest.RESTTask" activiti:extensionId="org.wso2.developerstudio.bpmn.extensions.restTask.RESTTask">
      <extensionElements>
        <activiti:field name="serviceURL">
          <activiti:string>http://vs-otr-esb.otr.ru:8290/obj/doc/UFOCC_Invoices</activiti:string>
        </activiti:field>
        <activiti:field name="method">
          <activiti:string>POST</activiti:string>
        </activiti:field>
        <activiti:field name="input">
          <activiti:expression>{
"params": [
        {
            "key": "guid",
            "value": "8b844569-0513-4be8-af67-518a216fd78a"
        }
    ],
    "fields": [
        {
            "field": "firmname",
            "value": "ФЭБ"
        },{
            "field": "description",
            "value": "${summ}"
        },
{
            "field": "cfoname",
            "value": "БОРТ"
        }       
    ],
    "tables": [
        {
            "tableName": "lines",
            "rows":[
                {
                    "fields": [
                        {
                            "field": "budgetlinename",
                            "value": "Электроэнергия"
                        },
                        {

                            "field": "amount",
                            "value": "7777"
                        }
                    ]
                },
                {
                    "fields": [
                        {
                            "field": "budgetlinename",
                            "value": "Электроэнергия"
                        },
                        {

                            "field": "amount",
                            "value": "5666.8"
                        }
                    ]
                }       
            ]       
        }
    ]   
}</activiti:expression>
        </activiti:field>
        <activiti:field name="outputVariable">
          <activiti:string>fzres</activiti:string>
        </activiti:field>
        <activiti:field name="headers">
          <activiti:expression>{"Content-Type":"application/json;charset=UTF-8","Authorization":"Bearer ${token}"}</activiti:expression>
        </activiti:field>
      </extensionElements>
    </serviceTask>
    <sequenceFlow id="flow6" sourceRef="servicetask1" targetRef="servicetask3"></sequenceFlow>
    <sequenceFlow id="flow7" sourceRef="servicetask3" targetRef="mailtask1"></sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_suosTechBy">
    <bpmndi:BPMNPlane bpmnElement="suosTechBy" id="BPMNPlane_suosTechBy">
      <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
        <omgdc:Bounds height="35.0" width="35.0" x="70.0" y="70.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="servicetask1" id="BPMNShape_servicetask1">
        <omgdc:Bounds height="55.0" width="105.0" x="380.0" y="73.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
        <omgdc:Bounds height="35.0" width="35.0" x="830.0" y="80.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="mailtask1" id="BPMNShape_mailtask1">
        <omgdc:Bounds height="55.0" width="105.0" x="620.0" y="73.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="servicetask2" id="BPMNShape_servicetask2">
        <omgdc:Bounds height="55.0" width="105.0" x="200.0" y="70.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="servicetask3" id="BPMNShape_servicetask3">
        <omgdc:Bounds height="55.0" width="105.0" x="500.0" y="159.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3">
        <omgdi:waypoint x="725.0" y="100.0"></omgdi:waypoint>
        <omgdi:waypoint x="830.0" y="97.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow4" id="BPMNEdge_flow4">
        <omgdi:waypoint x="105.0" y="87.0"></omgdi:waypoint>
        <omgdi:waypoint x="200.0" y="97.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow5" id="BPMNEdge_flow5">
        <omgdi:waypoint x="305.0" y="97.0"></omgdi:waypoint>
        <omgdi:waypoint x="380.0" y="100.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow6" id="BPMNEdge_flow6">
        <omgdi:waypoint x="432.0" y="128.0"></omgdi:waypoint>
        <omgdi:waypoint x="552.0" y="159.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow7" id="BPMNEdge_flow7">
        <omgdi:waypoint x="552.0" y="159.0"></omgdi:waypoint>
        <omgdi:waypoint x="672.0" y="128.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

при выполнении задачи REST, я получаю это на стороне сервера: ??? ????? Все символы кириллицы c были заменены на вопросительные знаки

Я обнаружил, что это исправлено https://github.com/wso2/carbon-business-process/pull/487, но теперь это не работает для меня. Что я делаю не так?

...