Alfresco Workflow:如何在REST Json更新“任务”时设置关联值?

时间:2014-02-23 09:29:28

标签: json rest alfresco activiti

我的应用程序通过REST与Alfresco工作流程进行交互。 有一个任务与cm:person类型的对象有关联,它的值应该从最终用户收集 - 用作下一个任务的受让人。如何通过REST设置此值?


我尝试在URL上发送HTTP“PUT”请求(content-type:application / json)

的http:// localhost:8080 /露天/服务/ API /任务的实例/ Activiti的$ 11102

和正文请求是:

  

{        “cio_employee”:“workspace:// 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>

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

1 个答案:

答案 0 :(得分:1)

深入搜索后,您需要在

上发送POST请求
http://localhost:8080/alfresco/s/api/task/[taskId]/formprocessor

身体:

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

并删除使用密钥&#34; assoc_cio_employee_removed&#34;

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

希望它可以帮到某人。

Alfresco Version 4.2.e