Демонстрационная среда для пакета dev-ветки.
http://39.101.74.14:8083/index.html
Демонстрационное подключение к бизнес-системе de.
http://39.101.74.14:8183/index.html
Логин: admin
Пароль: 123qwe
Подключение к демонстрационному git:
https://gitee.com/mengtree/workflow-engine-docking
Этот движок рабочего процесса является полностью открытым и бесплатным, он направлен на создание независимого от платформы организационного каркаса и расширяемого движка рабочего процесса.
С помощью пользовательского селектора и обработчика условий можно реализовать связь с существующей организационной структурой и процессом утверждения.
Существует множество проектов рабочих процессов, каждый со своими особенностями, но особенность этого проекта заключается в разделении. Разделение процесса утверждения по условиям выбора и распределения персонала позволяет пользователям настраивать конфигурацию персонала и условий в соответствии с их собственной организационной структурой без необходимости изменения логики кода. Требуется только простая реализация пользовательских интерфейсов для условий и выбора персонала.
Традиционный способ объединяет процесс утверждения с бизнес-системой, особенно в отношении определения формы данных и выбора персонала (организации) в процессе утверждения.
Идея этого проекта состоит в том, чтобы отделить процесс утверждения от бизнес-системы. Основная идея заключается в том, что независимо от того, связан ли процесс утверждения с бизнес-системой или отделён, конечным результатом является обновление состояния формы.
После загрузки исходного кода несколько простых операций позволят запустить проект:
public override void PreConfigureServices(ServiceConfigurationContext context)
{
WorkFlowCoreFrameworkOptions.DbType = FrameworkConfigOrmType.LocalMemory;
}
"ConnectionStrings": {
"Default": "${ConnectionStrings_Default}|HLPexHv+EZ1OHtlrnL2oQLRNTMuY5C1pXgEKuqBqgjaQVWczq9OMn5PErX0cHGUKz7ABrPJZHhI2l4OsnpG7pBt3LAkCvWYfEku7MyTgWjwqVgXq7T6KIMzEdFugrolAFVLC8AChraWFael7QKbJaWUlHEo8mSu1i5wcl+iiFenu8mVYGiIm7+0B0VIhtKbEsBcvvbXhBhrqUsuKXmg9iQ==",
"DefaultVersion": "8.0.26",
"SecretPath": "C:\\workflowcore\\secret.config",
"IsEncrypt": "true",
"Secret": "${ConnectionStrings_Secret}|"
}
Используйте формат ${переменная|значение по умолчанию}, чтобы настроить параметры через переменные среды, переменные консоли при запуске, если не указано, используйте значение по умолчанию. Здесь строка подключения зашифрована. Режим: CBC, заполнение: PKCS7
Если IsEncrypt пуст, можно настроить незашифрованную строку подключения.
SecretPath используется только для локального ключа дешифрования. Это удобно для локального дешифрования. При фактическом запуске вы можете указать ключ дешифрования через переменную ConnectionStrings_Secret.
Пример настройки незашифрованной строки подключения
"ConnectionStrings": {
"Default": "${ConnectionStrings_Default}|Database=WorkflowCore;Data Source=;Port=3308;UserId=;Password=;Charset=utf8;TreatTinyAsBoolean=false;Allow User Variables=True",
"DefaultVersion": "8.0.26",
"SecretPath": "",
"IsEncrypt": "",
"Secret": "${ConnectionStrings_Secret}|"
}
Установите Host как параметр запуска.
Инициализируйте миграцию (если база данных не Mysql, по умолчанию Mysql не требуется).
Удалите папку Migrations в папке WorkFlowCore.Framework.
Введите команду add-migration init в консоли диспетчера пакетов NuGet по умолчанию для проекта WorkFlowCore.Framework и нажмите Enter.
Создайте начальные данные таблицы. Введите команду update-database в консоли диспетчера пакетов NuGet по умолчанию для проекта WorkFlowCore.Framework и нажмите Enter.
Примечание: система использует orm ef, если требуется настраиваемая реализация, перепишите репозиторий
Прежде чем представить использование, давайте кратко рассмотрим структуру кода. Весь проект состоит из четырёх частей:
Обработчик условий
Выбор пользователя
Автоматический вход бизнес-платформы в платформу рабочего процесса
Бизнес-платформа инициирует рабочий процесс через интерфейс для запуска утверждения
Схема синхронизации состояния утверждения рабочего процесса
Рабочий процесс сам по себе не имеет смысла, обычно его необходимо объединить с конкретной организационной структурой и бизнесом. Поэтому необходимо интегрировать его в соответствии со сценарием и системой организации. Цель этого дизайна — отделить ядро рабочего процесса от бизнеса, и достаточно просто реализовать интерфейс, чтобы связать его с существующей организационной структурой.
Реализуйте настраиваемое хранилище. Если вам нужно использовать другие orm, вам необходимо реализовать собственное хранилище базы данных. При реализации хранилища базы данных необходимо соответствующим образом реализовать модуль работы с хранилищем. Короче говоря, на основе реализации по умолчанию реализуйте собственный набор хранилищ.
Реализовать пользовательский выборщик. Реализуйте интерфейс IUserSelector для реализации собственного выбора пользователя.
[UserSelector("Выбор пользователя по имени","Выбрать всех пользователей")]
public class UserSelectorB : IUserSelector
{
public **List<Selection> GetSelections()**
{
return UserList.Users.Select(u => new Selection { Id = u.Id, Name = u.Name }).ToList();
}
public List<User> GetUsers(SelectorInput input)
{
var result = new List<User>();
switch (input.SelectionId)
{
default:
result.Add(new User { Id = input.SelectionId, Name = UserList.GetUserById(input.SelectionId).Name });
break;
}
return result;
}
}
Описание пользовательского селектора:
Пользовательский селектор также может реализовывать интерфейс IDefaultUserSelector для создания «стандартного» селектора.
Пространство имён WorkFlowCore.UserSelectors
public interface IDefaultUserSelector: IUserSelector { List GetDefaultSelectionIds(); }
Пользовательский обработчик условий
Реализуя интерфейс ICondition, можно создать собственный обработчик условий. В процессе обработки условий информация о форме рабочего процесса, текущем проверяющем и параметрах условия анализируется для определения соответствия условиям текущего обработчика. Требуется только вернуть результат соответствия.
[Condition("Обработчик условий A")] public class ConditionA : ICondition { public bool CanAccept(ConditionInput input) { try { // Простой анализ выражения var keyvalue = input.Expression.Split('='); JObject jObject = JObject.Parse(input.WorkTask.FormData); var token = jObject.SelectToken(keyvalue[0]); var value = token.Value(); return value.Equals(keyvalue[1]); } catch (Exception) { return false; } } }
Обработчик условий:
Создание дизайна рабочего процесса
Создаётся новый дизайн рабочего процесса, который включает конфигурацию информации о различных узлах, участниках и условиях. Основные элементы включают:
После разработки дизайна рабочего процесса можно создавать соответствующие экземпляры проверок, а затем выполнять операции проверки.
Текущая система рабочих процессов имеет собственную полную рабочую модель и не подходит для интеграции с исходным кодом в другие системы. Наиболее подходящий способ развёртывания — это распределённое развёртывание. В случае распределённого развёртывания взаимодействие с бизнес-системами осуществляется через интерфейсы.
Быстрый старт (/QuickStart.md) содержит инструкции по быстрому запуску административной панели.
API-документация (/Api.md) предоставляет базовое описание основных открытых интерфейсов.
Система включает логику управления плагинами, позволяя настраивать и повторно использовать определённые плагины (расширения). Администраторы могут управлять и настраивать плагины после входа в систему.
Документация по системе плагинов (/Plugin.md).
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )