• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Web的業(yè)務(wù)流程管理系統(tǒng)設(shè)計(jì)

      2019-11-12 12:01:33熊棠何怡璇
      電腦知識(shí)與技術(shù) 2019年25期
      關(guān)鍵詞:哈希時(shí)限業(yè)務(wù)流程

      熊棠 何怡璇

      摘要:在Linux系統(tǒng)中,使用Ruby on Rails 5框架設(shè)計(jì)一個(gè)基于Web的業(yè)務(wù)流程管理系統(tǒng)。提供流程倉(cāng)庫(kù)、流程設(shè)計(jì)、流程配置、流程引擎、流程維護(hù)、流程入口等功能。

      關(guān)鍵詞:BPMS;流程管理;Ruby on Rails 5

      中圖分類(lèi)號(hào):TP311? ? ? ? ? 文獻(xiàn)標(biāo)志碼:A

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

      現(xiàn)代企業(yè)運(yùn)作中,一個(gè)項(xiàng)目的生命周期可以分為多個(gè)階段,由多個(gè)人員經(jīng)手;可以用業(yè)務(wù)流程管理系統(tǒng)(Business Process Management System,BPMS)對(duì)項(xiàng)目進(jìn)行管理。BPMS是在工作流(Workflow)等技術(shù)基礎(chǔ)上發(fā)展起來(lái)的,基于業(yè)務(wù)流程建模,支持業(yè)務(wù)流程的分析、建模、模擬、優(yōu)化、協(xié)同與監(jiān)控等功能的新一代企業(yè)應(yīng)用系統(tǒng)核心[1]。

      在Linux系統(tǒng)中,使用Ruby on Rails 5框架,設(shè)計(jì)一個(gè)用于招投標(biāo)代理企業(yè)的業(yè)務(wù)流程管理系統(tǒng),使其具有上述功能。

      1 系統(tǒng)環(huán)境

      招投標(biāo)代理企業(yè)的主要業(yè)務(wù)就是為政府部門(mén)、企事業(yè)單位提供招投標(biāo)代理服務(wù)。一個(gè)項(xiàng)目從開(kāi)始到結(jié)束時(shí)間跨度較長(zhǎng)、業(yè)務(wù)人員需同時(shí)處理幾個(gè)乃至十幾個(gè)項(xiàng)目,可采用簡(jiǎn)易的BPMS對(duì)項(xiàng)目進(jìn)行管理。系統(tǒng)在Ubuntu16.04操作系統(tǒng)上運(yùn)行,采用Ruby on Rails 5框架,mysql 5.7數(shù)據(jù)庫(kù)。

      2 需求分析

      招投標(biāo)代理企業(yè)以項(xiàng)目為中心,須對(duì)項(xiàng)目進(jìn)行全生命周期管理。因此,以項(xiàng)目為中心來(lái)進(jìn)行系統(tǒng)設(shè)計(jì)。

      2.1 項(xiàng)目分類(lèi)

      經(jīng)業(yè)務(wù)梳理,項(xiàng)目可歸納為政府采購(gòu)、非政府采購(gòu)及其他三個(gè)類(lèi)型。不同類(lèi)型的項(xiàng)目,步驟流程、時(shí)間節(jié)點(diǎn)及需收集的數(shù)據(jù)均有差異。

      2.2 訪(fǎng)問(wèn)控制

      項(xiàng)目部門(mén)和行政部門(mén)需參與項(xiàng)目管理,項(xiàng)目部門(mén)負(fù)責(zé)項(xiàng)目的建立、主要步驟的處理,行政部門(mén)負(fù)責(zé)時(shí)間安排、房間安排、公告發(fā)布、合同管理、歸檔管理及考勤考評(píng)。項(xiàng)目部門(mén)多采用項(xiàng)目部(組)結(jié)合項(xiàng)目負(fù)責(zé)人制,項(xiàng)目負(fù)責(zé)人獨(dú)立負(fù)責(zé)整個(gè)項(xiàng)目,對(duì)其所在部(組)主管負(fù)責(zé)。行政部門(mén)多采用崗位制,且大量存在一人身兼多崗的情況。

      因此,在訪(fǎng)問(wèn)控制設(shè)計(jì)上,項(xiàng)目負(fù)責(zé)人只能操作自己負(fù)責(zé)的項(xiàng)目,主管可以看到本部(組)的所有項(xiàng)目,并具有相應(yīng)的權(quán)限。項(xiàng)目進(jìn)行到需要某崗位人員操作時(shí),該崗位用戶(hù)可以訪(fǎng)問(wèn)項(xiàng)目的特定步驟。

      2.3 控制

      一個(gè)項(xiàng)目在進(jìn)行時(shí),應(yīng)具備正常進(jìn)行、非正常返回、跳過(guò)不必要步驟、重新指定負(fù)責(zé)人員等功能。完成之后應(yīng)可查詢(xún)、展示、歸檔、導(dǎo)出。

      3 模型設(shè)計(jì)

      3.1 Project類(lèi)

      系統(tǒng)以項(xiàng)目為中心進(jìn)行設(shè)計(jì),核心模型為Project,存儲(chǔ)項(xiàng)目的所有數(shù)據(jù)。因不同類(lèi)型項(xiàng)目需要存儲(chǔ)的數(shù)據(jù)項(xiàng)不同,Project的字段應(yīng)為所有類(lèi)型項(xiàng)目需記錄字段的合集,并經(jīng)合并處理。

      3.2 Workflow類(lèi)

      項(xiàng)目的數(shù)據(jù)是根據(jù)推進(jìn)情況逐步錄入系統(tǒng)的,此過(guò)程就是工作流Workflow。工作流定義了一個(gè)項(xiàng)目需要經(jīng)過(guò)什么樣的流程,每一個(gè)流程需要做些什么,由誰(shuí)負(fù)責(zé),流程時(shí)限等。這些屬性由流程模板來(lái)定義。工作流包含至少一個(gè)步驟。

      3.3 Step類(lèi)

      步驟Step是工作流的組成部分,通過(guò)工作流與項(xiàng)目和模板關(guān)聯(lián),用以記錄當(dāng)前項(xiàng)目的進(jìn)展情況。Step有以下幾個(gè)主要屬性。

      previous_step_id:上一個(gè)步驟的id,用以形成線(xiàn)性的工作流;

      status:狀態(tài),有預(yù)備、激活、異常、退回、完成、跳過(guò)五種狀態(tài);

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

      must_be_finished_at:時(shí)限,該步驟最晚應(yīng)完成的時(shí)間。

      3.4 流程模板

      流程模板用來(lái)配置整個(gè)工作流,通過(guò)全局變量@@project_template進(jìn)行訪(fǎng)問(wèn),為哈希類(lèi)型數(shù)據(jù)。此變量可以寫(xiě)為一個(gè)類(lèi),也可以動(dòng)態(tài)生成。

      3.4.1 一級(jí)結(jié)構(gòu)

      @@project_template的結(jié)構(gòu)為{‘【項(xiàng)目類(lèi)型代字】 => {【表示項(xiàng)目流程的哈希表】}},即每個(gè)項(xiàng)目類(lèi)型用一對(duì)鍵-值對(duì)表示。如政府采購(gòu),項(xiàng)目類(lèi)型代字為“zfcg”,則鍵-值對(duì)為‘zfcg => {【表示政府采購(gòu)流程的哈希表】}。

      3.4.2 二級(jí)結(jié)構(gòu)

      以政府采購(gòu)為例說(shuō)明項(xiàng)目流程的哈希表結(jié)構(gòu):

      {

      ‘title => ‘政府采購(gòu),

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

      }

      title的值為字符串,表示該類(lèi)型的名字;steps的值為數(shù)組,數(shù)組的每個(gè)元素對(duì)應(yīng)工作流中的一個(gè)步驟。

      3.4.3 三級(jí)結(jié)構(gòu)

      steps數(shù)組每個(gè)元素均為哈希表,定義一個(gè)步驟的所有屬性。其結(jié)構(gòu)為:

      {

      ‘title => ‘【步驟名稱(chēng)】,

      ‘duty => ‘【步驟責(zé)任人】,

      ‘max_time_interval => ‘【最大時(shí)間間隔】,

      ‘skipped => ‘【是否運(yùn)行跳過(guò)】,

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

      }

      duty的值為字符串,用來(lái)表示可操作當(dāng)前步驟的用戶(hù),形如‘duty[政采備案審核崗]、‘head_user、‘dept[事業(yè)部]等,經(jīng)解析后可定位至一個(gè)或一組人員。

      max_time_interval表示項(xiàng)目開(kāi)始、或完成某一步驟后、或數(shù)據(jù)庫(kù)中該項(xiàng)目某個(gè)表示日期時(shí)間的數(shù)據(jù)值后N天內(nèi)必須完成此步驟。臨期可預(yù)警,超期可告警。

      operations的值為數(shù)組,數(shù)組的每個(gè)元素對(duì)應(yīng)一個(gè)可操作字段。

      3.4.4 四級(jí)結(jié)構(gòu)

      operations數(shù)組每個(gè)元素均為哈希表,定義一個(gè)字段的操作方式及數(shù)據(jù)來(lái)源。其結(jié)構(gòu)為:

      {

      ‘model => ‘【要操作的ActiveRecord模型類(lèi)名】,

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

      ‘title => ‘【頁(yè)面顯示文字】,

      ‘source => ‘【數(shù)據(jù)來(lái)源】

      }

      要操作ActiveRecord模型的類(lèi)名,通常為Project,設(shè)置該屬性是為了便于靈活擴(kuò)展。

      數(shù)據(jù)來(lái)源表示如何得到這個(gè)字段的值,通過(guò)自定義的視圖輔助方法解析,得到數(shù)據(jù)的輸入方式。如有動(dòng)態(tài)數(shù)據(jù)則請(qǐng)求自建Src類(lèi)處理。

      需要注意的是,哈希類(lèi)型變量增加鍵-值對(duì)不會(huì)影響原有的數(shù)據(jù),故可根據(jù)需要定義新屬性。

      3.5 Src類(lèi)

      Src類(lèi)根據(jù)流程模板的source參數(shù)提供數(shù)據(jù),支持參數(shù)傳遞,使用類(lèi)方法run,經(jīng)過(guò)解析,對(duì)應(yīng)到Src類(lèi)相應(yīng)的類(lèi)方法并返回值。如source的值為‘form_blank_select_customer()表示下拉菜單,菜單選項(xiàng)由Src.run(‘customer())給出。

      run方法的參數(shù)并不是真實(shí)的方法名,和真實(shí)方法名一一對(duì)應(yīng),這個(gè)對(duì)應(yīng)關(guān)系通過(guò)哈希類(lèi)型常量DATASOURCE實(shí)現(xiàn)。如‘customer()對(duì)應(yīng)Src類(lèi)的類(lèi)方法real_customer_gthjn(),該方法返回一個(gè)哈希變量。

      4 控制與視圖

      按類(lèi)型新建項(xiàng)目后,控制器根據(jù)項(xiàng)目類(lèi)型讀取流程模板并創(chuàng)建視圖。

      4.1 根據(jù)流程模板創(chuàng)建視圖

      新建項(xiàng)目或執(zhí)行項(xiàng)目某個(gè)步驟,都需要根據(jù)流程模板動(dòng)態(tài)創(chuàng)建視圖。根據(jù)項(xiàng)目類(lèi)型和當(dāng)前步驟序列,在流程模板中定位當(dāng)前步驟的operations值來(lái)創(chuàng)建表單??刂破鞅闅voperations,將哈希類(lèi)型的元素值作為參數(shù)交由視圖輔助方法data_input()處理。

      data_input()直接獲取model類(lèi)名和要操作的字段名field,對(duì)source則按照規(guī)則進(jìn)行解析。解析時(shí)采用正則表達(dá)式,首先解析第一個(gè)關(guān)鍵字。常用關(guān)鍵字如下:

      form_blank:插入文本框。下拉菜單、時(shí)間選擇器、多選菜單等可在文本框基礎(chǔ)上通過(guò)JS實(shí)現(xiàn);

      form_check_box:插入復(fù)選框。復(fù)選框可通過(guò)JS實(shí)現(xiàn)多種功能,如通過(guò)勾選控制其他表單元素;

      list:插入列表。列出現(xiàn)有數(shù)據(jù),支持增刪改操作;

      window_open:插入按鈕,可打開(kāi)新窗口。通過(guò)新窗口的腳本對(duì)父窗口元素進(jìn)行操作;

      auto:當(dāng)前頁(yè)面不顯示,表單提交后在后臺(tái)處理。

      其次解析后續(xù)關(guān)鍵字,給表單添加頁(yè)面腳本等。最后一個(gè)關(guān)鍵字是字母數(shù)字與括號(hào)的組合,交由Src類(lèi)處理。

      根據(jù)上述流程創(chuàng)建出視圖。

      4.2 流程控制

      創(chuàng)建好的項(xiàng)目能看到流程圖。部分步驟有完成時(shí)限,如計(jì)算時(shí)限的參數(shù)不全,該步驟及后續(xù)步驟將暫時(shí)不被創(chuàng)建。

      每個(gè)方格即為一個(gè)步驟,用不同樣式區(qū)分步驟狀態(tài)。具有權(quán)限的用戶(hù)可以對(duì)已完成的步驟進(jìn)行修改;當(dāng)前激活的步驟可以執(zhí)行,并可轉(zhuǎn)移給其他用戶(hù)作為責(zé)任人;未激活步驟如skipped屬性為true,則有‘跳過(guò)按鈕。被跳過(guò)步驟如后續(xù)步驟未完成則有‘恢復(fù)按鈕。每個(gè)步驟均有詳細(xì)操作日志,用于事后審計(jì)。

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

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

      4.3 提示與異常

      每一個(gè)步驟完成后,系統(tǒng)會(huì)自動(dòng)對(duì)后續(xù)所有步驟進(jìn)行更新。當(dāng)計(jì)算時(shí)限的參數(shù)完備時(shí),之前未創(chuàng)建的步驟及后續(xù)步驟將被創(chuàng)建,并設(shè)置時(shí)限的具體日期。

      計(jì)算時(shí)限時(shí)根據(jù)流程模板的設(shè)置分為自然日和工作日,自然日直接計(jì)算可得,工作日使用API獲得結(jié)果。

      當(dāng)前時(shí)間距時(shí)限72小時(shí)開(kāi)始有提示標(biāo)注;時(shí)限當(dāng)日,開(kāi)始告警;時(shí)限已過(guò)時(shí),將顯示超期。超期信息將記入日志,供事后審計(jì)、考勤。

      5 數(shù)據(jù)處理

      錄入項(xiàng)目數(shù)據(jù)之后,可以項(xiàng)目數(shù)據(jù)為基礎(chǔ)進(jìn)行各種統(tǒng)計(jì)分析,比如廢標(biāo)率統(tǒng)計(jì)、耗時(shí)統(tǒng)計(jì)等。對(duì)于數(shù)據(jù)展示和導(dǎo)出,采用了在線(xiàn)模擬Excel工作區(qū)樣式和導(dǎo)出為Excel文件的方式,以兼容現(xiàn)有工作習(xí)慣。

      在線(xiàn)模擬Excel工作區(qū)采用table元素,配合js和css,實(shí)現(xiàn)類(lèi)似的視覺(jué)效果。為了數(shù)據(jù)安全,此處不再提供數(shù)據(jù)增刪改功能。

      數(shù)據(jù)導(dǎo)出使用第三方gem axlsx,可以使用圖表、圖像、自動(dòng)列寬、自定義樣式和完整模式驗(yàn)證生成XLSX電子表格[2]。

      6 結(jié)束語(yǔ)

      經(jīng)過(guò)系統(tǒng)測(cè)試及一年的線(xiàn)上運(yùn)行,該系統(tǒng)達(dá)到了設(shè)計(jì)要求。但該系統(tǒng)還存在只支持線(xiàn)性流程,不支持分支流程的問(wèn)題,將在后續(xù)進(jìn)行改進(jìn)。

      參考文獻(xiàn):

      [1] 業(yè)務(wù)流程管理 - 維基百科,自由的百科全書(shū)[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 社區(qū) Gem 托管[EB/OL]. https://rubygems.org/gems/axlsx.

      猜你喜歡
      哈希時(shí)限業(yè)務(wù)流程
      RPA機(jī)器人助業(yè)務(wù)流程智能化
      心電圖QRS波時(shí)限與慢性心力衰竭患者預(yù)后的相關(guān)性分析
      平行時(shí)空
      智族GQ(2019年7期)2019-08-26 09:31:36
      STK業(yè)務(wù)流程優(yōu)化的探究
      企業(yè)財(cái)務(wù)管理、業(yè)務(wù)流程管理中整合ERP之探索
      基于財(cái)務(wù)業(yè)務(wù)流程再造的ERP信息系統(tǒng)構(gòu)建探析
      基于OpenCV與均值哈希算法的人臉相似識(shí)別系統(tǒng)
      基于維度分解的哈希多維快速流分類(lèi)算法
      反時(shí)限過(guò)流保護(hù)模型優(yōu)化與曲線(xiàn)交叉研究
      基于同態(tài)哈希函數(shù)的云數(shù)據(jù)完整性驗(yàn)證算法
      石门县| 仙桃市| 南木林县| 巴彦淖尔市| 乃东县| 响水县| 株洲市| 阳城县| 罗山县| 城固县| 河西区| 安吉县| 奉节县| 宣化县| 长岭县| 蚌埠市| 罗田县| 阳春市| 安陆市| 莱芜市| 胶州市| 樟树市| 芜湖县| 志丹县| 于田县| 长垣县| 赣榆县| 泾源县| 永川市| 仙居县| 米易县| 闻喜县| 丹凤县| 桃江县| 兰州市| 准格尔旗| 尼玛县| 兰西县| 礼泉县| 扎兰屯市| 马山县|