找一個好用的畫圖工具真心不容易,Activiti 工做流自帶的 Web 版畫圖工具,外表挺華麗,其實使用起來各類擰巴;Eclipse 的 Activiti 畫圖插件,對於相對複雜的流程也是很不友好。javascript
網上有許多詳細的安裝配置步驟,這裏就不一一贅述,只列出相關版本。php
軟件 | 版本 | 功能 | 地址 |
---|---|---|---|
Python | 3.7.1 | 腳本語言 | https://www.python.org/ |
Django | 2.1.3 | Web框架 | https://www.djangoproject.com/ |
PyCharm | 2018.2.4 | 可視化開發工具 | http://www.jetbrains.com/pycharm/ |
BPMN-JS | 3.2.2 | BPMN前端插件 | https://github.com/bpmn-io/bpmn-js |
這是一個Python版本,Java版本功能已經基本開發完畢,須要進行功能遷移。html
切換到工做空間,執行如下命令:前端
django-admin.py startproject bpmn
最終目錄結構,省略部分代碼:java
├─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='<?xml version="1.0" encoding="UTF-8"?>\n' + '<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd" id="sample-diagram" targetNamespace="http://bpmn.io/schema/bpmn">\n' + ' <bpmn2:process id="Process_1">\n' + ' <bpmn2:startEvent id="StartEvent_1"/>\n' + ' </bpmn2:process>\n' + ' <bpmndi:BPMNDiagram id="BPMNDiagram_1">\n' + ' <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">\n' + ' <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">\n' + ' <dc:Bounds height="36.0" width="36.0" x="412.0" y="240.0"/>\n' + ' </bpmndi:BPMNShape>\n' + ' </bpmndi:BPMNPlane>\n' + ' </bpmndi:BPMNDiagram>\n' + '</bpmn2:definitions>'; //BPMN 2.0 xml } // import diagram bpmnModeler.importXML(bpmnXML, function(err) { if (err) { return console.error('could not import BPMN 2.0 diagram', err); } }); }
巴拉巴拉,代碼還有一噸,這裏就不貼了,後面會放源碼地址。python
服務器仍是選擇Linux,部署前須要作如下操做。nginx
因爲以前外網沒有安裝 Django,須要先安裝:git
pip install Django
爲了測試方便,這裏咱們選擇 Django 默認自帶的 sqlite 數據庫:github
yum install sqlite*
安裝成功之後須要從新配置並編譯安裝 Python3:算法
# 配置編譯 ./configure # 編譯安裝 make && make install
安裝服務器 uwsgi,你能夠把它想象成Java界的Tomcat
pip3 install uwsgi
這裏你能夠直接使用項目中script文件夾中的uwsgi.ini配置,只需修改項目路徑便可。
而後使用如下命令啓動:
uwsgi --ini uwsgi.ini
執行命令,查看是否啓動成功:
[root@AY140216131049Z script]# ps -ef|grep uwsgi 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 轉發,具體安裝這裏再也不說明,直接上配置(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/