999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

層次化工作流管理系統的設計與實現

2021-06-16 11:55:24徐海嘯李翔王凱李鵬洋林娜
電子技術與軟件工程 2021年6期
關鍵詞:數據庫模型設計

徐海嘯 李翔 王凱 李鵬洋 林娜

(1.吉林大學計算機學院與技術學院 吉林省長春市 130012 2.中共長春市紀律檢查委員會 吉林省長春市 130041)

1 緒論

在設計工作流模型時,傳統的做法是根據業務邏輯設計模型,這些模型也能很好的幫助人們實現辦公自動化提升人們的工作效率,可是每個業務邏輯都要單獨設計模型,多個業務之間往往會有重復的模型,業務之間的模型無法復用,這對整個項目來說并不是良好的設計。工作流嵌套技術便是為了解決這一問題而誕生的,這也是本文的研究方向。通過工作流嵌套技術,模型的復用變得簡單,對一些多個業務都用到的模型設置成工具模型,在需要的地方將工具模型嵌套進去即可,通過工作流嵌套技術,項目的整體架構變得更加靈動和優雅,也避免了用戶在設計模型時重復設計相同的模型。此外,本文還使用PyQt4 工具包實現一個友好的人機界面,用戶在優美的界面上進行簡單的拖拽便可完成工作流模型的設計。

工作流技術起源于20 世紀七十年代中期辦公自動化領域的研究工作。20 世紀八十年代,工作流技術開始嶄露頭角,在商業軟件中開始使用工作流技術。由于當時受到當時個人計算機還未在辦公室中普及、底層的通信系統的建設和計算機網絡技術的發展還未推廣等因素的影響,工作流技術并沒有得到很大程度的發展,應用的領域也很受限,主要在圖像處理領域和電子郵件領域有一些初步的應用。工作流技術在這一時期處于一個走向商業應用的過渡期。

到了20 世紀九十年代,很多大型公司的研究院和高等院校的實驗室都開始布局和發展工作流技術,比如:IBM 公司Almaden研究中心研究開發的基于持久消息隊列的分布式工作流管理系統Exotica/FMQM、佐治亞大學計算機系研究丌發的具有自適應能力的工作流管理系統Meteor、基于分布式主動數據庫的工作流管理系統WJDE 等[2]。

20 世紀九十年代,在工作流技術領域的研究主要有:清華大學的吳澄院士、范玉順教授從工作流的理論基礎、建模與仿真、工作流引擎的執行與效率分析等方面對工作流技術在CIMS 上的應用進行了研究[3]。史芙林教授對工作流的實現技術、異常處理及恢復等方面進行了研究。還有很多學者對工作流的模型、實現、仿真、擴展性和柔性、Petri 網在工作流的應用、工作流的安全性、定義語言等方而展開了廣泛的研究,取得了一定的成果。其中,上海交通大學的基于Petri 網的分布式工作流管理的研究[4]。

圖1:系統整體架構圖

圖2:系統首頁界面效果圖

到了21 世紀,工作流技術的發展已經比較成熟,使用工作流技術的產品已經在人們的工作和生活中得到廣泛的應用。工作流技術走出大公司的研究院和高等院校的實驗室,一批使用工作流技術提供解決方案的的中小型科技公司應運而生。如今市場上比較流行的工作流產品主要有BEA 的WLI、SAP 的NeWteaver、Sonic 的OrchestrationServer、阿里巴巴的釘釘、西安協同數碼股份有限公司的SynchroFLOW,杭州信雅達的SunFlow 等。

近期,大數據技術和人工智能迅猛發展,在互聯網+的熱潮驅動下,大數據技術和人工智能應用在各行各業,給傳統行業帶來新的氣象和新的發展。人們一方面在使用工作流技術解決實際的業務問題另一方面也對工作流技術的發展提出了一些新的要求。從各個廠商研發的工作流產品可以看出工作流技術正在朝著智能、多元、更高效的方向發展。

2 層次化工作流管理系統

本文設計基于Windows 系統的桌面客戶端軟件,在圖形化界面上通過拖拽、點擊等方式設計工作流模型,支持工作流模型的相互嵌套,對工作流模型進行存儲以及執行工作流模型的任務腳本化輸出,實現設計一次,可以被嵌套可以批量執行的設計理念。

采用Python 語言,使用的集成開發環境是PyCharm,數據庫使用MySQL 數據庫,使用XML 文件的格式作為數據的存儲和交換的格式,前端頁面使用PyQt4 進行設計,在工作流模型的存儲中通過對父級ID 的關聯實現工作流嵌套,軟件的設計界面提供生成執行工作流模型腳本文件的按鈕,可以設計好多個工作流模型后再一起執行腳本文件,實現工作流模型的批處理和容易移植。工作流模型的數據可以存儲在XML 文件中,加載的時候再解析XML 文件讀取工作流,也可以存儲在數據庫中。選擇哪種存儲方式要視業務情景而定,如果設計的工作流模型較簡單,要管理和維護的數據較少可以使用XML 文件的方式進行存儲,使用XML 文件的存儲方式較為簡單和便捷。如果所設計的工作流模型較為復雜,產生的工作流數據較多,建議使用數據庫進行管理和維護數據,MySQL數據庫是一款功能強大的關系型數據庫,能滿足日常數據管理的絕大多數需求。

圖3:E-R 圖

2.1 系統的整體設計

桌面層次化客戶端管理系統的核心功能是實現工作流嵌套和生成可執行的腳本文件。具體的功能點有復制文件、移動文件、創建目錄、刪除目錄、壓縮文件、解壓縮文件、文件重命名、用記事本打開文件、生成可執行腳本文件、工作流模型設計、保存工作流模型等。項目的整體架構如圖1 所示,系統首頁界面效果如圖2 所示。

數據庫E-R 圖如圖3 所示。

2.2 主界面設計

一個主窗口提供一個用于構造程序用戶界面的平臺,PyQt4 使用QMainWindow 及其相關的類來管理主窗口界面,QMainWindow類擁有自己的layout,你可以添加QToolBars、QdockWidgets、一個QmenuBar 和一個 QstatusBar,該layout 還有一個中心區域,可以添加任何種類的widget。本系統的界面詳細設計如下:

QmenuBar:菜單欄里分別有file、workflow、edit、views 菜單。file 菜單里的二級菜單有打開最近的工作流、打開連接的數據庫、保存到xml 文件和保存到數據庫的選擇、以及可以導入外部的xml文件從而導入工作流,導出工作流菜單;workflow 菜單里的二級菜單有工作流執行、創建子工作流、編輯子工作流,導入工作流和導出工作流的菜單;edit 菜單有撤銷、重做、全選、復制、粘貼、選擇的功能;views 菜單里有對工作流進行放大、縮小、適應大小的功能。

QtoolBars:工具欄中有新建工作流按鈕、打開數據庫連接按鈕、保存工作流編輯信息的按鈕以及工作流執行按鈕。

QdockWidgets:該部分有Qt.LeftDockWidgetArea 左邊停靠的與模塊信息相關的DockWidget;Qt.RightDockWidgetArea 右邊停靠的DockWidget 具體可分為右上部分停靠的工作流列表DockWidget 和右下部分是進行工作流圖形化編輯相關的可拖拽模塊的DockWidget;以及Qt.NoDockWidget 不顯示的工具作用的DockWidget。

中心區域是進行工作流編輯的視圖,通過點擊新建工作流按鈕將創建一個新的工作流編輯視圖,點擊右邊的工作流列表或是從外部導入工作流的xml 文件則會把相關的工作流顯示在視圖上。

2.3 生成可執行腳本文件的設計

腳本文件是把工作流的執行過程進行文件存儲,達到成批的運行工作流的效果,我們都知道編輯命令行語句對于絕大部分的人來說是很困難的,為了能夠幫助用戶簡單的進行輸入操作就能生成腳本語句,達到自己想要的效果,本系統可以通過模塊的拖拽實現文件重命名等功能,用戶可以拖拽模塊把相關的文件操作模塊編輯成工作流,并輸入模塊的端口值,系統將根據模塊的功能、輸入參數和工作流流程生成相關的腳本文件,用戶可以雙擊腳本文件運行,即成批的運行工作流;用戶也可以打開腳本文件選擇自己所需要運行的那部分,在命令行窗口下粘貼運行。詳細實現與實現如下:

自定義模塊類,并根據需要添加輸入端口和輸出端口的個數,以及端口的名稱和類型。每個模塊類都有一個執行函數,當我們點擊工作流執行按鈕或是選擇模塊執行的時候,都會調用該執行函數。在執行函數中,打開腳本文件,讀取模塊輸入端口的相關值,把輸入端口的值當做參數添加到腳本語句中,根據需要設置輸出端口的值。

2.4 提高工作流加載速度

分別針對xml 文件保存工作流和數據庫保存工作流的方式,分別有兩種方式來加速工作流的加載速度。對于xml 文件保存工作流的方式,將采用臨時文件進行傳遞;對于數據庫保存工作流的方式采用對象包緩存的方式進行讀取。

臨時文件加速方式:每創建一個管道將生成一個臨時文件,將采用xml 存儲格式把在管道上編輯的工作流信息進行存儲,并生成locator 對象,當保存工作流時locator 對象將調用相關函數保存成特定文件名的xml 文件,并清除該臨時文件。

在工作流列表中打開工作流時,先判斷當前是否存在與之相關的臨時文件,若存在,則可以直接加載臨時文件里的工作流,提高了工作流在視圖上的加載速度;

若不存在,則創建臨時文件并復制打開的xml 文件的工作流信息,之后工作流的有關的信息的改動,將直接通過臨時文件來傳遞,最終保存更改文件的時候將刪除臨時文件。

對象包緩存加速方式:該方式自定義了具有加載和緩存對象包的類SaveBundle,捆綁類型必須在構造函數中指定,捆綁類型應該是捆綁包中主要對象的類型,當多個對象存儲在對象包中的時候,捆綁類型是識別哪個對象是主要的對象。參數列表是指對象包中包含的對象類型列表,主要包含工作流對象類型、vistrail 對象類型、日志對象類型等。在該類中對對象包進行深拷貝,對象包是一個字典即鍵是對象類型,值是對象類型的對象,再傳遞給locator。

當創建一個管道并指定數據庫保存數據的時候,將新建一個SaveBundle 對象把在管道上編輯的工作流信息進行存儲,并生成locator 對象,當保存工作流時,locator 對象將調用相關函數讀取SaveBundle 的對象包中的對象,并把對象信息存儲到數據庫中,并清除saveBundle。

在工作流列表中打開工作流時,先判斷特定哈希標識的值以確定當前是否存在與之相關工作流,若存在,則可以直接加載對象包中的工作流,提高了工作流在視圖上的加載速度;若不存在,則新建一個SaveBundle 對象并拷貝打開的數據庫的工作流信息,之后工作流的有關的信息的改動,將直接通過對象包來傳遞,最終保存更改工作流的時候清除saveBundle。

3 結論

本文介紹了工作流嵌套和生成腳本文件所需要的相關技術、工具和系統具體的實現。系統界面設計的具體實現部分采用了pyqt4來實現,一個工作流對應一個場景,可以對編輯的工作流進行多種方式的保存。模塊的功能設計部分是基于工作流實現腳本文件的生成,解決用戶編寫命令行語句的困難,實現成批的運行工作流。對于用戶交互部分本系統采用pyqt4 的信號槽、事件等技術實現模塊的一系列操作外,還有工作流的導入、導出等操作。

猜你喜歡
數據庫模型設計
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
數據庫
財經(2017年2期)2017-03-10 14:35:35
3D打印中的模型分割與打包
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 视频一本大道香蕉久在线播放 | 亚洲制服丝袜第一页| 亚洲日韩第九十九页| 精品久久久无码专区中文字幕| 欧美日韩一区二区在线免费观看| 国产精品天干天干在线观看| 日韩国产 在线| 亚洲日本中文综合在线| 久久公开视频| 毛片在线播放a| 五月综合色婷婷| 久久一色本道亚洲| 欧美色伊人| 激情综合图区| 国产av无码日韩av无码网站| 在线观看精品自拍视频| 国产成人精品男人的天堂| 日本精品影院| 亚洲综合精品香蕉久久网| 国产欧美精品午夜在线播放| 成人看片欧美一区二区| 在线人成精品免费视频| 99热这里只有精品2| 波多野结衣中文字幕久久| 国产制服丝袜91在线| 成人夜夜嗨| 日韩黄色在线| 夜夜操天天摸| 亚洲人成网站在线播放2019| 欧美精品亚洲精品日韩专区| 亚洲国产精品无码久久一线| 午夜福利无码一区二区| 欧美亚洲激情| 亚洲区视频在线观看| 欧美日韩精品在线播放| 丁香亚洲综合五月天婷婷| 亚洲成人网在线播放| 在线不卡免费视频| 国产精品xxx| 国产美女主播一级成人毛片| 四虎影视永久在线精品| 91精品国产自产在线老师啪l| 波多野吉衣一区二区三区av| 四虎免费视频网站| 广东一级毛片| 一本大道AV人久久综合| 91po国产在线精品免费观看| 精品色综合| 激情综合网址| 国产成人凹凸视频在线| 超碰免费91| 久久美女精品国产精品亚洲| 亚洲日韩图片专区第1页| 国产欧美日韩va另类在线播放| 久久精品免费看一| 人妻丰满熟妇αv无码| 91香蕉国产亚洲一二三区| 久久久久国产一区二区| 欧美激情网址| 国产在线观看99| 国产精品久久久久久搜索| 国产激情第一页| 国产精品19p| 国产人人射| 99久久国产综合精品2020| av手机版在线播放| 美女一级毛片无遮挡内谢| 欧美午夜小视频| 亚洲精品欧美日本中文字幕| 国产一区二区网站| 欧美成人免费| 亚洲色图欧美一区| 亚洲欧洲一区二区三区| 亚洲成a人片77777在线播放| 少妇精品在线| 国产精品护士| 亚亚洲乱码一二三四区| 香蕉国产精品视频| 亚洲一区黄色| 欧美va亚洲va香蕉在线| 成人国产免费| 国产成人乱无码视频|