Пример создания workflow в ECM Alfresco

В этой статье будет рассмотрен пример создания простого маршрута для документооборота, а именно:

  • создание модели контента
  • описание бизнес-процесса
  • описание модели бизнес-процесса
  • локализация бизнес-процесса
  • настройка веб-клиента Alfresco
  • локализация веб-клиента Alfresco

Итак, приступим. Допустим, у нас есть фирма TrashCo, которая между прочим занимается публикацией статей. Предлагаю реализовать вот такой маршрут для документа, описывающий процесс публикации статьи:

 

Для задания такого маршрута нам понадобится создать несколько файлов, а именно:

  • tcModel.xml – описание модели контента
  • workflows/PublishPaperProcess.xml – описание бизнес-процесса
  • tcWorkflowModel.xml – описание модели бизнес-процесса
  • tcWorkflow_ru_RU.properties – локализация бизнес-процесса
  • web-client-config-custom.xml – настройка веб-клиента Alfresco
  • webclient_ru_RU.properties – локализация веб-клиента Alfresco

Первым делом созданим модель контента (content model), хоть она и не является обязательной частью описания бизнес-процесса (workflow). Модели контента используются для задания тех метаданных, которые мы хотим хранить для каждого документа в бизнес-процессе. В нашем случае никаких особенных данных хранить не требуется, поэтому создаем тип, унаследованный от базового типа. Файл, описывающий подобную модель может выглядеть следующим образом (tcModel.xml):

<?xml version="1.0" encoding="UTF-8"?>
<!-- Определяем новую модель -->
<model name="tc:trashmodel" xmlns="http://www.alfresco.org/model/dictionary/1.0">
 
  <!-- Метаданные -->
  <description>TrashCo Model</description>
  <author>lx</author>
  <version>0.0</version>
 
  <!-- Импорт необходимых определений моделей контента -->
  <imports>
    <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d" />
    <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm" />
  </imports>
 
  <!-- Описываем новое пространство имен -->
  <namespaces>
    <namespace uri="http://www.trashco.com/model/content/0.0" prefix="tc" />
  </namespaces>
 
  <!-- Описываем тип документов для статьи -->
  <types>
    <type name="tc:article">
      <title>TrashCo Article</title>
      <!-- Наследуем от базового типа -->
      <parent>cm:content</parent>
    </type>
  </types>
 
</model>
<!-- Конец -->

Следующий шаг – описание бизнес-процесса. Для этого можно воспользоваться несколькими способами: создание XML руками, использование jBPM Designer, использование Activiti Modeler Activiti Modeler находится пока что в стадии разработки, собрать его из исходников мне не удалось, поэтому вариант отпадает. jBPM Designer мне показался несколько глючноватым, в связи с чем я остановился на на первом варианте. Он не так красноглаз, как кажется на первый взгляд.

Каждый маршрут должен содержать как минимум два узла (node): start-state для начального состояния и end-state для конечного. Все узлы соединяются при помощи переходов (transitions). В нашем примере мы будет использовать промежуточные узлы двух типов: task-node описывает узел, для прохождения которого необходимо привлечение человека, node – остальные узлы.

Предположим, что в компании есть штат корректоров (их пользователи состоят в группе correctors) и несколько технических редакторов, но каждый из них отвечает за публикацию статей только определенной тематики. Поэтому при создании бизнес-процесса пользователь должен выбрать конкретного технического редактора, который будет проверять статью. Ниже приведено описание процесса (workflows/PublishPaperProcess.xml):

<?xml version="1.0" encoding="UTF-8"?>
 
<!-- Начало описания процесса -->
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="tcwf:publishpaper">
 
  <!-- Исполнитель "инициатор" -->
  <swimlane name="initiator" />
 
  <!-- Исполнитель "корректор", выбирается из группы correctors -->
  <swimlane name="corrector">
    <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
      <pooledactors>#{people.getGroup('GROUP_correctors')}</pooledactors>
    </assignment>
  </swimlane>
 
  <!-- Исполнитель "редактор", выбирается при создании  процесса -->
  <swimlane name="editor">
    <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
      <actor>#{bpm_assignee}</actor>
    </assignment>
  </swimlane>
 
  <!-- Исполнитель "издатель", выбирается из группы publishers -->
  <swimlane name="publisher">
    <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
      <pooledactors>#{people.getGroup('GROUP_publishers')}</pooledactors>
    </assignment>
  </swimlane>
 
  <!-- Начальный узел процесса -->
  <start-state name="Start">
    <!-- Задание для инициатора -->
    <task name="tcwf:submitTask" swimlane="initiator" />
    <!-- Подать статью на рассмотрение -->
    <transition name="" to="Submit" />
  </start-state>
 
  <!-- Подача статьи на рассмотрение -->
  <node name="Submit">
    <!-- Передать корректору -->
    <transition name="" to="CorrectTask"/>
  </node>
 
  <!-- Корректирование статьи -->
  <task-node name="CorrectTask">
    <!-- Задача для корректора -->
    <task name="tcwf:correctTask" swimlane="corrector" />
    <!-- Передать статью редактору -->
    <transition name="approve" to="EditTask" />
    <!-- Передать статью инициатору на доработку -->
    <transition name="reject" to="ReviseTask" />
  </task-node>
 
  <!-- Техническое редактирование статьи -->
  <task-node name="EditTask">
    <!-- Задача для редактора -->
    <task name="tcwf:editTask" swimlane="editor" />
    <!-- Передать стаью издателю -->
    <transition name="approve" to="PublishTask" />
    <!-- Передать статью инициатору на доработку -->
    <transition name="reject" to="ReviseTask" />
  </task-node>
 
  <!-- Доработка статьи -->
  <task-node name="ReviseTask">
    <!-- Задача для инициатора -->
    <task name="tcwf:reviseTask" swimlane="initiator" />
    <!-- Подать статьи повторно -->
    <transition name="resubmit" to="Submit" />
    <!-- Отменить процесс публикации статьи -->
    <transition name="cancel" to="End" />
  </task-node>
 
  <!-- Публикация статьи -->
  <task-node name="PublishTask">
    <!-- Задача для издателя -->
    <task name="tcwf:publishTask" swimlane="publisher" />
    <!-- Конец процесса -->
    <transition name="done" to="End" />
  </task-node>
 
  <!-- Последний узел -->
  <end-state name="End"/>
 
</process-definition>
<!-- Конец описания процесса -->

Следующий шаг, после описания процесса – создание модели процесса (workflow model). Модель процесса описывает, что может происходить с документами на каждой стадии процесса. К примеру, мы хотим, чтобы при создании бизнес-процесса для статьи была возможность поставить галочку «Опубликовать online» – это делается путем указания аспектов (aspects) контента (tcWorkflowModel.xml).

<?xml version="1.0" encoding="UTF-8"?>
<!-- Описание модели бизнес-процесса -->
<model name="tcwf:workflowmodel"  xmlns="http://www.alfresco.org/model/dictionary/1.0">
 
  <!-- Необязательные метаданные модели -->
  <description>TrashCo Workflow Model</description>
  <author>lx</author>
  <version>0.0</version>
 
  <!-- Импорт необходимых описаний -->
  <imports>
    <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d" />
    <import uri="http://www.alfresco.org/model/bpm/1.0" prefix="bpm" />
  </imports>
 
  <!-- Описываем пространство имен для нашего процесса -->
  <namespaces>
    <namespace uri="http://www.trashco.com/model/workflow/1.0"  prefix="tcwf" />
  </namespaces>
 
  <types>
 
    <!-- Подача статьи -->
    <type name="tcwf:submitTask">
      <!-- Наследуем от bpm:startTask -->
      <parent>bpm:startTask</parent>
      <!-- Указываем обязательные аспекты -->
      <mandatory-aspects>
        <!-- Редактор -->
        <aspect>bpm:assignee</aspect>
        <!-- Статья может быть опубликована online -->
        <aspect>tcwf:webable</aspect>
      </mandatory-aspects>
    </type>
 
    <!-- Корректирование статьи -->
    <type name="tcwf:correctTask">
      <!-- Наследуем от bpm:workflowTask -->
      <parent>bpm:workflowTask</parent>
      <!-- Документ может быть отредактирован -->
      <overrides>
        <property name="bpm:packageItemActionGroup">
          <default>edit_package_item_actions</default>
        </property>
      </overrides>
      <mandatory-aspects>
        <!-- Статья может быть опубликована online -->
        <aspect>tcwf:webable</aspect>
      </mandatory-aspects>
    </type>
 
    <!-- Техническое редактирование статьи -->
    <type name="tcwf:editTask">
      <!-- Наследуем от bpm:workflowTask -->
      <parent>bpm:workflowTask</parent>
      <!-- Документ может быть отредактирован -->
      <overrides>
        <property name="bpm:packageItemActionGroup">
          <default>edit_package_item_actions</default>
        </property>
      </overrides>
      <mandatory-aspects>
        <!-- Статья может быть опубликована online -->
        <aspect>tcwf:webable</aspect>
      </mandatory-aspects>
    </type>
 
    <!-- Доработка статьи -->
    <type name="tcwf:reviseTask">
      <!-- Наследуем от bpm:workflowTask -->
      <parent>bpm:workflowTask</parent>
      <!-- Документ может быть отредактирован -->
      <overrides>
        <property name="bpm:packageItemActionGroup">
          <default>edit_package_item_actions</default>
        </property>
      </overrides>
      <mandatory-aspects>
        <!-- Статья может быть опубликована online -->
        <aspect>tcwf:webable</aspect>
      </mandatory-aspects>
    </type>
 
    <!-- Публикация статьи -->
    <type name="tcwf:publishTask">
      <!-- Наследуем от bpm:workflowTask -->
      <parent>bpm:workflowTask</parent>
      <!-- Документ может быть только просмотрен -->
      <overrides>
        <property name="bpm:packageItemActionGroup">
          <default>read_package_item_actions</default>
        </property>
      </overrides>
      <mandatory-aspects>
        <!-- Статья может быть опубликована online -->
        <aspect>tcwf:webable</aspect>
      </mandatory-aspects>
    </type>  
 
  </types>
 
 
  <!-- Описываем аспекты, которые будем использовать -->
  <aspects>
    <!-- Статью можно опубликовать online -->
    <aspect name="tcwf:webable">
      <title>TrashCo webable aspect</title>
      <properties>
        <property name="tcwf:publishOnline">
          <type>d:boolean</type>
          <mandatory>true</mandatory>
          <multiple>false</multiple>
        </property>
      </properties>
    </aspect>
  </aspects>
</model>
 

Далее нужно локализовать наш бизнес-процесс, чтобы в веб-интерфейсе Alfresco отображались нормальные названия задач и кнопок (tcWorkflow_ru_RU.properties.in).

# Название бизнес-процесса
tcwf_publishpaper.workflow.title=Публикация статьи
tcwf_publishpaper.workflow.description=Подача, корректирование, техническое редактирование
# Названия задач
tcwf_publishpaper.task.tcwf_correctTask.title=Проверить и откорректировать статью
tcwf_publishpaper.task.tcwf_correctTask.description=Проверить и откорректировать статью для передачи техническому редактору
tcwf_publishpaper.task.tcwf_editTask.title=Проверить и откорректировать статью
tcwf_publishpaper.task.tcwf_editTask.description=Проверить и откорректировать статью для публикации
tcwf_publishpaper.task.tcwf_reviseTask.title=Исправить статью
tcwf_publishpaper.task.tcwf_reviseTask.description=Исправить статью для передачи на повторное рассмотрение
tcwf_publishpaper.task.tcwf_publishTask.title=Опубликовать статью
tcwf_publishpaper.task.tcwf_publishTask.description=Опубликовать статью
# Названия кнопок на узлах бизнес-процесса
tcwf_publishpaper.node.CorrectTask.transition.approve.title=Одобрить статью
tcwf_publishpaper.node.CorrectTask.transition.approve.description=Одобрить статью и направить ее техническому редактору 
tcwf_publishpaper.node.CorrectTask.transition.reject.title=Отклонить статью
tcwf_publishpaper.node.CorrectTask.transition.reject.description=Отклонить статью и отправить ее на доработку
tcwf_publishpaper.node.EditTask.transition.approve.title=Одобрить статью
tcwf_publishpaper.node.EditTask.transition.approve.description=Одобрить статью и отправить ее издателю
tcwf_publishpaper.node.EditTask.transition.reject.title=Отклонить статью
tcwf_publishpaper.node.EditTask.transition.reject.description=Отклонить статью и отправить ее на доработку
tcwf_publishpaper.node.ReviseTask.transition.resubmit.title=Подать на рассмотрение повторно
tcwf_publishpaper.node.ReviseTask.transition.resubmit.description=Повторно подать статью на рассмотрение корректору
tcwf_publishpaper.node.ReviseTask.transition.cancel.title=Отменить публикацию статьи
tcwf_publishpaper.node.ReviseTask.transition.cancel.description=Публикация завершена
tcwf_publishpaper.node.PublishTask.transition.done.description=Отменить публикацию статьи и завершить бизнес-процесс
tcwf_publishpaper.node.PublishTask.transition.done.title=Готово

Alfresco понимает файлы локализации только в ASCII кодировке, поэтому приведенный выше файл нужно обработать при помощи скрипта convert.sh (путь до утилиты native2ascii зависит от особенностей вашей установки):

#!/bin/bash
for x in `ls *.in`; do
  cat $x | /opt/java/bin/native2ascii | grep -ve '^#'> `basename $x .in`; 
done;

Последний шаг – добавление необходимых кнопок и прочих элементов интерфейса в веб-клиент Alfresco(web-client-config-custom.xml):

<alfresco-config>
 
   <config evaluator="string-compare" condition="Languages">
      <languages>
         <language locale="ru_RU">Russian</language>
      </languages>
   </config>
 
  <!--  Добавляем новый тип в список контента -->
  <config evaluator="string-compare" condition="Content Wizards">
    <content-types>
      <type name="tc:article" />
    </content-types>
  </config>
 
  <!--  Отображение  бизнес процессов -->
 
  <!-- Подача статьи -->
  <config evaluator="node-type" condition="tcwf:submitTask" replace="true">
    <property-sheet>
      <!-- Разделитель -->
      <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
      <!-- Описание процесса -->
      <show-property name="bpm:workflowDescription" component-generator="TextAreaGenerator" />
      <!-- Комментарий -->
      <show-property name="bpm:comment" component-generator="TextAreaGenerator" />
      <!-- Выбор редактора. Переопределяем текст, который будет отображаться -->
      <show-association name="bpm:assignee" display-label-id="tcwf_assignee_label" />
      <!-- Опубликовать статью online -->
      <show-property name="tcwf:publishOnline" display-label-id="tcwf_publish_online_label" />
    </property-sheet>
  </config>
 
  <!-- Корректирование статьи -->
  <config evaluator="node-type" condition="tcwf:correctTask" replace="true">
    <property-sheet>
      <!-- Разделитель -->
      <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
      <!-- Комментарий -->
      <show-property name="bpm:comment" component-generator="TextAreaGenerator" />
      <!-- Статус -->
      <show-property name="bpm:status" />      
      <!-- Опубликовать статью online -->
      <show-property name="tcwf:publishOnline" display-label-id="tcwf_publish_online_label" read-only="true"/>
    </property-sheet>
  </config>
 
  <!-- Редактирование статьи -->
  <config evaluator="node-type" condition="tcwf:editTask" replace="true">
    <property-sheet>
      <!-- Разделитель -->
      <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
      <!-- Комментарий -->
      <show-property name="bpm:comment" component-generator="TextAreaGenerator" />
      <!-- Статус -->
      <show-property name="bpm:status" />      
      <!-- Опубликовать статью online -->
      <show-property name="tcwf:publishOnline" display-label-id="tcwf_publish_online_label" />
    </property-sheet>
  </config>
 
  <!-- Публикация статьи -->
  <config evaluator="node-type" condition="tcwf:publishTask" replace="true">
    <property-sheet>
      <!-- Разделитель -->
      <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
      <!-- Комментарий -->
      <show-property name="bpm:comment" component-generator="TextAreaGenerator" />
      <!-- Статус -->
      <show-property name="bpm:status" />      
      <!-- Опубликовать статью online -->
      <show-property name="tcwf:publishOnline" display-label-id="tcwf_publish_online_label" read-only="true" />
    </property-sheet>
  </config>
 
  <!-- Правка статьи -->
  <config evaluator="node-type" condition="tcwf:reviseTask" replace="true">
    <property-sheet>
      <!-- Разделитель -->
      <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
      <!-- Комментарий -->
      <show-property name="bpm:comment" component-generator="TextAreaGenerator" />
      <!-- Статус -->
      <show-property name="bpm:status" />      
      <!-- Опубликовать статью online -->
      <show-property name="tcwf:publishOnline" display-label-id="tcwf_publish_online_label" />
    </property-sheet>
  </config>
 
</alfresco-config>

Локализация веб-клиента Alfresco (webclient_ru_RU.properties.in):

tcwf_assignee_label=Редактор
tcwf_publish_online_label=Опубликовать online

Этот файл также нужно конвертировать в ASCII кодировку при помощи convert.sh. Для загрузки workflow и моделей требуется создание ещё одного файла, который Alfresco просмотрит при старте и импортирует всё, что нужно (trashco-model-context.xml):

<?xml version='1.0' encoding='UTF-8'?>
 
<!-- Описание моделей и процессов для загрузки -->
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
 
<beans>
 
  <!-- Регистрируем ресурсы -->
  <bean id="extension.workflowBootstrap" parent="workflowDeployer">
    <property name="workflowDefinitions">
      <list>
        <props>
          <!-- Тип процесса -->
          <prop key="engineId">jbpm</prop>
          <!-- Путь -->
          <prop key="location">alfresco/extension/workflows/PublishPaperProcess.xml</prop>
          <!-- MIME -->
          <prop key="mimetype">text/xml</prop>
          <!-- Загружать каждый раз -->
          <prop key="redeploy">true</prop>
        </props>
      </list>
    </property>
    <!-- Локализация -->
    <property name="labels">
      <list>
        <value>alfresco.extension.tcWorkflow</value>
      </list>
    </property>
    <!-- Список моделей для загрузки -->
    <property name="models">
        <list>
            <value>alfresco/extension/tcModel.xml</value>
            <value>alfresco/extension/tcWorkflowModel.xml</value>
        </list>
    </property>
  </bean>
 
</beans>
<!-- Конец описания -->

Теперь можно устанавливать наш бизнес-процесс, для этого созданные файлы нужно скопировать в $ALFRESCO/tomcat/shared/classes/alfresco/extension. Чтобы избежать ошибок вида

ERROR [org.springframework.web.context.ContextLoader] Context initialization failed
java.util.MissingResourceException: Can't find bundle for base name alfresco.extension.tcWorkflow, locale en_US

нужно сделать ссылку tcWorkflow.properties → tcWorkflow_ru_RU.properties (или просто скопировать). Перезапускаем Alfresco и наслаждаемся нашим процессом ;)

4884
Прикрепленные файлыРазмер
publish_paper.zip8.44 кб

Комментарии

avasyukov аватар

Спасибо за подробный рассказ. Местами читается жестко. ) Зато полно. Можете посоветовать правильную документацию для дальнейшего погружения?

[Оффтоп] А как удалось сделать такие красивые раскрывающихся блоки кода? ) [/Оффтоп]

fufler аватар

На русском языке информации практически нет. Советую Alfresco Developer Guide by Jeff Potts, в ней достаточно подробно описана кастомизация Alfresco, но она стоит денег. Есть бесплатно распространяющийся кусочек этой книги под названием Advanced Workflow Article: http://ecmarchitect.com/images/articles/ -- здесь она лежит в alfresco-workflow.
Сами блоки кода подсвечены при помощи highlight, спойлеры можно сделать при помощи html & js:

Код спойлера
avasyukov аватар

 Спасибо!

Скажите, а для какой версии это актуально? В 3.4 процесс не работает... 

Причем если попытаться задеплоить его из консоли рабочих процессов, то говорит "Namespace prefix tcwf is not mapped to a namespace URI".

fufler аватар

Я проверял на 3.4.c community edition. Пространство имен tcwf: описано в файле  tcWorkflowModel.xml. Вы скопировали этот файл в alfresco/extension?

 Да, я всё скопировал как написано в описании, но при перезапуске процессы не появляются в списке, а если через консоль делать, то вот эта ошибка появляется. Сейчас у меня уже получилось опубликовать, правда криво, через добавление модели и описания процесса в соответствующие папки Data Dictionary - получилась какая то фигня....

На самом деле я не хотел особо напрягать Вас выяснение почему не работает, так как тут все и без этого понятно - у меня руки кривые, вот процесс и не запустился как надо :) 

Спасибо за статью, на русском очень мало толковых мануалов да и форум по теме только один нашел...

 

fufler аватар

 Моя ошибка :) Дополнил статью: Вам нужен файл trashco-model-context.xml. Также в конце статьи добавил ссылку на архив, содержащий все необходимые файлы. Если Вас интересует ещё что-то по Alfresco, то предлагайте тему для статьи -- постараюсь осветить.

Скажите... если  статью отправлять... редактору а он группе пользователей.....

придя на таск выбора группы пользователей.... редактор может захотеть вернуть статью.... на доработку... так как аспект выбора группы пользователей... обязательный всегда.. без выбора одного из пользователей.... он не сможет вернуть статью на даработку... как сделать так... чтоб заполнение группы для возвращения было не обязательным.)

fufler аватар

 Не совсем понял ваш вопрос. Сейчас никакая группа не выбирается (разве что в самом описании процесса). Опишите более детально то, что вы хотите получить.

Спасибо за статью!

Все что нужно скопировал, но при запуске бизнес-процесса выдает ошибку:

"Во время операции возникла системная ошибка: 02180017 Failed to signal transition null from workflow task jbpm$5".

Alfresco Community 3.4

fufler аватар

 Не за что. Что в логе по этому поводу написано?

В логах написано следующее: 11:49:42,082 User:admin WARN [alfresco.missingProperties] Failed to find property 'tcwf:comments' for node: workspace://SpacesStore/55c79da4-3928-4b52-be6e-b3a5e7a9df6f 11:49:48,442 User:admin ERROR [ui.common.Utils] Во время операции возникла системная ошибка: 02280004 Failed to signal transition null from workflow task jbpm$3. org.alfresco.service.cmr.workflow.WorkflowException: 02280004 Failed to signal transition null from workflow task jbpm$3.
fufler аватар

В этой статье я не использовал tcwf:comments. Все файлы конфигурации одной версии?

у меня с вашими описаниями наконец то получилось!
fufler аватар

 Очень рад :)

У меня такой вопрос.

В файле PublishPaperProcess.xml есть значение 'GROUP_correctors' и 'GROUP_publishers'. Не могли бы вы описать эти значения? В алфреско нужно обязательно заводить такие группы?

Сам отвечу ))) Да. Оказывается необходимо создать группы "correctors" и "publishers". Тогда все проходит без ошибок :) Но этот бизнес процесс не появляется в задачах редактора :( Так и должно быть?
fufler аватар

Можете более подробно описать проблему?

Сорри, проблемы не существует ))) Статья оказывется сначала идет к корректору, а потом уже к редактору!

Пробую исправить стандартный процесс, но он не меняется. В чем может быть дело? Возможно ли изменить или удалить стандартные процессы?

Как удалить я понял. Но вот как исправить? Смотрю в сторону файлов ы каталоге tomcat\webapps\alfresco\WEB-INF\classes\alfresco\.

 Да, именно в этой директории. Дальше находите правильный процесс в директории workflow и редактируете нужный процесс. Есть более правильный вариант с точки зрения архитектуры alfresco - удалить оттуда нужный workflow и скопировать измененную версию в tomcat/shared/classes/alfresco/. В таком случае Ваш процесс сохранится и не "умрет" после апдейта системы.

fufler аватар

 Крайне не рекомендую удалять/изменять стандартные workflow, потому что многие из них используются внутри alfresco. Если они вам просто мешают в веб-интерфейсе, их лучше скрыть. Вот пример для share: http://niketa-alfresco3.blogspot.com/2011/03/how-to-exclude-workflow-from-list-in.html

Тоже вариант.. Стандартный скрыть, но создать нестандартный на его базе..

Никак не могу найти файл, где для стандартных процессов прописано то, что у Вас в статье в share-config-custom.xml.

 

fufler аватар

 Посмотрите tomcat/webapps/share/WEB-INF/classes/alfresco/share-workflow-form-config.xml

 

 Скопировал то что в архиве у вас в нужную папку, перегрузил Alfresco, создал 2 группы "correctors" и "publishers", занес туда пользователей...,Запустил в Альфреске появившийся воркфлоу, почему то после выбора редактора и нажатия кнопки ОК ничего не происходит.я так понял задание должно прийти корректорам сначало, затем редакторам а уж потом опубликовано...Что я делаю не так?

fufler аватар

 Да, сначала должно прийти корректорам. Вы можете использовать workflow console, чтобы понять, что происходит в данный момент.

 здравствуйте.какую команду в workflow console для этого использовать?

 все.разобрался...

fufler аватар

 И всё-таки:

show workflows all

show paths <workflow-id>
show tasks <path-id>
desc task <task-id>
 
В чём была проблема?

Здраствуйте, помогите пожалуйста

Например, мне нужно параллельно с тем как статья идет на доработку(к user 2) скопировать ее в область и (user1 и user2) "Документы на доработке" как это можно описать в бизнес процессе или, может есть другой какой-нибудь способ?

fufler аватар

 Это можно сделать при помощи JavaScript API внутри описания workflow. А зачем Вы это хотите сделать? Дублировать документы при прохождении процесса -- далеко не самый лучший вариант.

Мне, нужно сделать что-то на подобии почты, чтобы когда один пользователь давал задание другому, этот документ у того кто отправляет попадал бы ему в исходящие, а у того кто получает, во входящие.

А еще мот можешь рассказать что-нибудь о создании справочников в альфреско и как с ними работать?

fufler аватар

 Если хотите копировать документ, то используйте JavaScript API. Если хотите просто каким-то образом отображать входящие/исходящие, подумайте о создании параллельной задачи, которая выполняет эти функции. Также можно написать дашлет, который отображает входящие/исходящие документы.

А еще мот можешь рассказать что-нибудь о создании справочников в альфреско и как с ними работать?

Cправочников в Альфреско, увы, нет, и мне кажется что это самый серьезный недостаток системы. Но в интерейфесе Share в сайтах есть такая штука как DataList - для создания набора однородных объектов. Их типы наперед заданы, но можно создавать свои собственные. Думаю что можно их прикрутить и в другом месте Шары, но я пока не знаю как - может наши гуру помогут. Кроме этого, можно попробовать связать какую-нибудь внешнюю реляционную базу с хранилищем Альфреско при помощи API (На PHP  у меня это получилось)

fufler аватар

 Для шары вполне можно написать дашлет, реализующий подобный функционал. Проблема в том, что универсальное решение сделать всё равно не получится, можно решить только вполне определенную задачу.

Спасибо за подсказку про JavaScript API. С копированием разобралась, просто всего второй день как разбираюсь с альфреско

у меня вот еще возникла такая сложность в  conent model описна properties

<property name="itd:Status">
    <title>Статус заявки</title>
    <type>d:text</type>
    <mandatory>true</mandatory>
<!-- Ограничения, накладываемые на данное поле. В данном случае мы используем ограничение "itd:status", о его устройстве дальше -->
    <constraints>
        <constraint ref="itd:status"/>
    </constraints>
</property>

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

а пишу так

 <config evaluator="node-type" condition="tcwf:editTask" replace="true">
    <property-sheet>
      <!-- Разделитель -->
      <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
      <!-- Статус -->
      <show-property name="itd:Status" />     

    </property-sheet>
  </config>

Но поле для выбора не отображается ((

и в логах ошибка

[alfresco.missingProperties] Failed to find property 'itd:Status' for node: workspace://SpacesStore/f97f051f-219b-4bac-9409-0d88b781e4ff          

Что я делаю не правильно?????                         

fufler аватар

 Вы путаете content model и workflow model. Метаданные документов не переносятся на метаданные процессов. Что Вы пытаетесь сделать?

У меня есть входящий документ у него есть свойство "примечание" и мне нужно, чтобы когда я передаю этот документ в бизнес процессе, тот кому я его передаю мог это поле менять и кажется я уже вообще не понимаю как это сделать :)

fufler аватар

Добавьте к соответствующему task'у  новое свойство для хранения примечания, которое ввел исполнитель. При переходе (transition) при помощи JavaScript изменяйте соответствующее поле прикрепленных документов.

Сапсибо за помощь :)

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

Тип документа - Договор

Типы контента - об аренде, об оплате и т.д.

и затем в зависимости от выбранных в поле для контента появлялся бы шаблон документа.....

Как это можно сделать, если можно или где об этом можно прочитать?

Спасибо за статью. Возник вопрос , а можно ли предопределить  description каждого этапа процесса , например из скрипта , который его будет вызывать.

fufler аватар

А что вы хотите сделать? Посмотрите вот это.

 Спасибо , именно то что надо. Просто есть файл , в котором указаны участники процесса(фиксированное число) , а так же описание действия для каждого участника. Они могут менятся , а workflow остается тот же.

у меня редактором почему то можновыбрать любово user'a

и после старта процесса у назначенного не появляется задачи

первое норм

Здравствуйте, добросовестно переписал файлы из архива выше и рестартанул Алфреску, процесс не появился, подскажите плиз что сделано неправильно? версия 3.4.d

fufler аватар

Добрый день. Прочитайте вот этот комментарий.

файл trashco-model-context.xml из архива переписался...

fufler аватар

В логах есть ошибки?

А как лог посмотреть? не сочтите за дилетанство) опыта в Алфрески никакого

fufler аватар

 $ALFRESCO_PATH/alfresco.log

Извините, что весь лог, не нашел как файл прикрепить...

[collapse collapsed = log]

10:18:31,274 INFO  [org.alfresco.config.JndiPropertiesFactoryBean] Loading properties file from class path resource [alfresco/repository.properties]
10:18:31,280 INFO  [org.alfresco.config.JndiPropertiesFactoryBean] Loading properties file from class path resource [alfresco/domain/transaction.properties]
10:18:31,281 INFO  [org.alfresco.config.JndiPropertiesFactoryBean] Loading properties file from file [/opt/alfresco-3.4.d/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/module/org_alfresco_module_dod5015/alfresco-global.properties]
10:18:31,281 INFO  [org.alfresco.config.JndiPropertiesFactoryBean] Loading properties file from file [/opt/alfresco-3.4.d/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/module/org_alfresco_module_wcmquickstart/alfresco-global.properties]
10:18:31,282 INFO  [org.alfresco.config.JndiPropertiesFactoryBean] Loading properties file from file [/opt/alfresco-3.4.d/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/module/tests/alfresco-global.properties]
10:18:31,282 INFO  [org.alfresco.config.JndiPropertiesFactoryBean] Loading properties file from file [/opt/alfresco-3.4.d/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/module/test/alfresco-global.properties]
10:18:31,282 INFO  [org.alfresco.config.JndiPropertiesFactoryBean] Loading properties file from URL [file:/opt/alfresco-3.4.d/tomcat/shared/classes/alfresco-global.properties]
10:18:31,352 INFO  [org.alfresco.config.JndiPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/alfresco-shared.properties]
10:18:31,452 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/version.properties]
10:18:31,470 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/domain/cache-strategies.properties]
10:18:31,496 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/module/org.alfresco.module.vti/context/vti.properties]
10:18:31,503 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from URL [file:/opt/alfresco-3.4.d/tomcat/shared/classes/alfresco/extension/custom-vti.properties]
10:18:52,493 WARN  [org.springframework.beans.GenericTypeAwarePropertyDescriptor] Invalid JavaBean property 'serviceBeans' being accessed! Ambiguous write methods found next to actually used [public void org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setServiceBeans(java.util.List)]: [public void org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setServiceBeans(java.lang.Object[])]
10:18:53,119 INFO  [org.springframework.extensions.webscripts.TemplateProcessorRegistry] Registered template processor Repository Template Processor for extension ftl
10:18:53,122 INFO  [org.springframework.extensions.webscripts.ScriptProcessorRegistry] Registered script processor Repository Script Processor for extension js
10:18:59,307 INFO  [org.alfresco.repo.domain.schema.SchemaBootstrap] Schema managed by database dialect org.hibernate.dialect.MySQLInnoDBDialect.
10:18:59,944 INFO  [org.alfresco.repo.domain.schema.SchemaBootstrap] No changes were made to the schema.
10:19:00,014 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Starting 'sysAdmin' subsystem, ID: [sysAdmin, default]
10:19:00,028 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/version.properties]
10:19:00,029 INFO  [org.alfresco.config.JndiPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/alfresco-shared.properties]
10:19:00,029 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/domain/cache-strategies.properties]
10:19:00,029 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/module/org.alfresco.module.vti/context/vti.properties]
10:19:00,029 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from URL [file:/opt/alfresco-3.4.d/tomcat/shared/classes/alfresco/extension/custom-vti.properties]
10:19:00,222 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Startup of 'sysAdmin' subsystem, ID: [sysAdmin, default] complete
10:19:03,160 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Starting 'thirdparty' subsystem, ID: [thirdparty, default]
10:19:03,176 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/version.properties]
10:19:03,177 INFO  [org.alfresco.config.JndiPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/alfresco-shared.properties]
10:19:03,178 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/domain/cache-strategies.properties]
10:19:03,178 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/module/org.alfresco.module.vti/context/vti.properties]
10:19:03,178 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from URL [file:/opt/alfresco-3.4.d/tomcat/shared/classes/alfresco/extension/custom-vti.properties]
10:19:03,832 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Startup of 'thirdparty' subsystem, ID: [thirdparty, default] complete
10:19:03,833 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Starting 'OOoDirect' subsystem, ID: [OOoDirect, default]
10:19:03,850 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/version.properties]
10:19:03,851 INFO  [org.alfresco.config.JndiPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/alfresco-shared.properties]
10:19:03,854 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/domain/cache-strategies.properties]
10:19:03,854 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/module/org.alfresco.module.vti/context/vti.properties]
10:19:03,855 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from URL [file:/opt/alfresco-3.4.d/tomcat/shared/classes/alfresco/extension/custom-vti.properties]
10:19:04,336 WARN  [org.alfresco.util.OpenOfficeConnectionTester] An initial OpenOffice connection could not be established.
10:19:04,350 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Startup of 'OOoDirect' subsystem, ID: [OOoDirect, default] complete
10:19:05,513 INFO  [org.alfresco.repo.admin.ConfigurationChecker] The Alfresco root data directory ('dir.root') is: /opt/alfresco-3.4.d/alf_data
10:19:05,627 INFO  [org.alfresco.repo.admin.patch.PatchExecuter] Checking for patches to apply ...
10:19:06,333 INFO  [org.alfresco.repo.admin.patch.PatchExecuter] No patches were required.
10:19:06,366 INFO  [org.alfresco.repo.module.ModuleServiceImpl] Found 4 module(s).
10:19:06,449 INFO  [org.alfresco.repo.module.ModuleServiceImpl] Starting module 'org_alfresco_module_wcmquickstart' version 1.0.
10:19:06,512 INFO  [org.alfresco.repo.module.ModuleServiceImpl] Starting module 'org_alfresco_module_dod5015' version 1.0.
10:19:06,602 INFO  [org.alfresco.repo.module.ModuleServiceImpl] Starting module 'org.alfresco.module.vti' version 1.2.
10:19:06,645 INFO  [org.alfresco.repo.module.ModuleServiceImpl] Starting module 'org.alfresco.module.quickr' version 1.0.
10:19:06,666 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Starting 'fileServers' subsystem, ID: [fileServers, default]
10:19:06,685 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/version.properties]
10:19:06,686 INFO  [org.alfresco.config.JndiPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/alfresco-shared.properties]
10:19:06,687 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/domain/cache-strategies.properties]
10:19:06,689 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/module/org.alfresco.module.vti/context/vti.properties]
10:19:06,689 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from URL [file:/opt/alfresco-3.4.d/tomcat/shared/classes/alfresco/extension/custom-vti.properties]
10:19:07,039 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Starting 'Authentication' subsystem, ID: [Authentication, managed, alfrescoNtlm1]
10:19:07,058 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/version.properties]
10:19:07,059 INFO  [org.alfresco.config.JndiPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/alfresco-shared.properties]
10:19:07,059 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/domain/cache-strategies.properties]
10:19:07,059 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/module/org.alfresco.module.vti/context/vti.properties]
10:19:07,059 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from URL [file:/opt/alfresco-3.4.d/tomcat/shared/classes/alfresco/extension/custom-vti.properties]
10:19:07,167 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Startup of 'Authentication' subsystem, ID: [Authentication, managed, alfrescoNtlm1] complete
10:19:12,274 ERROR [org.alfresco.fileserver] Failed to get local domain/workgroup name, using default of WORKGROUP
10:19:12,274 ERROR [org.alfresco.fileserver] (This may be due to firewall settings or incorrect <broadcast> setting)
10:19:12,340 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Startup of 'fileServers' subsystem, ID: [fileServers, default] complete
10:19:12,340 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Starting 'imap' subsystem, ID: [imap, default]
10:19:12,357 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/version.properties]
10:19:12,357 INFO  [org.alfresco.config.JndiPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/alfresco-shared.properties]
10:19:12,357 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/domain/cache-strategies.properties]
10:19:12,357 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/module/org.alfresco.module.vti/context/vti.properties]
10:19:12,358 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from URL [file:/opt/alfresco-3.4.d/tomcat/shared/classes/alfresco/extension/custom-vti.properties]
10:19:12,472 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Startup of 'imap' subsystem, ID: [imap, default] complete
10:19:12,472 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Starting 'email' subsystem, ID: [email, outbound]
10:19:12,488 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/version.properties]
10:19:12,488 INFO  [org.alfresco.config.JndiPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/alfresco-shared.properties]
10:19:12,489 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/domain/cache-strategies.properties]
10:19:12,489 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/module/org.alfresco.module.vti/context/vti.properties]
10:19:12,489 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from URL [file:/opt/alfresco-3.4.d/tomcat/shared/classes/alfresco/extension/custom-vti.properties]
10:19:12,584 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Startup of 'email' subsystem, ID: [email, outbound] complete
10:19:12,585 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Starting 'email' subsystem, ID: [email, inbound]
10:19:12,601 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/version.properties]
10:19:12,601 INFO  [org.alfresco.config.JndiPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/alfresco-shared.properties]
10:19:12,601 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/domain/cache-strategies.properties]
10:19:12,601 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/module/org.alfresco.module.vti/context/vti.properties]
10:19:12,601 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from URL [file:/opt/alfresco-3.4.d/tomcat/shared/classes/alfresco/extension/custom-vti.properties]
10:19:12,657 WARN  [org.springframework.beans.GenericTypeAwarePropertyDescriptor] Invalid JavaBean property 'blockedSenders' being accessed! Ambiguous write methods found next to actually used [public void org.alfresco.email.server.EmailServer.setBlockedSenders(java.util.List)]: [public void org.alfresco.email.server.EmailServer.setBlockedSenders(java.lang.String)]
10:19:12,657 WARN  [org.springframework.beans.GenericTypeAwarePropertyDescriptor] Invalid JavaBean property 'allowedSenders' being accessed! Ambiguous write methods found next to actually used [public void org.alfresco.email.server.EmailServer.setAllowedSenders(java.util.List)]: [public void org.alfresco.email.server.EmailServer.setAllowedSenders(java.lang.String)]
10:19:12,677 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Startup of 'email' subsystem, ID: [email, inbound] complete
10:19:12,677 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Starting 'googledocs' subsystem, ID: [googledocs, default]
10:19:12,703 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/version.properties]
10:19:12,704 INFO  [org.alfresco.config.JndiPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/alfresco-shared.properties]
10:19:12,704 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/domain/cache-strategies.properties]
10:19:12,704 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/module/org.alfresco.module.vti/context/vti.properties]
10:19:12,704 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from URL [file:/opt/alfresco-3.4.d/tomcat/shared/classes/alfresco/extension/custom-vti.properties]
10:19:14,032 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Startup of 'googledocs' subsystem, ID: [googledocs, default] complete
10:19:14,068 INFO  [org.alfresco.repo.usage.UserUsageTrackingComponent] Enabled - calculate missing user usages ...
10:19:14,138 INFO  [org.alfresco.repo.usage.UserUsageTrackingComponent] Found 0 users to recalculate
10:19:14,138 INFO  [org.alfresco.repo.usage.UserUsageTrackingComponent] ... calculated missing usages for 0 users
10:19:14,138 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Starting 'Synchronization' subsystem, ID: [Synchronization, default]
10:19:14,151 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/version.properties]
10:19:14,151 INFO  [org.alfresco.config.JndiPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/alfresco-shared.properties]
10:19:14,151 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/domain/cache-strategies.properties]
10:19:14,151 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/module/org.alfresco.module.vti/context/vti.properties]
10:19:14,151 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from URL [file:/opt/alfresco-3.4.d/tomcat/shared/classes/alfresco/extension/custom-vti.properties]
10:19:14,324 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Startup of 'Synchronization' subsystem, ID: [Synchronization, default] complete
10:19:14,406 INFO  [org.alfresco.service.descriptor.DescriptorService] Alfresco JVM - v1.6.0_18-b07; maximum heap size 742,438MB
10:19:14,407 INFO  [org.alfresco.service.descriptor.DescriptorService] Alfresco started (Community): Current version 3.4.0 (d 3370) schema 4113 - Originally installed version 3.4.0 (d 3370) schema 4113
10:19:14,408 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Starting 'Replication' subsystem, ID: [Replication, default]
10:19:14,433 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/version.properties]
10:19:14,434 INFO  [org.alfresco.config.JndiPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/alfresco-shared.properties]
10:19:14,434 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/domain/cache-strategies.properties]
10:19:14,434 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/module/org.alfresco.module.vti/context/vti.properties]
10:19:14,434 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from URL [file:/opt/alfresco-3.4.d/tomcat/shared/classes/alfresco/extension/custom-vti.properties]
10:19:14,443 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Startup of 'Replication' subsystem, ID: [Replication, default] complete
10:19:18,262 INFO  [org.alfresco.module.vti.VtiServer] Vti server started successfully on port: 7070
10:19:28,737 INFO  [org.springframework.extensions.webscripts.DeclarativeRegistry] Registered 449 Web Scripts (+0 failed), 700 URLs
10:19:28,737 INFO  [org.springframework.extensions.webscripts.DeclarativeRegistry] Registered 2 Package Description Documents (+0 failed)
10:19:28,737 INFO  [org.springframework.extensions.webscripts.DeclarativeRegistry] Registered 1 Schema Description Documents (+0 failed)
10:19:28,739 INFO  [org.springframework.extensions.webscripts.AbstractRuntimeContainer] Initialised Repository Web Script Container (in 8596.051ms)
10:19:28,749 INFO  [org.springframework.extensions.webscripts.TemplateProcessorRegistry] Registered template processor freemarker for extension ftl
10:19:28,750 INFO  [org.springframework.extensions.webscripts.ScriptProcessorRegistry] Registered script processor javascript for extension js
10:19:29,070 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Starting 'wcm_deployment_receiver' subsystem, ID: [wcm_deployment_receiver, default]
10:19:29,092 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/version.properties]
10:19:29,093 INFO  [org.alfresco.config.JndiPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/alfresco-shared.properties]
10:19:29,093 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/domain/cache-strategies.properties]
10:19:29,093 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/module/org.alfresco.module.vti/context/vti.properties]
10:19:29,093 INFO  [org.alfresco.config.FixedPropertyPlaceholderConfigurer] Loading properties file from URL [file:/opt/alfresco-3.4.d/tomcat/shared/classes/alfresco/extension/custom-vti.properties]
10:19:29,181 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Startup of 'wcm_deployment_receiver' subsystem, ID: [wcm_deployment_receiver, default] complete
10:19:45,027 INFO  [org.springframework.extensions.webscripts.DeclarativeRegistry] Registered 309 Web Scripts (+0 failed), 319 URLs
10:19:45,029 INFO  [org.springframework.extensions.webscripts.DeclarativeRegistry] Registered 8 Package Description Documents (+0 failed)
10:19:45,029 INFO  [org.springframework.extensions.webscripts.DeclarativeRegistry] Registered 0 Schema Description Documents (+0 failed)
10:19:45,117 INFO  [org.springframework.extensions.webscripts.AbstractRuntimeContainer] Initialised Spring Surf Container Web Script Container (in 2231.9873ms)
10:19:45,169 INFO  [org.springframework.extensions.webscripts.TemplateProcessorRegistry] Registered template processor freemarker for extension ftl
10:19:45,266 INFO  [org.springframework.extensions.webscripts.ScriptProcessorRegistry] Registered script processor javascript for extension js
10:19:45,453 INFO  [org.springframework.extensions.webscripts.TemplateProcessorRegistry] Registered template processor freemarker for extension ftl
10:19:45,457 INFO  [org.springframework.extensions.webscripts.ScriptProcessorRegistry] Registered script processor javascript for extension js
10:19:45,688 INFO  [org.springframework.extensions.webscripts.TemplateProcessorRegistry] Registered template processor freemarker for extension ftl
10:19:45,699 INFO  [org.springframework.extensions.webscripts.ScriptProcessorRegistry] Registered script processor javascript for extension js
 

[/collapse]
fufler аватар

Для выкладывания таких простыней существуют спеиальные сервисы (pastebin.com тот же). Судя по логу, файл  trashco-model-context.xml в нужном месте остутствует.

он находится по этому адресу $ALFRESCO/tomcat/shared/classes/alfresco/extension

Что было сделано по шагам:

1. Скачан и распакован архив

2. Содержимое каталогов extension и web-extension архива было переписано в каталоги extension и web-extension Алфрески, т.е. вот сюда $ALFRESCO/tomcat/shared/classes/alfresco/

3. Ну и собственно рестарт ./alfresco.sh restart

fufler аватар

В логе должо присутствовать что-то типа 

13:38:08,944 User:System INFO  [alfresco.repo.workflow] Workflow deployer: Deployed process definition 'Публикация статьи' (version 36) from 'alfresco/extensi

on/workflows/PublishPaperProcess.xml' with 1 problems

Попробуйте в trashco-model-context.xml заменить id="extension.workflowBootstrap" на   id="qwe123".

Это помогло, благодарю)

А можно пояснить в чем был затык?

fufler аватар

 Проблема в том, что где-то уже существует bean с таким id и он грузится первым, а второй bean, соответственно, игнорируется.

Помогло в том плане, что процесс появился в зоне видимости)

При создании бизнесс-процесса нельзя выбрать ответственных, а при одобрении статьи корректором (ему к тому же приходится назначать самого себя) возникает вот такой сбой:

org.alfresco.service.cmr.workflow.WorkflowException: 07290006 Failed to signal transition approve from workflow task jbpm$31

fufler аватар

При создании бизнесс-процесса нельзя выбрать ответственных

Через какой интерфейс запускаете процесс?

ему к тому же приходится назначать самого себя

Зачем ему это делать?

 возникает вот такой сбой:

org.alfresco.service.cmr.workflow.WorkflowException: 07290006 Failed to signal transition approve from workflow task jbpm$31

 

Это сообщение вообще ни о чём не говорит, гораздо больший интерес представляет та часть лога, что расположена следом. Предположу, что не существует групп correctors и publishers.

1. share

2. Когда корректор открывает назначенный ему бизнес-процесс вверху слева надпись "Изменить задание: Проверить и откорректировать статью", а справа у него есть кнопка "Назначить себе", ниже сообщение "Задание не назначена"

3. Это не из лога, при попытке одобрить статью, т.е. при нажатии на кнопку "Одобрить статью" вылезает окошечко, где вверху написано "СБОЙ", ниже эта ошибка, если отклонить статью то она без ошибок возвращается к создателю бизнес-процесса

Группы такие есть, и в них по одному юзеру

Первое сообщение заблокировано как спам, посмотрите пожалуйста как админ этого сайта

fufler аватар

Сожалею, но я не админ :)

Тогда вкратце - share - у корректора вверху появляется кнопка "Назначить себе" и сообщение что "Задание не назначенА" - это ошибка не из лога, появляется при нажатии на кнопку "Одобрить статью", если статью отклонить то она возвращается обратно без ошибок, такие группы созданы

Тогда вкратце - share - у корректора вверху появляется кнопка "Назначить себе" и сообщение что "Задание не назначенА" - это ошибка не из лога, появляется при нажатии на кнопку "Одобрить статью", если статью отклонить то она возвращается обратно без ошибок, такие группы созданы

И если статью отклонить то она нормально возвращается обратно без ошибок

Дублирую:

1. share

2. вверху справа есть кнопка "Назначить себе" и сообщение что "Задание не назначенА" (именно так синтаксис соблюден полностью)

3. это не из логов, это после нажатия на кнопку "Одобрить статью" появляется окошко с ошибкой где вверху написано "СБОЙ", ниже этот текст.

Группы такие есть