前言
找一個好用的畫圖工具真心不容易,Activiti 工作流自帶的 Web 版畫圖工具,外表挺華麗,其實使用起來各種擰巴;Eclipse 的 Activiti 畫圖插件,對於相對複雜的流程也是很不友好。
環境搭建
網上有許多詳細的安裝配置步驟,這裡就不一一贅述,只列出相關版本。
項目截圖
功能模塊
這是一個Python版本,Java版本功能已經基本開發完畢,需要進行功能遷移。
- 用戶登錄
- 流程列表(CURD)
- 用戶註冊(待實現)
- 遊客訪問在線作圖,可實現在線導入導出,本地緩存
創建項目
切換到工作空間,執行以下命令:
- django-admin.py startproject bpmn
最終目錄結構,省略部分代碼:
- ├─bpmn
- │ │ settings.py
- │ │ urls.py
- │ │ wsgi.py
- │ │ __init__.py
- ├─script
- │ uwsgi.ini
- ├─static
- ├─templates
- │ bpmn.html
- └─view
- │ index.py
核心代碼
- var bpmnModeler = new BpmnJS({
- container: '#canvas',
- keyboard: {
- bindTo: window
- }
- });
- function openDiagram() {
- bpmnXML='\n' +
- '<definitions>\n' +/<definitions>
- ' <process>\n' +/<process>
- ' <startevent>\n' +
- ' \n' +
- ' <bpmndiagram>\n' +/<bpmndiagram>
- ' <bpmnplane>\n' +/<bpmnplane>
- ' <bpmnshape>\n' +/<bpmnshape>
- ' <bounds>\n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ''; //BPMN 2.0 xml
- }
- // import diagram
- bpmnModeler.importXML(bpmnXML, function(err) {
- if (err) {
- return console.error('could not import BPMN 2.0 diagram', err);
- }
- });
- }
巴拉巴拉,代碼還有一噸,這裡就不貼了,後面會放源碼地址。
部署
服務器還是選擇Linux,部署前需要做以下操作。
Django
由於之前外網沒有安裝 Django,需要先安裝:
- pip install Django
sqlite
為了測試方便,這裡我們選擇 Django 默認自帶的 sqlite 數據庫:
- yum install sqlite*
安裝成功以後需要重新配置並編譯安裝 Python3:
- # 配置編譯
- ./configure
- # 編譯安裝
- make && make install
uwsgi
安裝服務器 uwsgi,你可以把它想象成Java界的Tomcat
- pip3 install uwsgi
這裡你可以直接使用項目中script文件夾中的uwsgi.ini配置,只需修改項目路徑即可。
然後使用以下命令啟動:
- uwsgi --ini uwsgi.ini
執行命令,查看是否啟動成功:
- [root@AY140216131049Z>
- root 3040 1 0 Nov21 ? 00:00:03 uwsgi --ini uwsgi.ini
- root 3041 3040 0 Nov21 ? 00:00:00 uwsgi --ini uwsgi.ini
- root 3042 3040 0 Nov21 ? 00:00:00 uwsgi --ini uwsgi.ini
- root 3043 3040 0 Nov21 ? 00:00:00 uwsgi --ini uwsgi.ini
- root 3044 3040 0 Nov21 ? 00:00:00 uwsgi --ini uwsgi.ini
- root 3045 3040 0 Nov21 ? 00:00:00 uwsgi --ini uwsgi.ini
- root 3046 3040 0 Nov21 ? 00:00:00 uwsgi --ini uwsgi.ini
- root 6606 6580 0 18:13 pts/0 00:00:00 grep --color=auto uwsgi
重啟:
- uwsgi --reload uwsgi.pid
停止:
- uwsgi --stop uwsgi.pid
Nginx
最後一步,配置Nginx 轉發,具體安裝這裡不再說明,直接上配置(HTTPS安全證書請自行申請):
- server {
- listen 80;
- listen 443 ssl;
- server_name bpmn.52itstyle.vip;
- index index.php;
- #ssl on;
- #證書路徑
- ssl_certificate /usr/local/openresty/nginx/cert/1961848_bpmn.52itstyle.vip.pem;
- #私鑰路徑
- ssl_certificate_key /usr/local/openresty/nginx/cert/1961848_bpmn.52itstyle.vip.key;
- #緩存有效期
- ssl_session_timeout 5m;
- #可選的加密算法,順序很重要,越靠前的優先級越高.
- ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
- #安全鏈接可選的加密協議
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- ssl_prefer_server_ciphers on;
- location / {
- include uwsgi_params; # 導入一個Nginx模塊他是用來和uWSGI進行通訊的
- uwsgi_connect_timeout 30; # 設置連接uWSGI超時時間
- uwsgi_pass unix:/www/bpmn/script/uwsgi.sock; # 指定uwsgi的sock文件所有動態請求就會直接丟給他
- }
- # 動靜分離 Nginx 處理靜態請求
- location /static {
- root /www/bpmn/;
- }
- }
演示
以下是基於 bpmn-js 開發的一個 Activiti 工作流作圖管理系統,可以增刪查改流程圖,系統還在優化中。
遊客訪問:https://bpmn.52itstyle.vip/
閱讀更多 互聯網弟弟 的文章