Настраиваемые переменные, установленные в processBody of (/ process POST) в rest-api под открытым небом, не распознаются моим развернутым файлом .bpmn2 - PullRequest
0 голосов
/ 26 октября 2018

У меня есть следующий файл .bpmn2, развернутый через мою консоль рабочего процесса alfresco с пользовательской задачей, которая будет назначена пользователю в соответствии с переданной переменной "Y"

 <process isExecutable="true" id="step4reconfigure41" name="Reconfigure step 4">

    <startEvent id="start"
        activiti:formKey="wf:submitAdhocTask" />
    <sequenceFlow id='flow1' 
        sourceRef='start'
        targetRef='adhocTask' />
   <userTask id="adhocTask" name="First user Task"
        activiti:formKey="wf:adhocTask">
       <documentation> First task </documentation>
       <extensionElements>
           <activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
              <activiti:field name="script">
                 <activiti:string>
                  if(execution.getVariable("Y") == 22){
                     task.assignee = 'userA';
                  }
                  else if(execution.getVariable("Y") != 22){
                     task.assignee = 'userB';
                  }
                 </activiti:string>
              </activiti:field>
           </activiti:taskListener>
       </extensionElements>
    </userTask>

Мне удалось запустить процесс из консоли рабочего процесса alfresco, например:

  • начало Y = 22 * ​​1010 *

Это было успешно, поскольку переменная была успешно прочитана, и логика назначения, описанная в файле .bpmn2, была применена соответствующим образом.

Я хочу выполнить тот же сценарий, что и я, используя alfresco rest-api .

Согласно документации api-explorer, я должен использовать конечную точку /process (POST) с processBody, как показано ниже

{ "processDefinitionKey": "string", "переменные": { "bpm_assignee": "строка", "bpm_sendEMailNotifications": правда, "bpm_workflowPriority": 0 } }

Я пытаюсь передать свою переменную "Y" процессу, похожему на это:

{ "processDefinitionKey": "test", "переменные": { "Y": "5", "bpm_sendEMailNotifications": правда, "bpm_workflowPriority": 0 } }

К сожалению, даже если процесс запускается нормально, переменная "Y" не была установлена, что я тестировал через / projects / {processId} / variable endpoint.

Что я должен сделать, чтобы выполнить то же действие, которое я сделал в моем рабочем процессе консоль (передавая переменную при запуске) через остальные API? И как эта переменная будет видна в моем файле .bpmn2?

Любая помощь будет принята с благодарностью:)

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Наконец мне удалось решить эту проблему, "расширив" bpmnModel.xml , помещенный в WEB-INF / lib / alfresco-repository- {версия} .jar / alfresco / model / и добавил дополнительное свойство внутри "bpm: startTask"

<property name="bpm:Y">
    <type>d:text</type>
</property>

Перезапустил сервер, и новый процесс был успешно создан с использованием моего нового пользовательского параметра, переданного путем добавления в запрос

{ 
      "processDefinitionKey": "test", 
          "variables": { 
                "bpm_Y": "5", 
                "bpm_sendEMailNotifications": true, 
                "bpm_workflowPriority": 0 
               }
}
0 голосов
/ 27 октября 2018

Если вы не можете получить готовый API REST, чтобы делать то, что вы хотите, вы можете написать свой собственный веб-скрипт на основе Java.Контроллер может использовать Alfresco Workflow API WorkflowService.startWorkflow метод , чтобы запустить рабочий процесс и передать параметр parmaeter.

API REST может использовать этот же API.Если это произойдет, это, вероятно, также не будет работать.Если это произойдет, запустите отладчик и перейдите к источнику Alfresco, чтобы увидеть, что происходит.

...