Рабочий процесс Alfresco: как установить значение ассоциации при обновлении задачи с помощью REST Json?

Мое приложение взаимодействует с рабочим процессом Alfresco с помощью REST. Есть задача, связанная с объектом типа cm:person, ее значение должно быть получено от конечного пользователя для использования в качестве исполнителя следующей задачи. Как я могу установить это значение с помощью REST ??


Я попытался отправить HTTP-запрос «PUT» (тип содержимого: приложение/json) по URL-адресу.

http://localhost:8080/alfresco/service/api/task-instances/activiti$11102

и запрос тела:

{ "cio_employee": "рабочая область://SpacesStore/bcb9817f-5778-484b-be16-a388eb18b5ab" }

где «workspace://SpacesStore/bcb9817f-5778-484b-be16-a388eb18b5ab» — ​​это ссылка на администратора, но когда я завершаю задачу (также с помощью REST), Alfresco выдает ошибку:

...

Вызвано: org.activiti.engine.ActivitiException: неизвестное свойство, используемое в выражении: ${cio_employee.properties.userName} ... Вызвано: org.activiti.engine.impl.javax.el.PropertyNotFoundException: не удалось найти свойства свойства в классе java.lang.String


Ниже приведена задача и ее модельное определение:

// Задача пользователя:

<userTask id="assignHandler" name="Assign Employee" activiti:assignee="admin"
    activiti:formKey="cio:assignEmployeeTask">
    <documentation>Please, Assign employee to the next task</documentation>
    <extensionElements>
          <activiti:taskListener event="complete" 
               class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
             <activiti:field name="script">
            <activiti:string>
                   execution.setVariable('cio_employee', 
                               task.getVariable('cio_employee'));
             </activiti:string>
             </activiti:field>
          </activiti:taskListener>
    </extensionElements>
</userTask>

////////////////////////////////////////////////// ///////// //Модель ...

<types>
 ...
  <type name="cio:assignEmployeeTask">
    <parent>bpm:workflowTask</parent>           
    <mandatory-aspects>
        <aspect>cio:employee</aspect>
    </mandatory-aspects>            
  </type>
 ...
</types>
...

<aspects>  
    <aspect name="cio:employee">
        <associations>
            <association name="cio:employee">
                <source>
                   <mandatory>false</mandatory>
                   <many>false</many>
                 </source>
                 <target>
                    <class>cm:person</class>
                    <mandatory>true</mandatory>
                    <many>false</many>
                 </target>
                </association>
            </associations>
        </aspect>
</aspects>

////////////////////////////////////////////////////////////////////////


person Moro    schedule 23.02.2014    source источник


Ответы (1)


После глубокого поиска вам нужно будет отправить запрос POST на

http://localhost:8080/alfresco/s/api/task/[taskId]/formprocessor

с телом:

{
  "assoc_cio_employee_added": "workspace://SpacesStore/bcb9817f-5778-484b-be16-a388eb18b5ab"
}

а для удаления используйте ключ "assoc_cio_employee_removed"

https://wiki.alfresco.com/wiki/Forms_Developer_Guide

Надеюсь, это может помочь кому-то.

Alfresco Версия 4.2.e

person Moro    schedule 24.02.2014