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 )