1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/s_u-su-rBPM

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

RBPM

BPMN протокол

Данный проект является реализацией протокола BPMN, но только его подмножества. Включает в себя: startEvent, endEvent, serviceTask, userTask, parallelGateway, exclusiveGateway и sequenceFlow.

На этой основе было проведено расширение:

Расширенные атрибуты включают:

beforeStart — выполняется перед началом активности для всех задач, значение — это идентификатор тега script.
afterStart — выполняется после начала активности для всех задач, значение — это идентификатор тега script.
beforeEnd — выполняется перед завершением активности для всех задач, значение — это идентификатор тега script.
afterEnd — выполняется после завершения активности для всех задач, значение — это идентификатор тега script.
exclusiveFlowTrigger — определяет, может ли продолжаться исключительный маршрут потока, применяется к последовательности flow после exclusiveGateway. Используется для определения, может ли текущий sequenceFlow продолжаться. Значение — это идентификатор тега скрипта, возвращаемое значение скрипта должно быть логическим значением.
assignRule — назначает пользователя, значение — это идентификатор тега скрипта, возвращает идентификатор пользователя.
viewConfig — конфигурация представления, применяется ко всем userTasks, значение — это идентификатор тега скрипта.

Расширенные теги:

script — тег скрипта, содержащий программный код. Например: <script>User.create! email: 'abc@abc.com' </script>.
viewConfig — тег конфигурации представления.

Например:

<viewConfig>
    ...
    <showUrl>/path/to/your/page</showUrl>          обязательный тег
    ...
</viewConfig>

Для получения более подробной информации о протоколе см.: http://www.mossle.com/docs/jbpm4devguide/html/bpmn2.html

Пример документации RBPMN: http://git.oschina.net/tavern/rBPM/blob/master/xml_demo.md

Установка

Добавьте следующую строку в файл Gemfile вашего приложения:

gem 'rBPM', git: 'https://git.oschina.net/tavern/rBPM.git'

После добавления выполните:

$ bundle

Использование

Доступные команды

Этот плагин имеет три команды генерации:

Генерация файлов миграции для базы данных движка

$ rails g rBPM:migration

Создание шаблонов для движка

$ rails g rBPM:templates

Создание необходимых моделей для движка

$ rails g rBPM:model

Методы, доступные в модели ProcessDefine

create_instance:method

Создаёт экземпляр процесса. Параметры: user_id:integer Возвращаемое значение: ProcessInstance:object

ProcessTask

show_url:method — получает бизнес-адрес записи пользовательской задачи. Возвращаемое значение: string

view_configs:Hash — получает конфигурацию представления, записанную в BPMN документе, фиксированные данные.

Использование в контроллере

В контроллерах, где требуется использовать движок, наследуйте от RBPM::BaseController, например:

class YourController < RBPM::BaseController

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

class RBPM::BaseController < ApplicationController::Base
    # Задача существует?
    def task_present?
      @task.present?
    end

    # Получить текущую переданную пользовательскую задачу
    def task
    end

    # Зафиксировать задачу
    def task_commit
        # Автоматически получить переменные процесса @process_variables hash типа, эти данные будут сохранены
        # Автоматическое получение переменных действия @process_parameters hash типа, используется один раз и действует до следующего пользовательского задания
    end
end

Например:


# Этот фрагмент кода демонстрирует фиксацию текущей задачи. В этом контроллере установлено after_action, которое автоматически фиксирует задачу после выполнения действия deal_with.
# В deal_with установлены два экземпляра переменной. task_commit автоматически получит эти экземпляры переменной в качестве параметров.

class YourController < RBPM::BaseController

    after_action :task_commit, only: [:task_commit]

    def deal_with
        # your code
        @process_variables = {name: 'Tavern', age: 100}
        @process_parameters = {address: 'CQ'}
    end
end

Использование в представлении

В представлении, сгенерированном контроллером YourController < RBPM::BaseController>, добавьте распределённое представление, это представление автоматически установит текущий идентификатор пользовательской задачи и не требует передачи идентификатора пользовательской задачи в коде бизнес-логики при фиксации.


class YourController < RBPM::BaseController

    after_action :task_commit, only: [:task_commit]

    def deal_with
        # your code
        @process_variables = {name: 'Tavern', age: 100}
        @process_parameters = {address: 'CQ'}
    end
end

Это представление не использует rails helper, если вы хотите использовать его, замените соответствующий метод. Основные операторы находятся в <%= render partial: 'layouts/engine_actions' %>.


<form action="<%= your_deal_with_path %>" method="post">
  <%= render partial: 'layouts/engine_actions' %>
  <button type="submit">Отправить</button>
</form>

Отправка вашего кода

  1. Fork it ( https://github.com/[my-github-username]/rBPM/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Данный проект является реализацией протокола BPMN, реализована только его часть. Включает в себя: startEvent, endEvent, serviceTask, userTask, parallelGateway, exclusiveGateway и sequenceFlow. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/s_u-su-rBPM.git
git@api.gitlife.ru:oschina-mirror/s_u-su-rBPM.git
oschina-mirror
s_u-su-rBPM
s_u-su-rBPM
master