Nginx+Django-Python+BPMN-JS的整合

前言

公司主營業(yè)務(wù):網(wǎng)站制作、成都做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出蘆淞免費做網(wǎng)站回饋大家。

找一個好用的畫圖工具真心不容易,Activiti 工作流自帶的 Web 版畫圖工具,外表挺華麗,其實使用起來各種擰巴;Eclipse 的 Activiti 畫圖插件,對于相對復(fù)雜的流程也是很不友好。

環(huán)境搭建

網(wǎng)上有許多詳細的安裝配置步驟,這里就不一一贅述,只列出相關(guān)版本。

軟件版本功能地址
Python3.7.1腳本語言https://www.python.org/
Django2.1.3Web框架https://www.djangoproject.com/
PyCharm2018.2.4可視化開發(fā)工具http://www.jetbrains.com/pycharm/
BPMN-JS3.2.2BPMN前端插件https://github.com/bpmn-io/bpmn-js

項目截圖

Nginx+Django-Python+BPMN-JS的整合

Nginx+Django-Python+BPMN-JS的整合

Nginx+Django-Python+BPMN-JS的整合

Nginx+Django-Python+BPMN-JS的整合

項目開發(fā)

功能模塊

這是一個Python版本,Java版本功能已經(jīng)基本開發(fā)完畢,需要進行功能遷移。

  • 用戶登錄
  • 流程列表(CURD)
  • 用戶注冊(待實現(xiàn))
  • 游客訪問在線作圖,可實現(xiàn)在線導(dǎo)入導(dǎo)出,本地緩存
創(chuàng)建項目

切換到工作空間,執(zhí)行以下命令:

django-admin.py startproject bpmn

最終目錄結(jié)構(gòu),省略部分代碼:

├─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);
                  }
            });
}

巴拉巴拉,代碼還有一噸,這里就不貼了,后面會放源碼地址。

部署

服務(wù)器還是選擇Linux,部署前需要做以下操作。

Django

由于之前外網(wǎng)沒有安裝 Django,需要先安裝:

pip install Django
sqlite

為了測試方便,這里我們選擇 Django 默認(rèn)自帶的 sqlite 數(shù)據(jù)庫:

yum install sqlite*

安裝成功以后需要重新配置并編譯安裝 Python3:

# 配置編譯
./configure
# 編譯安裝
make && make install
uwsgi

安裝服務(wù)器 uwsgi,你可以把它想象成Java界的Tomcat

pip3 install uwsgi

這里你可以直接使用項目中script文件夾中的uwsgi.ini配置,只需修改項目路徑即可。

然后使用以下命令啟動:

uwsgi  --ini uwsgi.ini

執(zhí)行命令,查看是否啟動成功:

[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

最后一步,配置Nginx 轉(zhuǎn)發(fā),具體安裝這里不再說明,直接上配置(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;
        #可選的加密算法,順序很重要,越靠前的優(yōu)先級越高.
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        #安全鏈接可選的加密協(xié)議
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

        location / {
           include uwsgi_params; # 導(dǎo)入一個Nginx模塊他是用來和uWSGI進行通訊的
           uwsgi_connect_timeout 30; # 設(shè)置連接uWSGI超時時間
           uwsgi_pass unix:/www/bpmn/script/uwsgi.sock; # 指定uwsgi的sock文件所有動態(tài)請求就會直接丟給他
        }
        # 動靜分離 Nginx 處理靜態(tài)請求
        location /static {
            root /www/bpmn/;
        }
   }

演示

以下是基于 bpmn-js 開發(fā)的一個 Activiti 工作流作圖管理系統(tǒng),可以增刪查改流程圖,系統(tǒng)還在優(yōu)化中。

游客訪問:https://bpmn.52itstyle.vip/

源碼

https://gitee.com/52itstyle/BPMN

文章題目:Nginx+Django-Python+BPMN-JS的整合
路徑分享:http://muchs.cn/article34/ighpse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、營銷型網(wǎng)站建設(shè)全網(wǎng)營銷推廣、面包屑導(dǎo)航App設(shè)計、虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司