|
在沒用管理系統(tǒng)的時候,很多企業(yè)都會將一些生產(chǎn)或流水線操作的數(shù)據(jù)保存在excel文件中,按名稱或按sheet頁形成多份excel的表格數(shù)據(jù)。 當運用了工作流管理系統(tǒng)后,這些生產(chǎn)或流水線的操作都會記錄成流程的節(jié)點,過程需要記錄的數(shù)據(jù),也會應用到管理系統(tǒng)中。通常是建立數(shù)據(jù)庫,建立數(shù)據(jù)庫表來存儲這些記錄。 原來記錄在紙質(zhì)或excel文件中的數(shù)據(jù),就需要通過工作流管理系統(tǒng),執(zhí)行流程的節(jié)點,打開節(jié)點上的表單界面,錄入這些數(shù)據(jù),并保存到數(shù)據(jù)庫表中。 這樣企業(yè)用戶在操作習慣上會有些變化,原來存excel文件的,現(xiàn)在需要通過表單界面來錄入。 用戶為了更方便自己,會提出,我們還是按原來的方式,記錄在excel文件中,或者說,我們記錄了excel文件的,能不能選擇excel文件,上傳一下,然后再從流程的表單界面中展現(xiàn)出這些數(shù)據(jù),并可編輯和維護,然后繼續(xù)流程的流轉(zhuǎn)。 為了適應這種功能,我們就必須在流程節(jié)點的表單中加上上傳excel文件的功能。 在我們eform自定義表單中,有上傳附件的控件,但是和這種需求稍有區(qū)別:eform上傳附件的控件,文件會上傳到web服務器的目錄中,不會打開文件將數(shù)據(jù)導入到數(shù)據(jù)庫表。 其實打開excel文件,將數(shù)據(jù)導入到數(shù)據(jù)庫表,這個要用自定義代碼來實現(xiàn)更方便。 下面是實現(xiàn)這個需求的過程: 在流程節(jié)點表單中加上上傳附件的功能按鈕,點擊后模態(tài)打開上傳附件的選擇頁面。
選擇需要上傳的附件,點擊上傳,上傳附件的頁面是用的基本的 type=file的標準控件。action指向后臺的類,當選擇好文件,點擊上傳后,后臺類截獲到上傳的文件流. 是j2ee的工程,就利用poi包,分析excel文件的行,列,單元格,取出數(shù)據(jù),將數(shù)據(jù)拼成insert into 的sql語句,將數(shù)據(jù)寫入數(shù)據(jù)庫表。 是dotnet的工程,就利用分析excel文件的dll,分析文件的行、列、單元格,將數(shù)據(jù)拼成insert into 語句,寫入數(shù)據(jù)庫表。
上傳完成后,關(guān)閉上傳頁面,返回到流程節(jié)點表單錄入界面,并且刷新頁面,頁面表格中顯示的,就是剛才excel文件中上傳的內(nèi)容。
用戶可以編輯修改表格中的內(nèi)容,點擊 執(zhí)行后,再次提交修改后的記錄,并執(zhí)行流程的流轉(zhuǎn)。 因為后臺分析excel文件,是取的輸入流直接分析的,因此web服務器中沒有存直接的文件。 將上傳附件按鈕功能 封裝成一個共用的js函數(shù),打開特定的上傳附件的頁面。在上傳附件的頁面中接收流程實例id, 標識存入那張業(yè)務表的參數(shù)。
每個excel文件的格式必須固定,每列需要和數(shù)據(jù)庫表的字段綁定。 這樣在流程節(jié)點中掛接的業(yè)務表單中,需要上傳附件功能的,就定義上傳附件的按鈕,調(diào)用封裝好的js函數(shù),并按照標識寫入數(shù)據(jù)庫表。這樣做到在流程節(jié)點的表單中快速的集成導入excel文件的功能。 |
|
|
來自: 悟靜 > 《.net和asp.net》