Новые комментарии

Гость - в ответ на Динамическое изменение параметра read-only у поля 12 лет назад »»»

 Основная трудность в том что бы перебрать все поля на форме не соображу как это сделать

plastilin - в ответ на Распознавание изображений 12 лет назад »»»

 Дуже дякую!

Angelina - в ответ на Activiti: пример создания workflow 12 лет назад »»»
Вы знаете, я постараюсь как-нибудь подробно описать этот момент в блоге отдельной темой.
Angelina - в ответ на Activiti: пример создания workflow 12 лет назад »»»
Как писать js scoped object и использовать в js процессов, fufler хорошо написал здесь http://www.ossportal.ru/technologies/alfresco/blogs/142
Angelina - в ответ на Activiti: пример создания workflow 12 лет назад »»»
Понятно. Вот как раз этом я говорила - про то, что переменные должны быть типа List<String> Вы передаете свою переменную performer, которая, судя по всему, есть переменная типа String вида "ivanov, petrov, sidorov" или еще какого-то другого типа. А это не сработает. Я выше в комментарии написала, как я решила эту проблему. У меня в модели на старте определяются bpm_assignes - все необходимые мне юзеры. Или же это моя кастомная переменная, которая есть multiple person. Что я делаю, чтобы вытащить список userName-ов из переменной? В процессе на старте я собираю в цикле строку из userName-ов, отдельнных друг от друга запятыми (выглядеть это будет как "ivanov, petrov, sidorov"). Затем я пишу свой js scoped object (java-код и часть контекста я также привела в комментарии выше) converter, чем метод принимает в виде параметра строку с userName-ами и возвращает их уже в виде переменной типа Collеction: И уже в месте <loopDataInputRef>performer</loopDataInputRef> вместо performer я указываю вот ту самую переменную.
elfinith - в ответ на Activiti: пример создания workflow 12 лет назад »»»
Как раз пытаюсь использовать multiInstanceLoopCharacteristics, добавив в описание этапа perform следующее:
<humanPerformer>
   <resourceAssignmentExpression>
   <formalExpression>${reviewAssignee.properties.userName}</formalExpression>
   </resourceAssignmentExpression>
</humanPerformer>
           
<multiInstanceLoopCharacteristics isSequential="false">
   <loopDataInputRef>performer</loopDataInputRef>
   <inputDataItem name="reviewAssignee" />
   <completionCondition>${wf_actualPercent >= wf_requiredApprovePercent}</completionCondition>
</multiInstanceLoopCharacteristics>
на что получаю "Variable performer' is not a Collection". В какую сторону копать? В Activiti я практически полный ноль... Аспект dir:performer в модели описан полностью аналогично аспекту bpm:assignees в bpmModel.xml
Angelina - в ответ на Activiti: пример создания workflow 12 лет назад »»»
Это можно сделать несколькими способами, в зависимости от того, какой сценарий Вам нужно имплементировать. К примеру, Вам нужно задачу скидывать в пул некоей группе исполнителей. Задача создается одна и попадает в пул, владелец задачи пока не определен. Каждый юзер из обозначенной группы может взять на себя задачу (и вернуть в пул, соответственно). И только тогда, когда задача взята, у нее появляется owner. В данном случае вместо humanPerformer используется следующая конструкция:
<potentialOwner>
  <resourceAssignmentExpression>
    <formalExpression>${group_name}</formalExpression>
  </resourceAssignmentExpression>
</potentialOwner>
Или же используйте атрибут activiti:candidateUsers в элементе userTask В данном случае надо помнить, что значение formalExpression - это переменная типа List. Т е если у вас есть predefined список юзеров, то указываются они так: <formalExpression>petrov, sidorov, ivanov</formalExpression> Если же Вы хотите брать список юзеров из bmp_assignes, динамически определяя список юзеров, то нужно создать из bpm_assignes список. Это можно сделать так. К примеру, у вас есть созданный Вами js scoped object converter с методом convert, который принимает в качестве параметра строку типа "ivanov, petorv, sidorov" и делает из нее List Код в джаве конвертора выглядит так:
import java.util.*;
import org.alfresco.repo.processor.BaseProcessorExtension;

public class StringConverter extends BaseProcessorExtension {
	
	public List convert(String s) {
		List list = new ArrayList(Arrays.asList(s.split(",")));
		return list;
	}	
}
регистрируете его в Spring так:
<bean id="converter" parent="baseJavaScriptExtension" class="ru.activiti.StringConverter">
        <property name="extensionName">
            <value>converter</value>
        </property>
    </bean>
На стартовом ивенте в процессе Вы делаете что-то примерно такое:
var coordinators = "";
coordinatorsCount = bpm_assignes.size();	
for (var i=0; i<coordinatorsCount; i++ ) {
  coordinators += bpm_assignes.get(i).properties.userName+",";
}

var userList = converter.convert(coordinators);
execution.setVariable('userList', userList);
И уже пул Вы определяете атрибутом activiti:candidateUsers="${userList}" в нужном userTask-е. Если же у Вас задача, выбрав несколько юзеров, создать целенаправленный список задач с определенными owner-ами, то можете использовать элемент активити multiInstanceLoopCharacteristics Пример его использования можно увидеть в parallel-review.bpmn20.xml, который лежит в alfresco/tomcat/webapps/alfresco/WEB_INF/classes/alfresco/workflow. Обратите внимание на конструкию в примере, именно она и создает список задач с определенными владельцами:
 <multiInstanceLoopCharacteristics isSequential="false">
           	   <loopDataInputRef>bpm_assignees </loopDataInputRef>
           	   <inputDataItem name="reviewAssignee" />
           	   <completionCondition>${wf_actualPercent >= wf_requiredApprovePercent} </completionCondition>
            </multiInstanceLoopCharacteristics >
Кстати, там же лежат несколько примеров, написанный на активити
elfinith - в ответ на Activiti: пример создания workflow 12 лет назад »»»
Добрый день! А каким образом нужно будет изменить описание процесса, если предусмотреть выбор нескольких исполнителей (на этапе inspection запускать что-то типа activitiParallelReview)?
дщлф - в ответ на Доступна версия Alfresco Community 4.2.b 12 лет назад »»»

При просмотре бизнес-процесса пустая страница.

Aviriel - в ответ на Распознавание изображений 12 лет назад »»»

День день. Нет, Alfresco не предоставляем таких возможностей из коробки. Но Вы можете интегрировать ее с Ephesoft, Kofax или Abbyy для этих целей. Готовые модули для интеграции с Kofax и Ephesoft есть, с Abbyy чуть сложнее.