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

OSCHINA-MIRROR/mengtree-workflow-engine

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Api.md 26 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 17:09 595901b

GetSelections()

{ return UserList.Users.Select(u => new Selection { Id = u.Id, Name = u.Name }).ToList(); }

// Согласно опциям и параметрам получаем пользователя (одобрителя) public List GetUsers(SelectorInput input) { var result = new List(); switch (input.SelectionId) { default: result.Add(new User { Id = input.SelectionId, Name = UserList.GetUserById(input.SelectionId).Name }); break; } return result; }


***

**/api/WorkFlow/GetAllUserSelectors** — через этот интерфейс фронтэнд получает все пользовательские селекторы. По умолчанию возвращаются основные сведения о типах, которые реализуют интерфейс IUserSelector, selectorId — это тип (здесь в документе — UserSelectorB), selectorName — первый параметр UserSelectorAttribute:

[UserSelector("по выбору пользователя", "из всех пользователей")] public class UserSelectorB : IUserSelector


— возвращается набор селекторов:

```[
  {
    "id": "string", // идентификатор селектора (полное имя класса)
    "name": "string", // имя селектора  первый параметр UserSelectorAttribute
    "description": "string" // описание селектора  второй параметр UserSelectorAttribute
  }
]```

***

**/api/WorkFlow/GetUserSelectionsOfUserSelector** — через данный интерфейс по идентификатору селектора получаем опции этого селектора.

- userSelectorId — идентификатор селектора.
- возвращается набор опций:

```[
  {
    "id": "string", // идентификатор опции
    "name": "string" 
  }
]```

***

**rejectNodes**: отклонение (отклонение, откат, возврат) конфигурации узла. С помощью этой конфигурации, при необходимости, можно напрямую перейти к указанному узлу в соответствии с условиями, по умолчанию, если конфигурация не настроена, она будет возвращена по исходному пути. Эта конфигурация в основном состоит из двух частей: условия и целевой узел.

- **nodeId**, **nodeName**: целевой идентификатор и имя узла,
- **conditions**: конфигурация набора обработчиков условий, можно настроить несколько условий, выполнение одного из них приведёт к переходу к указанному узлу. Информация об обработчиках условий относительно проста, в основном включая, какой обработчик условий используется и дополнительные параметры.

Реализуйте собственный обработчик условий, реализовав интерфейс 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; } } }```

/api/WorkFlow/GetAllconditions — с помощью этого интерфейса можно получить информацию обо всех обработчиках условий.

  {
    "id": "string",  // идентификатор обработчика условий (полное имя класса)
    "name": "string", // название обработчика условий  первый параметр ConditionAttribute
    "description": "string" // описание обработчика условий  второй параметр ConditionAttribute
  }
]```

возвращается базовая информация об обработчике условий.

***

**workflowLines**: информация о соединении узлов. Это свойство записывает отношения соединения между узлами (с какого узла на какой узел) и условия прохождения (удовлетворяют ли условия).

- **name**: название условия. Используется только для отображения.
- **fromNodeId**: начальный узел.
- **toNodeId**: конечный узел.
- **drawingInfo**: информация для рисования. Также избыточная и резервная. Если необходимо сохранить информацию о дизайне переднего плана, её также можно использовать для отображения.
- **conditions**: информация об условиях выбора, используется для определения того, удовлетворяют ли условия соединению, и соединение может быть выполнено только в том случае, если оно удовлетворено (то же самое, что и conditions в rejectNodes ниже), что эквивалентно «суждению» + соединению.

***

**/api/WorkFlow/UpdateWorkflowActiveVersion** — пользователь переключает, какая версия процесса активна (применяется).

- **workflowId**: идентификатор процесса.
- **activeVersion**: активная версия (versionNo).

***

**/api/WorkFlow/GetAllWorkflowVersions** — с помощью данного интерфейса можно получить всю информацию о процессах и версиях (один процесс имеет несколько версий) в соответствии с идентификатором процесса.

- **workflowId**: идентификатор процесса.
- Возвращается коллекция версий процесса:

```[
  {
    "workflowId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", // идентификатор процесса
    "versionNo": 0, // версия процесса
    "description": "строка", // описание версии
    "modifiedTime": "2023-01-07T13:40:38.791Z",
    "creationTime": "2023-01-07T13:40:38.791Z"
  }
]```

***

### Получение всей основной информации о процессе (дизайн) списка *** /api / WorkFlow / GetAllWorkflows***

Возвращается список основной информации:

``` **Согласно данным запроса, основной язык текста — это язык программирования JSON.**

В запросе представлены фрагменты кода на языке программирования JSON, описывающие структуру данных и параметры запросов к API для получения информации о рабочих процессах.

**Перевода данный текст не требует**, так как он представляет собой код и техническую документацию. **Создание задачи рабочего процесса с использованием версии по умолчанию**

{ "workflowId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "name": "string", "formData": "string", "entityFullName": "string", "entityKeyValue": "string", "createdUserId": "string" }


*WorkflowId* — идентификатор процесса: исходный идентификатор процесса.

Будет автоматически активирована версия workflow activateVersion для создания задачи.

Рекомендуется использовать этот интерфейс для запуска проверки, чтобы можно было автоматически активировать версию при переключении версий процесса!

**Создание задачи рабочего процесса**

{ "workflowId": { "versionNo": 0, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" }, "name": "string", "formData": "string", "entityFullName": "string", "entityKeyValue": "string", "createdUserId": "string" }


*WorkflowId* — идентификатор процесса: идентификатор исходного процесса + номер версии. Чтобы получить всю информацию о дизайне процесса, используйте интерфейс */api/WorkFlow/GetAllWorkflows*. Возвращается основная информация о дизайне процесса. *WorkflowId.versionNo* соответствует *activeVersion* в результатах *GetAllWorkflows*. Здесь нужно создать задачу проверки, поэтому необходимо знать только идентификатор процесса и текущую версию (не нужно знать все версии, инициатору проверки обычно не нужно это знать).

*Name* — название проверки (заголовок).

*FormData* — данные формы. Этот параметр является основным. Данные формы могут быть в любом формате платформы, соответствующие *userSelector* и *condition* также будут передавать данные формы для анализа и оценки во время обработки.

*EntityFullName, entityKeyValue* — полное имя и уникальный идентификатор внешней системы. Эти два параметра в основном используются для облегчения классификации и поиска внешних систем. Когда системе необходимо запросить информацию о процессе, эти два данных могут помочь точно найти информацию.

*CreatedUserId* — идентификатор создателя. Это идентификатор пользователя платформы. Его также можно не передавать, если пользовательская реализация интерфейса *IWorkflowSession* анализирует информацию текущего запроса.

Абстрактный класс *IWorkflowSession* находится в *WorkFlowCore.Authorization*. В *WorkFlowCore.Framework* реализуется пользовательский сеанс, а в *WorkFlowCoreFrameworkService* заменяется существующая регистрация:

services.Replace(new ServiceDescriptor(typeof(IWorkflowSession), typeof(DefaultSession), ServiceLifetime.Scoped));


Возвращается основная информация о рабочем процессе:

{

"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "deleted": true, "workflowId": { "versionNo": 0, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" }, "name": "string", "formData": "string", "entityFullName": "string", "entityKeyValue": "string", "workTaskStatus": 0, "isProcessed": true, "isPending": true, "isProcessing": true, "isSimulation": true }


Несколько данных:

* *workTaskStatus* — статус проверки:
    * Pending — ожидает обработки;
    * Processing — обрабатывается;
    * Processed — завершена.

* *isProcessed/isPending/isProcessing* — обычные значения для *workTaskStatus*.

* *isSimulation* — является ли это имитацией процесса. Этот атрибут не передаётся на передний план, но создаётся через интерфейс создания имитации процесса */api/WorkFlow/CreateSimulationWorkTask*, параметры которого совпадают с *CreateWorkTask*.

**Запуск проверки**

{ "worktaskId": "3fa85f64-5717-4562-b3fc-2c963f66afa6" }


*WorktaskId* — идентификатор проверки.

После запуска проверки возвращается запись о проверке, ожидающей обработки (каждая запись соответствует каждому проверяющему):

[ {

"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"workTaskId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"workStepType": 0,
"fromNodeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"fromNodeName": "string",
"nodeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"nodeName": "string",
"handleUser": {
  "id": "string",
  "name": "string"
},
"isHandled": true,
"handleType": 0,
"comment": "string",
"resourceIds": "string",
"isRead": true,
"readTime": "2023-01-08T02:43:38.627Z",
"handlerTime": "2023-01-08T02:43:38.627Z",
"groupId": "string",
"preStepGroupId": "string",
"formData": "string",

**Описание параметров:**
* **workStepType** — тип обработки. Соответствует handleType в конфигурации узла Node в дизайне процесса (в API WorkFlow UpdateWorkflow): 0 — тип обработки, который может быть либо только для чтения (аналогично пересылке, можно только просматривать, но не обрабатывать), либо для обработки;
* **fromNodeId**, **fromNodeName** — исходный узел. Узел, из которого поток переходит к текущему (начальным узлом для нового инициированного потока является узел начала);
* **nodeId**, **nodeName** — текущий узел утверждения;
* **handleUser** — пользователь, утверждающий в данный момент;
* **isHandled** — было ли обработано (для workStepType «обработка»);
* **handlerTime** — время обработки;
* **comment** — аннотация;
* **resourceIds** — идентификатор вложения. Здесь предполагается только запись идентификатора вложения. Каждый раз при утверждении можно загружать вложение в соответствии с ситуацией (вложения управляются платформой самостоятельно). Обычно несколько вложений разделяются запятыми, но конкретные форматы хранения и анализа определяются подключаемой платформой;
* **isRead**, **readTime** — прочитано ли, а также время прочтения. В настоящее время эти два состояния помечаются как прочитанные только при выполнении операции «отменить» (API WorkFlow WithdrawProve), дизайн предусматривает, что пользователь должен пометить прочитанное при просмотре деталей утверждения;
* **groupId** — групповой идентификатор. Групповой идентификатор не имеет значения в бизнес-смысле, но полезен для управления потоком «отмена» и «возврат»;
* **preStepGroupId** — предыдущий групповой идентификатор;
* **formData** — данные формы. Данные формы утверждения здесь не являются данными формы инициации. Ниже будет упомянут интерфейс утверждения (API WorkFlow PassProve). Каждый раз, когда происходит утверждение, могут быть свои собственные данные формы, и когда эти данные существуют и применяются селекторы пользователей и обработчики условий, они также будут влиять на поток процесса. Рассматриваемый сценарий заключается в том, чтобы применить его к каждому утверждению, которое может обновлять форму (конкретно, можно ли редактировать данные во время процесса утверждения, это зависит от реализации);
* **comment** — аннотация.
* **fromForwardStepId** — источник шага идентификации. Будет иметь значение, если это пересылка. То есть, какой шаг утверждения был передан.

#### Утверждение через API WorkFlow PassProve:
* **comment** — аннотация;
* **stepId** — идентификатор шага утверждения для утверждения;
* **resourceIds** — идентификатор вложения (упомянутый ранее).
Возвращает утверждение после утверждения инициации (совпадает с ответом API WorkFlow StartWorkTask).

#### Отклонение утверждения через API WorkFlow RejectProve (см. API WorkFlow StartWorkTask для инициации):
* **комментарий** — аннотация (строка);
* **шагId** — идентификатор записи утверждения, ожидающей утверждения (строка);
* **ресурсИды** — идентификатор вложения (строка).

#### Отмена утверждения через API WorkFlow WithdrawProve (см. API WorkFlow StartWorkTask для инициации).

#### Пересылка утверждения через API WorkFlow ForwardProve:
Пересылка утверждения означает передачу текущей операции утверждения другому человеку для утверждения. Операция пересылки утверждения аналогична другим операциям утверждения, за исключением дополнительного параметра передачи.

* **userSelectors** — селектор пользователя. Этот шаг пересылки также использует селектор пользователя для анализа, во-первых, для единообразия, во-вторых, для расширения возможностей. Обратитесь к дизайну процесса API (обновление дизайна процесса API WorkFlow UpdateWorkflow).

#### Получение всех шагов утверждения через API WorkFlow GetAllTaskStepsOfWorkTask:
* **worktaskId** — идентификатор утверждения.
Возвращает все шаги утверждения этого потока утверждения (совпадает с ответом API WorkFlow StartWorkTask).

#### Получить все шаги утверждения в соответствии с информацией о сущности через API WorkFlow GetAllTaskStepsOfWorkTaskByEntityInfo:
* **entityFullName** — полное имя внешнего класса;
* **entityKeyValue** — внешний идентификатор формы.
(См. API WorkFlow CreateWorkTask в новом утверждении).

#### Разбиение на страницы для получения ожидающих утверждения утверждений пользователя через API WorkFlow GetUnHandledWorkTasksOfUser:
* **CurrentPage** — текущая страница (по умолчанию начинается с 1);
* **MaxResultCount** — размер страницы.
Возвращается набор утверждений процесса (атрибуты см. в API WorkFlow CreateWorkTask).

#### Разбить на страницы, чтобы получить утверждения пользователя, которые были обработаны через API WorkFlow GetHandledWorkTasksOfUser:
См. разбиение на страницы, чтобы получить ожидающие утверждения утверждения пользователя через API WorkFlow GetUnHandledWorkTasksOfUser. Здесь обработанные включают инициированные самим собой, а также те, которые были инициированы другими и утверждены самим собой.

#### Разделение на страницы для получения утверждений, находящихся в процессе утверждения, в соответствии с информацией об объекте:
См. раздел «Разбивка на страницы для получения ожидающих утверждения утверждений пользователя» через API WorkFlow GetUnHandledWorkTasksOfUser. **​/api​/WorkFlow​/ GetAllProcessingWorkTasksByEntityType**

- **entityFullName**: полное имя внешнего класса.
- **entityKeyValues**: внешние идентификаторы формы, разделённые английской запятой.

Возвращает набор задач обработки процесса (атрибуты см. в **создании задачи обработки** ***/api/WorkFlow/CreateWorkTask***).

**​/api/WorkFlow/GetWorkTasksOfCreator**

- **CurrentPage**: текущая страница (по умолчанию начинается с 1).
- **MaxResultCount**: размер страницы.

Возвращает коллекцию задач обработки процессов (атрибуты см. в создании задачи обработки ***/api/WorkFlow/CreateWorkTask***).

**​/api/WorkFlow/GetForecastNodeUsers4Task**

- **taskId**: идентификатор задачи обработки.

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

[ { "nodeId": "47f79540-d712-41f4-5032-ad4c2fc2d777", "nodeName": "Начало", "users": [ { "handleType": 0, "workStepType": 0, "id": "5", "name": "Пользователь 2" } ], "handleUsers": [ { "handleType": 0, "workStepType": 0, "id": "5", "name": "Пользователь 2" } ], "readOnlyUsers": [], "level": 1, "handleType": 0 } ]


- **nodeId**: идентификатор узла.
- **nodeName**: название узла.
- **handleUsers**: пользователи узла обработки.
  - **id**: идентификатор пользователя.
  - **name**: имя пользователя.
  - **handleType**: статус обработки:
     0 — прошло;
     5 — обрабатывается.
  - **workStepType**: тип обработки:
     0 — обработка;
     1 — пересылка.
- **readOnlyUsers**: пересылающие пользователи.
- **users**: пользователи обработки (сводные данные).
- **level**: уровень (последовательность от меньшего к большему).
- **handleType**: состояние обработки:
   0 — прошло;
   5 — обрабатывается.

**​/api/WorkFlow/GetForecastNodeUsers4Workflow**

{ "formData": "{"empty":"","times":""}", "workflowId": "2e827de5-65bf-491b-9fec-2ec425c4484e", "versionNo": 1 }


- **formData**: строка данных формы.
- **workflowId**: идентификатор дизайна процесса.
- **versionNo**: версия дизайна процесса.

Возвращаемое значение см. в ***/api/WorkFlow/GetForecastNodeUsers4Task***.

**Интерфейс в настоящее время**

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

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/mengtree-workflow-engine.git
git@api.gitlife.ru:oschina-mirror/mengtree-workflow-engine.git
oschina-mirror
mengtree-workflow-engine
mengtree-workflow-engine
master