#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. Да, я вижу ту же форму, что и для начальной задачи