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

OSCHINA-MIRROR/mldong-snakerflow-designer-vue

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

Snaker рабочий поток движок веб-дизайнер

Приветствую! N лет назад использовался рабочий поток движок, хотя оригинальный автор уже не поддерживает его, всё ещё есть группа людей, которые продолжают использовать его. На мой взгляд, его основные функции всё ещё хороши, и он является хорошим проектом для изучения рабочих потоков. Однако технология стека, используемая в дизайнере процессов, возможно, устарела (это был открытый исходный код до 2016 года).

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

Присоединяйтесь к группе

Быстроразвивающаяся платформа: [онлайн-опыт] (https://snaker.mldong.com/)

[режим редактирования] (https://snaker.mldong.com/)

[только режим чтения] (https://snaker.mldong.com/preview)

[режим выделения] (https://snaker.mldong.com/highLight)

[XML данные] (https://snaker.mldong.com/xml)

Примеры использования

[бэкенд проект] (https://gitee.com/mldong/mldong)

[фронтенд проект] (https://gitee.com/mldong/mldong-vue)

Как использовать

Vue2

Установка

npm install snakerflow-designer-vue@latest --save

Другие зависимости

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

npm install @logicflow/core@^1.1.3 --save
npm install @logicflow/extension@^1.1.3 --save
npm install clipboard@^2.0.10 --save
npm install vue-json-pretty@^1.8.2 --save

Импорт

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.config.productionTip = false

// Импортируем компонентную библиотеку
import SnakerFlowDesigner from 'snakerflow-designer-vue'
// Регистрируем компонентную библиотеку
Vue.use(SnakerFlowDesigner)
Vue.use(ElementUI)
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

Vue3

Установка

npm install snakerflow-designer-vue@next --save

Другие зависимости

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

npm install @logicflow/core@^1.1.21 --save
npm install @logicflow/extension@^1.1.21 --save
npm install clipboard@^2.0.11 --save
npm install vue-json-pretty@^2.1.1 --save

Импорт

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import SnakerFlowDesigner from 'snakerflow-designer-vue'
createApp(App).use(router).use(ElementPlus).use(SnakerFlowDesigner).mount('#app')

Пример

Режим редактирования

<!-- https://gitee.com/mldong/snakerflow-designer-vue/blob/master/examples/views/Home.vue -->
<SnakerFlowDesigner ref='designer' v-model="flowData" @on-save="handleSave"/>

Только режим чтения

<!-- https://gitee.com/mldong/snakerflow-designer-vue/blob/master/examples/views/Preview.vue -->
<SnakerFlowDesigner :viewer="true" ref='designer' v-model="flowData"/>

Режим выделения

<!-- https://gitee.com/mldong/snakerflow-designer-vue/blob/master/examples/views/HighLight.vue -->
<SnakerFlowDesigner :viewer="true" ref='designer' v-model="flowData" :high-light="highLight"/>

XML данные

<!-- https://gitee.com/mldong/snakerflow-designer-vue/blob/master/examples/views/Xml.vue -->
<SnakerFlowDesigner :viewer="true" ref='designer' v-model="flowData"/>

Свойства

Параметр Описание Тип Возможные значения Значение по умолчанию
value / v-model Привязанные значения (xml или json) string/object
config Логическая конфигурация потока object
viewer Режим предварительного просмотра boolean true/false false
highLight Данные выделения, см. таблицу ниже object
extendAttrConfig Расширенная конфигурация атрибутов, см. таблицу ниже object
extendPropertyKeys Конфигурация дополнительных расширенных свойств и пользовательских слотов для совместного использования, см. примеры/представления/CustomAssigner Array
showDoc Отображать ли метку кода облака boolean true/false true
disabledClickNodes Узлы, запрещённые для щелчка, например: ['snaker:start', 'snaker:end'] Array - Конфигурация по умолчанию
Отображаемое имя Имя Значок Подсказка
Идентификатор пользователя userKey -- Участник может быть получен в соответствии с идентификатором пользователя
Идентификатор группы пользователей groupKey -- Участники могут быть получены в соответствии с идентификатором группы пользователей
Кандидаты-участники candidateUsers -- Кандидаты-участники (предоставляются предыдущему узлу для выбора участников следующего узла)
Группы кандидатов candidateGroups -- Группы кандидатов (предоставляются предыдущему узлу для выбора групп участников следующего узла)
Класс обработки кандидатов candidateHandler -- Получение класса обработки кандидата
Дополнительное свойство 1 attr1 -- Другое дополнительное свойство 1
Дополнительное свойство 2 attr2 -- Другое дополнительное свойство 2
Дополнительное свойство 3 attr3 -- Другое дополнительное свойство 3

Методы

Название метода Описание Параметр
importXml Импорт данных определения процесса SnakerFlow (xml) данные определения процесса SnakerFlow в формате xml
importJson Импорт данных определения LogicFlow (data) объект или строка json, представляющая данные определения LogicFlow
setHighLight Установка данных выделения (data) структура данных, соответствующая выделению в данных и свойствах

Слот

Правило: form-item-${nodeType}-${field} Пример использования:

<SnakerFlowDesigner ref='designer' v-model="flowData" @on-save="handleSave">
  <template v-slot:form-item-task-assignee="{model,field}">
    <el-form-item label="Пользователь-участник">
      <el-input v-model="model[field]"></el-input>
    </el-form-item>
  </template>
</SnakerFlowDesigner>

Типы nodeType

Имя Описание
task Узел задачи
custom Пользовательский узел
decision Узел решения
end Конечный узел
fork Узел разветвления
join Узел объединения
process Процесс
start Начальный узел
subProcess Подпроцесс Snaker
transition Ребро
wfSubProcess Подпроцесс snaker

Слот узла задачи

Имя Описание
form-item-task-name Название
form-item-task-displayName Отображаемое название
form-item-task-form Форма
form-item-task-assignee Участник
form-item-task-assignmentHandler Класс обработки участника
form-item-task-taskType Тип задачи
form-item-task-performType Тип участия
form-item-task-preInterceptors Предварительный перехватчик
form-item-task-postInterceptors Последующий перехватчик
form-item-task-reminderTime Время напоминания
form-item-task-reminderRepeat Интервал повторения напоминаний
form-item-task-expireTime Ожидаемое время завершения
form-item-task-autoExecute Автоматическое выполнение
form-item-task-width Ширина
form-item-task-height Высота

Слот пользовательского узла

Имя Описание
form-item-custom-name Название
form-item-custom-displayName Отображаемое название
form-item-custom-clazz Путь к классу
form-item-custom-methodName Имя метода
form-item-custom-args Параметры переменной
form-item-custom-preInterceptors Предварительный перехватчик
form-item-custom-postInterceptors Последующий перехватчик

Слот узла решения

Имя Описание
form-item-decision-name Название
form-item-decision-expr Выражение решения
form-item-decision-handleClass Класс обработки
form-item-decision-preInterceptors Предварительный перехватчик
form-item-decision-postInterceptors Последующий перехватчик

Слот конечного узла

Имя Описание
form-item-end-name Название
form-item-end-preInterceptors Предварительный перехватчик
form-item-end-postInterceptors Последующий перехватчик

Слот узла разветвления

Имя Описание
form-item-fork-name Название

Слот узла объединения

Имя Описание
form-item-join-name Название

Слот процесса

Имя Описание
form-item-process-name Определение процесса
form-item-process-displayName Определение отображаемого процесса
form-item-process-expireTime Ожидаемое время завершения
form-item-process-instanceUrl URL запуска экземпляра
form-item-process-instanceNoClass Номер экземпляра
form-item-process-preInterceptors Перехватчик перед узлом
form-item-process-postInterceptors Перехватчик после узла

Слот начального узла

Имя Описание
form-item-start-name Название
form-item-start-preInterceptors Предварительный перехватчик
form-item-start-postInterceptors Последующий перехватчик

Слот подпроцесса

Имя Описание
form-item-subProcess-name Определение процесса
form-item-subProcess-displayName Определение отображаемого процесса
form-item-subProcess-expireTime Ожидаемое время завершения
form-item-subProcess-instanceUrl URL запуска экземпляра
form-item-subProcess-instanceNoClass Номер экземпляра
form-item-subProcess-preInterceptors Перехватчик перед узлом
form-item-subProcess-postInterceptors Перехватчик после узла

Слот перехода

Имя Описание
form-item-transition-name Название
Наименование Описание
--- ---
form-item-wfSubProcess-name Определение дочернего процесса
form-item-wfSubProcess-displayName Отображаемое имя определения дочернего процесса
form-item-wfSubProcess-form Форма
form-item-wfSubProcess-version Номер версии
form-item-wfSubProcess-width Ширина
form-item-wfSubProcess-height Высота

События

Событие Описание Параметры обратного вызова
on-save Срабатывает при нажатии на кнопку сохранения в правом верхнем углу панели инструментов Передаёт объект данных схемы процесса data, содержащий данные JSON и XML ({json, xml})

Локальная разработка

Установка

npm install

Разработка

npm run serve

Сборка пакета

npm run build

Проверка

npm run lint

Данные

Пример данных JSON

{
  "name": "leave",
  "displayName": "Отпуск",
  "expireTime": "",
  "instanceUrl": "leaveForm",
  "nodes": [
    {
      "id": "start",
      "type": "snaker:start",
      "x": 340,
      "y": 160,
      "properties": {},
      "text": {
        "x": 340,
        "y": 200,
        "value": "Начало"
      }
    },
    {
      "id": "apply",
      "type": "snaker:task",
      "x": 520,
      "y": 160,
      "properties": {
        "taskType": "Major",
        "performType": "ANY",
        "autoExecute": "N",
        "assignee": "approve.operator"
      },
      "text": {
        "x": 520,
        "y": 160,
        "value": "Подача заявления на отпуск"
      }
    },
    {
      "id": "approveDept",
      "type": "snaker:task",
      "x": 740,
      "y": 160,
      "properties": {
        "assignee": "",
        "taskType": "Major",
        "performType": "ANY",
        "autoExecute": "N",
        "assignmentHandler": "com.mldong.config.FlowAssignmentHandler"
      },
      "text": {
        "x": 740,
        "y": 160,
        "value": "Одобрение отдела"
      }
    },
    {
      "id": "end",
      "type": "snaker:end",
      "x": 1080,
      "y": 160,
      "properties": {},
      "text": {
        "x": 1080,
        "y": 200,
        "value": "Конец"
      }
    }
  ],
  "edges": [
    {
      "id": "3037be41-5682-4344-b94a-9faf5c3e62ba",
      "type": "snaker:transition",
      "sourceNodeId": "start",
      "targetNodeId": "apply",
      "startPoint": {
        "x": 358,
        "y": 160
      },
      "endPoint": {
        "x": 460,
        "y": 160
      },
      "properties": {},
      "pointsList": [
        {
          "x": 358,
          "y": 160
        },
        {
          "x": 460,
          "y": 160
        }
      ]
    }
  ]
}
``` ```
2c75eebf-5baf-4cd0-a7b3-05466be13634:
  targetNodeId: end
  startPoint: { x: 764, y: 339 }
  endPoint: { x: 1080, y: 178 }
  properties: { expr: "#f_day<3" }
  text: { x: 912, y: 339, value: "请假天数小于3" }
  pointsList: [
    { x: 764, y: 339 },
    { x: 1080, y: 339 },
    { x: 1080, y: 178 },
  ]
d7ec4166-f3fc-4fd6-a2ac-a6c4d509c4dd:
  id: d7ec4166-f3fc-4fd6-a2ac-a6c4d509c4dd
  type: snaker:transition
  sourceNodeId: 2c75eebf-5baf-4cd0-a7b3-05466be13634
  targetNodeId: approveBoss
  startPoint: { x: 740, y: 365 }
  endPoint: { x: 840, y: 480 }
  properties: { expr: "#f_day>=3" }
  text: { x: 740, y: 422.5, value: "请假天数大于等于3" }
  pointsList: [
    { x: 740, y: 365 },
    { x: 740, y: 480 },
    { x: 840, y: 480 },
  ]
a64348ec-4168-4f36-8a61-15cf12c710b9:
  id: a64348ec-4168-4f36-8a61-15cf12c710b9
  type: snaker:transition
  sourceNodeId: approveBoss
  targetNodeId: end
  startPoint: { x: 960, y: 480 }
  endPoint: { x: 1080, y: 142 }
  properties: {}
  pointsList: [
    { x: 960, y: 480 },
    { x: 1140, y: 480 },
    { x: 1140, y: 112 },
    { x: 1080, y: 112 },
    { x: 1080, y: 142 },
  ],

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

Основная тема запроса — описание структуры данных для рабочего процесса в формате JSON. (https://gitee.com/yuqs/snakerflow)

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

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

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

1
https://api.gitlife.ru/oschina-mirror/mldong-snakerflow-designer-vue.git
git@api.gitlife.ru:oschina-mirror/mldong-snakerflow-designer-vue.git
oschina-mirror
mldong-snakerflow-designer-vue
mldong-snakerflow-designer-vue
master