@optimajet/workflow-designer 0.0.13 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +209 -0
  2. package/package.json +4 -3
package/README.md ADDED
@@ -0,0 +1,209 @@
1
+ # WorkflowEngine Designer
2
+
3
+ ## Introduction
4
+
5
+ Библиотека для WorkflowEngine Designer создана, чтобы облегчить использование данного компонента. Она предоставляет удобный способ взаимодействия и для создания Workflow Designer на вашей веб-странице.
6
+
7
+ ## Prerequisites
8
+
9
+ Для успешного использования данного пакета необходимо создать рабочую серверную часть WorkflowEngine, способный обрабатывать запросы от Workflow Designer.
10
+
11
+ ## Installation
12
+
13
+ ```shell
14
+ npm install @optimajet/workflow-designer
15
+ ```
16
+
17
+ ## Basic Usage
18
+
19
+ ```javascript
20
+ import WorkflowDesigner from '@optimajet/workflow-designer'
21
+ //import '@optimajet/workflow-designer/localization/workflowdesigner.localization_ru'
22
+
23
+ const data = {
24
+ schemecode: "<YOUR_SCHEME_CODE_VALUE>",
25
+ processid: undefined
26
+ };
27
+
28
+ var wfdesigner = new WorkflowDesigner({
29
+ apiurl: '<YOUR_API_URL_VALUE>',
30
+ renderTo: 'root', // index.html должен содержать <div id="root"></div>
31
+ graphwidth: window.innerWidth,
32
+ graphheight: window.innerHeight,
33
+ });
34
+
35
+ if (wfdesigner.exists(data)) {
36
+ wfdesigner.load(data);
37
+ } else {
38
+ wfdesigner.create();
39
+ }
40
+ ```
41
+ Данный фрагмент кода представляет собой всё необходимое для первоначального отображения Workflow Designer на вашей веб-странице. Разберём его поподробнее:
42
+
43
+ ```javascript
44
+ import WorkflowDesigner from '@optimajet/workflow-designer'
45
+ //import '@optimajet/workflow-designer/localization/workflowdesigner.localization_ru'
46
+ ```
47
+
48
+ Данный участок отвечает за импорт конструктора `WorkflowDesigner`. Расскоментировав 2 строчку, вы можете локализировать workflow designer. По умолчанию workflow designer имеет английскую локализацию.
49
+
50
+ ```javascript
51
+ const data = {
52
+ schemecode: "<YOUR_SCHEME_CODE_VALUE>",
53
+ processid: undefined
54
+ };
55
+
56
+ var wfdesigner = new WorkflowDesigner({
57
+ apiurl: '<YOUR_API_URL_VALUE>',
58
+ renderTo: 'root',
59
+ graphwidth: window.innerWidth,
60
+ graphheight: window.innerHeight,
61
+ });
62
+ ```
63
+
64
+ В данном участке:
65
+
66
+ - `schemecode` - это код схемы Workflow, который необходимо отобразить в Workflow Designer.
67
+ - `processid` - представляет собой идентификатор процесса WorkflowEngine.
68
+
69
+ - конструктор `WorkflowDesigner`, который принимает обьект с настройками дизайнера и создает новый экземпляр класса WorkflowDesigner. В примере указаны все необходимые параметры конструктора, а именно HTTP-адрес WorkflowAPI для взаимодействия с серверной частью приложения (`apiurl`), доступную ширину (`graphwidth`) и высоту (`graphheight`) для отображения окна WorkflowDesigner, а также идентификатор элемента, внутри которого необходимо отрисовывать весь интерфейс WorkflowDesigner (`renderTo`) . С более подробным списком параметров вы можете ознакомиться в разделе **Designer** страницы документации для WorkflowEngine.
70
+
71
+ В случае, если вы хотите отобразить Workflow схему в интерфейсе Workflow Designer, то укажите в переменной `schemeсode` необходимое значение, а `processid` дайте значение `undefined`. В ситуации, когда вам нужно отобразить процесс Workflow, то установите значение `schemecode` в `undefined`, а переменной `processid` в требуемое значение идентификатора процесса WorkflowEngine.
72
+
73
+ ```javascript
74
+ if (wfdesigner.exists(data)) {
75
+ wfdesigner.load(data);
76
+ } else {
77
+ wfdesigner.create();
78
+ }
79
+ ```
80
+
81
+ На данном участке происходит проверка, существуют ли указанные выше данные и достпуны ли они для загрузки и отображения в WorkflowDesigner. В случае, если указанные данные существуют, то происходит их загрузка и последующая отрисовка. В противном случае, будет создана новая пустая Workflow схема.
82
+
83
+ ## Сборка и запуск примера
84
+
85
+ Установите пакеты, нужные для корректной настройки webpack:
86
+
87
+ ```shell
88
+ npm i -D @babel/preset-env @babel/core babel-loader css-loader html-webpack-plugin mini-css-extract-plugin uglifyjs-webpack-plugin
89
+ ```
90
+
91
+ Базовая конфигурация webpack имеет следующий вид:
92
+
93
+ ```js
94
+ const HtmlWebpackPlugin = require('html-webpack-plugin'); // for generate an HTML5 file
95
+ const path = require('path')
96
+ const MiniCssExtractPlugin = require("mini-css-extract-plugin"); // to extract CSS into separate files
97
+ const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); // to minify your JavaScript
98
+ const webpack = require('webpack');
99
+
100
+
101
+ module.exports = () => ({
102
+ entry: {
103
+ wfesample: './src/index.js',
104
+ },
105
+ output: {
106
+ path: path.resolve(__dirname, 'dist'),
107
+ filename: '[name].min.js',
108
+ libraryTarget: "umd",
109
+ },
110
+ mode:'production',
111
+
112
+ optimization: {
113
+ minimizer: [new UglifyJsPlugin()],
114
+ },
115
+ module: {
116
+ rules: [
117
+ {
118
+ test: /\.css$/i,
119
+ use: [MiniCssExtractPlugin.loader, "css-loader"],
120
+ },
121
+ {
122
+ test: /\.m?js$/,
123
+ exclude: /(node_modules|bower_components)/,
124
+ use: {
125
+ loader: 'babel-loader',
126
+ options: {
127
+ presets: ['@babel/preset-env']
128
+ },
129
+ },
130
+ },
131
+ ],
132
+ },
133
+ plugins: [
134
+ new HtmlWebpackPlugin({ template: './src/index.html' }),
135
+ new MiniCssExtractPlugin(),
136
+ new webpack.ContextReplacementPlugin(/moment[/\\]locale$/, /en/),
137
+ ]
138
+ });
139
+ ```
140
+
141
+ ## Поддержка IE11
142
+
143
+ Для того чтобы дизайнер успешно работал в IE11, нужно немного модифицировать конфигурацию webpack в `webpack.config.js`, но для начала нам нужно добавить еще один пакет для транспиляции и модификации нашего JavaScript.
144
+
145
+ ```shell
146
+ npm i -D @babel/plugin-proposal-decorators
147
+ ```
148
+
149
+ Теперь добавьте в конфигурациях webpack'a свойство `target: ['web', 'es5']` и измените в `module.rules` правило, содержащее `babel-loader`, на следующее:
150
+
151
+ ```js
152
+ //...
153
+ rules: [
154
+ //...
155
+ {
156
+ test: /\.(js|jsx)$/,
157
+ exclude: /@babel(?:\/|\\{1,2})runtime|core-js/,
158
+ use: {
159
+ loader: 'babel-loader',
160
+ options: {
161
+ babelrc: false,
162
+ configFile: path.resolve(__dirname, 'babel.config.js'),
163
+ compact: false,
164
+ cacheDirectory: true,
165
+ sourceMaps: false,
166
+ },
167
+ },
168
+ },
169
+ ]
170
+ //...
171
+ ```
172
+
173
+ Осталось создать файл `babel.config.js` в корне проекта. Файл должен содержать следующую конфигурацию для babel:
174
+
175
+ ```js
176
+ module.exports = function (api) {
177
+ api.cache(true);
178
+ const presets = [
179
+ [
180
+ '@babel/preset-env',
181
+ {
182
+ corejs:"3",
183
+ useBuiltIns: 'entry',
184
+ targets: {
185
+ browsers: [
186
+ "edge >= 16",
187
+ "safari >= 9",
188
+ "firefox >= 57",
189
+ "ie >= 11",
190
+ "ios >= 9",
191
+ "chrome >= 49"
192
+ ]
193
+ }
194
+ }
195
+ ]
196
+ ];
197
+ const plugins= [
198
+ ["@babel/plugin-proposal-decorators", { decoratorsBeforeExport: true }],
199
+ ["@babel/plugin-proposal-class-properties", { "loose": true }],
200
+ ["@babel/plugin-transform-spread"]
201
+ ];
202
+ return {
203
+ presets,
204
+ plugins
205
+ }
206
+ }
207
+ ```
208
+
209
+ Настройка успешно завершена, теперь вы можете наслаждаться пользованием WorkflowDesigner и в IE11.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@optimajet/workflow-designer",
3
- "version": "0.0.13",
4
- "description": "",
3
+ "version": "0.0.14",
4
+ "description": "Designer for Workflow Engine",
5
5
  "main": "index.js",
6
6
  "scripts": {
7
7
  "build": "webpack --mode=production --config webpack.config.js",
@@ -9,12 +9,13 @@
9
9
  "version": "npm run build-full"
10
10
  },
11
11
  "files": [
12
+ "README.md",
12
13
  "index.js",
13
14
  "dist/workflowdesigner.min.css",
14
15
  "dist/workflowdesignerfull.min.js",
15
16
  "localization/workflowdesigner*"
16
17
  ],
17
- "author": "",
18
+ "author": "OptimaJet",
18
19
  "license": "ISC",
19
20
  "devDependencies": {
20
21
  "@babel/core": "^7.15.0",