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

基于Web的業務流程管理系統設計

2019-11-12 12:01:33熊棠何怡璇
電腦知識與技術 2019年25期

熊棠 何怡璇

摘要:在Linux系統中,使用Ruby on Rails 5框架設計一個基于Web的業務流程管理系統。提供流程倉庫、流程設計、流程配置、流程引擎、流程維護、流程入口等功能。

關鍵詞:BPMS;流程管理;Ruby on Rails 5

中圖分類號:TP311? ? ? ? ? 文獻標志碼:A

文章編號:1009-3044(2019)25-0059-03

現代企業運作中,一個項目的生命周期可以分為多個階段,由多個人員經手;可以用業務流程管理系統(Business Process Management System,BPMS)對項目進行管理。BPMS是在工作流(Workflow)等技術基礎上發展起來的,基于業務流程建模,支持業務流程的分析、建模、模擬、優化、協同與監控等功能的新一代企業應用系統核心[1]。

在Linux系統中,使用Ruby on Rails 5框架,設計一個用于招投標代理企業的業務流程管理系統,使其具有上述功能。

1 系統環境

招投標代理企業的主要業務就是為政府部門、企事業單位提供招投標代理服務。一個項目從開始到結束時間跨度較長、業務人員需同時處理幾個乃至十幾個項目,可采用簡易的BPMS對項目進行管理。系統在Ubuntu16.04操作系統上運行,采用Ruby on Rails 5框架,mysql 5.7數據庫。

2 需求分析

招投標代理企業以項目為中心,須對項目進行全生命周期管理。因此,以項目為中心來進行系統設計。

2.1 項目分類

經業務梳理,項目可歸納為政府采購、非政府采購及其他三個類型。不同類型的項目,步驟流程、時間節點及需收集的數據均有差異。

2.2 訪問控制

項目部門和行政部門需參與項目管理,項目部門負責項目的建立、主要步驟的處理,行政部門負責時間安排、房間安排、公告發布、合同管理、歸檔管理及考勤考評。項目部門多采用項目部(組)結合項目負責人制,項目負責人獨立負責整個項目,對其所在部(組)主管負責。行政部門多采用崗位制,且大量存在一人身兼多崗的情況。

因此,在訪問控制設計上,項目負責人只能操作自己負責的項目,主管可以看到本部(組)的所有項目,并具有相應的權限。項目進行到需要某崗位人員操作時,該崗位用戶可以訪問項目的特定步驟。

2.3 控制

一個項目在進行時,應具備正常進行、非正常返回、跳過不必要步驟、重新指定負責人員等功能。完成之后應可查詢、展示、歸檔、導出。

3 模型設計

3.1 Project類

系統以項目為中心進行設計,核心模型為Project,存儲項目的所有數據。因不同類型項目需要存儲的數據項不同,Project的字段應為所有類型項目需記錄字段的合集,并經合并處理。

3.2 Workflow類

項目的數據是根據推進情況逐步錄入系統的,此過程就是工作流Workflow。工作流定義了一個項目需要經過什么樣的流程,每一個流程需要做些什么,由誰負責,流程時限等。這些屬性由流程模板來定義。工作流包含至少一個步驟。

3.3 Step類

步驟Step是工作流的組成部分,通過工作流與項目和模板關聯,用以記錄當前項目的進展情況。Step有以下幾個主要屬性。

previous_step_id:上一個步驟的id,用以形成線性的工作流;

status:狀態,有預備、激活、異常、退回、完成、跳過五種狀態;

sequence:用以讀取流程模板配置;

must_be_finished_at:時限,該步驟最晚應完成的時間。

3.4 流程模板

流程模板用來配置整個工作流,通過全局變量@@project_template進行訪問,為哈希類型數據。此變量可以寫為一個類,也可以動態生成。

3.4.1 一級結構

@@project_template的結構為{‘【項目類型代字】 => {【表示項目流程的哈希表】}},即每個項目類型用一對鍵-值對表示。如政府采購,項目類型代字為“zfcg”,則鍵-值對為‘zfcg => {【表示政府采購流程的哈希表】}。

3.4.2 二級結構

以政府采購為例說明項目流程的哈希表結構:

{

‘title => ‘政府采購,

‘steps => [【表示步驟的哈希式】]

}

title的值為字符串,表示該類型的名字;steps的值為數組,數組的每個元素對應工作流中的一個步驟。

3.4.3 三級結構

steps數組每個元素均為哈希表,定義一個步驟的所有屬性。其結構為:

{

‘title => ‘【步驟名稱】,

‘duty => ‘【步驟責任人】,

‘max_time_interval => ‘【最大時間間隔】,

‘skipped => ‘【是否運行跳過】,

‘operations => [【表示該步驟可操作字段】]

}

duty的值為字符串,用來表示可操作當前步驟的用戶,形如‘duty[政采備案審核崗]、‘head_user、‘dept[事業部]等,經解析后可定位至一個或一組人員。

max_time_interval表示項目開始、或完成某一步驟后、或數據庫中該項目某個表示日期時間的數據值后N天內必須完成此步驟。臨期可預警,超期可告警。

operations的值為數組,數組的每個元素對應一個可操作字段。

3.4.4 四級結構

operations數組每個元素均為哈希表,定義一個字段的操作方式及數據來源。其結構為:

{

‘model => ‘【要操作的ActiveRecord模型類名】,

‘field => ‘【要操作的字段名】,

‘title => ‘【頁面顯示文字】,

‘source => ‘【數據來源】

}

要操作ActiveRecord模型的類名,通常為Project,設置該屬性是為了便于靈活擴展。

數據來源表示如何得到這個字段的值,通過自定義的視圖輔助方法解析,得到數據的輸入方式。如有動態數據則請求自建Src類處理。

需要注意的是,哈希類型變量增加鍵-值對不會影響原有的數據,故可根據需要定義新屬性。

3.5 Src類

Src類根據流程模板的source參數提供數據,支持參數傳遞,使用類方法run,經過解析,對應到Src類相應的類方法并返回值。如source的值為‘form_blank_select_customer()表示下拉菜單,菜單選項由Src.run(‘customer())給出。

run方法的參數并不是真實的方法名,和真實方法名一一對應,這個對應關系通過哈希類型常量DATASOURCE實現。如‘customer()對應Src類的類方法real_customer_gthjn(),該方法返回一個哈希變量。

4 控制與視圖

按類型新建項目后,控制器根據項目類型讀取流程模板并創建視圖。

4.1 根據流程模板創建視圖

新建項目或執行項目某個步驟,都需要根據流程模板動態創建視圖。根據項目類型和當前步驟序列,在流程模板中定位當前步驟的operations值來創建表單。控制器遍歷operations,將哈希類型的元素值作為參數交由視圖輔助方法data_input()處理。

data_input()直接獲取model類名和要操作的字段名field,對source則按照規則進行解析。解析時采用正則表達式,首先解析第一個關鍵字。常用關鍵字如下:

form_blank:插入文本框。下拉菜單、時間選擇器、多選菜單等可在文本框基礎上通過JS實現;

form_check_box:插入復選框。復選框可通過JS實現多種功能,如通過勾選控制其他表單元素;

list:插入列表。列出現有數據,支持增刪改操作;

window_open:插入按鈕,可打開新窗口。通過新窗口的腳本對父窗口元素進行操作;

auto:當前頁面不顯示,表單提交后在后臺處理。

其次解析后續關鍵字,給表單添加頁面腳本等。最后一個關鍵字是字母數字與括號的組合,交由Src類處理。

根據上述流程創建出視圖。

4.2 流程控制

創建好的項目能看到流程圖。部分步驟有完成時限,如計算時限的參數不全,該步驟及后續步驟將暫時不被創建。

每個方格即為一個步驟,用不同樣式區分步驟狀態。具有權限的用戶可以對已完成的步驟進行修改;當前激活的步驟可以執行,并可轉移給其他用戶作為責任人;未激活步驟如skipped屬性為true,則有‘跳過按鈕。被跳過步驟如后續步驟未完成則有‘恢復按鈕。每個步驟均有詳細操作日志,用于事后審計。

每個步驟均可‘通過和‘不通過,通過即完成并激活下一步,不通過則將本步驟設為預備并將上一步設置為激活。留言備注可用于記錄通過或不通過的理由且不可更改,用于交流及事后審計。留言采用JSON格式存儲,可記錄多條留言。

‘上一步和‘下一步用于瀏覽已完成的步驟,預備及跳過的步驟不可瀏覽。

4.3 提示與異常

每一個步驟完成后,系統會自動對后續所有步驟進行更新。當計算時限的參數完備時,之前未創建的步驟及后續步驟將被創建,并設置時限的具體日期。

計算時限時根據流程模板的設置分為自然日和工作日,自然日直接計算可得,工作日使用API獲得結果。

當前時間距時限72小時開始有提示標注;時限當日,開始告警;時限已過時,將顯示超期。超期信息將記入日志,供事后審計、考勤。

5 數據處理

錄入項目數據之后,可以項目數據為基礎進行各種統計分析,比如廢標率統計、耗時統計等。對于數據展示和導出,采用了在線模擬Excel工作區樣式和導出為Excel文件的方式,以兼容現有工作習慣。

在線模擬Excel工作區采用table元素,配合js和css,實現類似的視覺效果。為了數據安全,此處不再提供數據增刪改功能。

數據導出使用第三方gem axlsx,可以使用圖表、圖像、自動列寬、自定義樣式和完整模式驗證生成XLSX電子表格[2]。

6 結束語

經過系統測試及一年的線上運行,該系統達到了設計要求。但該系統還存在只支持線性流程,不支持分支流程的問題,將在后續進行改進。

參考文獻:

[1] 業務流程管理 - 維基百科,自由的百科全書[EB/OL]. https://zh.wikipedia.com/wiki/%E4%B8%9A%E5%8A%A1%E6%B5%81%E7%A8%8B%E7%AE%A1%E7%90%86.

[2] axlsx | RubyGems.org | Ruby 社區 Gem 托管[EB/OL]. https://rubygems.org/gems/axlsx.

主站蜘蛛池模板: 成人在线亚洲| 色噜噜综合网| 欧美日韩精品综合在线一区| 国产精品专区第1页| www.亚洲一区二区三区| 无码内射中文字幕岛国片| 免费人欧美成又黄又爽的视频| 国产女人喷水视频| 国产视频只有无码精品| 亚洲资源在线视频| 五月婷婷导航| 无码网站免费观看| 国产精品嫩草影院视频| 亚洲自偷自拍另类小说| 真实国产精品vr专区| 国产天天色| 精品超清无码视频在线观看| 高清不卡一区二区三区香蕉| 亚洲自拍另类| 亚洲AV无码一二区三区在线播放| 97在线国产视频| 日韩不卡高清视频| 一级毛片免费不卡在线视频| 婷婷午夜天| 91小视频在线观看免费版高清| 亚洲动漫h| 亚洲无码在线午夜电影| 在线观看国产一区二区三区99| 欧美成人日韩| 国产精品美女网站| 久久99蜜桃精品久久久久小说| 国产69精品久久久久孕妇大杂乱 | 一级不卡毛片| 成人午夜视频网站| 国产在线自揄拍揄视频网站| 成人看片欧美一区二区| 亚洲国产一成久久精品国产成人综合| 夜夜操国产| 亚洲午夜福利精品无码不卡| 欧美专区在线观看| 91视频99| 亚洲an第二区国产精品| 久久99精品久久久大学生| 一本大道在线一本久道| 97视频在线观看免费视频| 国产精品美乳| 亚洲天堂高清| 色屁屁一区二区三区视频国产| 国产又粗又猛又爽视频| 就去色综合| 国产成人禁片在线观看| 国内精品91| 成人国产一区二区三区| 亚洲视频三级| 日韩无码真实干出血视频| 国产在线小视频| 无码一区二区波多野结衣播放搜索| 欧美中文字幕无线码视频| 97国产在线视频| 2021国产在线视频| 国产精品视频a| 伊伊人成亚洲综合人网7777| 成人字幕网视频在线观看| 国产9191精品免费观看| 精品色综合| 亚洲中文字幕av无码区| 国产91视频观看| 亚洲美女一区| 精品成人一区二区三区电影| 日本成人在线不卡视频| 亚洲区第一页| 中文字幕久久波多野结衣| 国产JIZzJIzz视频全部免费| 国产高清又黄又嫩的免费视频网站| 亚洲中文字幕在线观看| 污网站在线观看视频| 国产成人av一区二区三区| 好吊色妇女免费视频免费| 欧美一级片在线| 日韩黄色在线| 中文字幕在线看| 国产在线视频自拍|