Как выбрать получателя задачи в Alfresco из предыдущей задачи пользователя?

#forms #workflow #alfresco #activiti

#формы #рабочий процесс #alfresco #activiti

Вопрос:

Я создал пользовательский рабочий процесс в Alfresco с его моделью и конфигурацией. Если вы посмотрите на этот пример рабочего процесса:

 <userTask id="creaCS" name="Crea Certificato di Servizio" activiti:candidateGroups="DSGA" activiti:formKey="psw:activitiCreaCS">
    <extensionElements>
        <activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
            <activiti:field name="script">
                <activiti:string><![CDATA[logger.log("Log Log");
                    execution.setVariable('DSGAincaricato', task.getVariable('psw_DSGAincaricato'));
                    execution.setVariable('DSincaricato', task.getVariable('psw_DSincaricato'));]]>
                </activiti:string>
            </activiti:field>
        </activiti:taskListener>
    </extensionElements>
</userTask>
<userTask id="valutaCS" name="Valuta Certificato di Servizio" activiti:assignee="${DSincaricato.properties.userName}" activiti:formKey="psw:activitiValutaCS">
    <extensionElements>
        <activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
            <activiti:field name="script">
                <activiti:string>if(task.getVariableLocal('psw_esitoValutazioneCS') == 'Approvato'){
                    execution.setVariable('psw_prosegui', true);
                    }else{
                    execution.setVariable('psw_prosegui', false);
                    }
                </activiti:string>
            </activiti:field>
        </activiti:taskListener>
    </extensionElements>
</userTask>
  

Я хочу выбрать получателя для значений в creaCS. Итак, я создал модель, подобную этой:

 <type name="psw:activitiCreaCS">
        <parent>bpm:startTask</parent>
        <associations>
            <association name="psw:DSGAincaricato">
                <title>DSGA incaricato</title>
                <source>
                    <mandatory>false</mandatory>
                    <many>false</many>
                </source>
                <target>
                    <class>cm:person</class>
                    <mandatory>false</mandatory>
                    <many>false</many>
                </target>
            </association>
            <association name="psw:DSincaricato">
                <title>DS incaricato</title>
                <source>
                    <mandatory>false</mandatory>
                    <many>false</many>
                </source>
                <target>
                    <class>cm:person</class>
                    <mandatory>false</mandatory>
                    <many>false</many>
                </target>
            </association>
        </associations>
    </type>

    <type name="psw:activitiValutaCS">
        <parent>bpm:activitiOutcomeTask</parent>
        <properties>
            <property name="psw:esitoValutazioneCS">
                <type>d:text</type>
                <default>Respinto</default>
                <constraints>
                    <constraint type="LIST">
                        <parameter name="allowedValues">
                            <list>
                                <value>Approvato</value>
                                <value>Respinto</value>
                            </list>
                        </parameter>
                    </constraint>
                </constraints>
            </property>
        </properties>
        <overrides>
            <property name="bpm:packageItemActionGroup">
                <default>edit_package_item_actions</default>
            </property>
            <property name="bpm:outcomePropertyName">
                <default>{http://www.portaleScuola.com/model/workflow/1.0}esitoValutazioneCS</default>
            </property>
        </overrides>
    </type>
  

Я настроил форму:

 <config evaluator="task-type" condition="psw:activitiCreaCS">
    <forms>
        <form id="workflow-details">
            <field-visibility>
                <show id="bpm:workflowDescription"/>
                <show id="packageItems"/>
                <show id="psw:DSGAincaricato"/>
                <show id="psw:DSincaricato"/>
                <show id="transitions"/>
                <show id="bpm:status"/>
            </field-visibility>
            <appearance>
                <set id="" appearance="title" label-id="workflow.set.general" />
                <set id="items" appearance="title" label-id="workflow.set.items" />
                <set id="progress" appearance="title" label-id="workflow.set.task.progress" />               
                <set id="other" appearance="title" label-id="workflow.set.other" />

                <field id="bpm:workflowDescription" label-id="workflow.field.message">
                    <control template="/org/alfresco/components/form/controls/textarea.ftl">
                        <control-param name="style">width: 95%</control-param>
                    </control>
                </field>
                <field id="packageItems" set="items" />
                <field set="actors" id="psw:DSGAincaricato">
                    <control template="/org/alfresco/components/form/controls/authority.ftl">

                    </control>
                </field>
                <field set="actors" id="psw:DSincaricato">
                    <control template="/org/alfresco/components/form/controls/authority.ftl">

                    </control>
                </field>
                <field id="bpm:status" set="progress" />
            </appearance>
        </form>
        <form>
            <field-visibility>
                <show id="bpm:workflowDescription"/>
                <show id="packageItems"/>
                <show id="psw:DSGAincaricato"/>
                <show id="psw:DSincaricato"/>
                <show id="transitions"/>
                <show id="bpm:status"/>
            </field-visibility>
            <appearance>
                <set id="" appearance="title" label-id="workflow.set.general" />
                <set id="items" appearance="title" label-id="workflow.set.items" />
                <set id="progress" appearance="title" label-id="workflow.set.task.progress" />               
                <set id="other" appearance="title" label-id="workflow.set.other" />

                <field id="bpm:workflowDescription" label-id="workflow.field.message">
                    <control template="/org/alfresco/components/form/controls/textarea.ftl">
                        <control-param name="style">width: 95%</control-param>
                    </control>
                </field>
                <field id="packageItems" set="items" />
                <field set="actors" id="psw:DSGAincaricato">
                    <control template="/org/alfresco/components/form/controls/authority.ftl">

                    </control>
                </field>
                <field set="actors" id="psw:DSincaricato">
                    <control template="/org/alfresco/components/form/controls/authority.ftl">

                    </control>
                </field>
                <field id="bpm:status" set="progress" />
            </appearance>
        </form>
    </forms>
</config>
  

Однако есть две проблемы. Во-первых, мой рабочий процесс не получает назначение, даже групповое назначение в creaCS.
Во-вторых, по какой-то причине поля для пользователей отсутствуют в моих настраиваемых формах. Я не могу понять, почему, также потому, что нет никаких проблем с полем для psw_esitoValutazioneCS.
У кого-нибудь есть идеи, как это решить?

Ответ №1:

Что касается назначения задачи, вместо того, чтобы пытаться установить переменную выполнения со значением получателя, а затем считывать ее как получателя, вы можете прочитать получателя прямо из свойства в модели, вот так:

 <userTask id="valutaCS" name="Valuta Certificato di Servizio" activiti:assignee="${psw_DSincaricato.properties.userName}" activiti:formKey="psw:activitiValutaCS">
  

Что касается внешнего вида поля в форме, вы пробовали удалить элемент управления? У меня есть рабочий процесс, который выполняет то же самое, что и вы. Это отлично работает и не требует указания конкретного элемента управления.

Одна вещь заключается в том, что я не вижу конфигурации формы, которая соответствует созданию рабочего процесса (условие = «activiti $ProcessId») с формой по умолчанию. Все, что я вижу, это конфигурация формы с типом, который соответствует идентификатору типа отправки. Вам нужны оба.

Комментарии:

1. Я пытался, но по-прежнему нет поля для выбора DSincaricato, и если я попытаюсь щелкнуть завершенную задачу, у меня появится ошибка:

2. ‘org.activiti.engine. ActivitiException: Неизвестное свойство, используемое в выражении: ${psw_DSincaricato.properties.userName}’

3. Здесь вы можете найти файлы community.alfresco.com/message /…

4. Вы хотите сказать, что как только вы перейдете к задаче psw: activitiCreaCS, которая является первой задачей после задачи запуска, вы не увидите поля psw: DSGAincaricato и psw: DSincaricato в форме редактирования задачи рабочего процесса?

5. Да, я вижу ту же форму, что и для начальной задачи