伊宏鑫 黑龍江省火電第三工程公司 163000
妙用插件 推波助流
——通達(dá)OA工作流設(shè)計(jì)中使用插件程序掌控列表控件的幾個(gè)方法
伊宏鑫 黑龍江省火電第三工程公司 163000
通達(dá)OA后臺(tái)運(yùn)行插件程序?qū)⒘斜砜丶?shù)據(jù)轉(zhuǎn)存至后臺(tái)附加的新數(shù)據(jù)表;并實(shí)現(xiàn)列表控件字段不同經(jīng)辦人的分別寫字段權(quán)限。
OA工作流設(shè)計(jì);列表控件;數(shù)據(jù)統(tǒng)計(jì)與寫權(quán)限;插件程序
OA workflow design;list control;statistics and write access to plug-ins
通達(dá)OA網(wǎng)絡(luò)智能辦公系統(tǒng)Office Anywhere是由中國兵器工業(yè)信息中心開發(fā)的協(xié)同辦公軟件,其通用性、易用性、健壯性是目前市場同類軟件的佼佼者。除價(jià)格、服務(wù)、易上手幾個(gè)優(yōu)勢外,其工作流技術(shù)尤為令人稱道。從目前推出的最新版本看,其強(qiáng)勁的通用管理能力亦使一般的企業(yè)管理提升了品次。但隨著應(yīng)用水平的不斷提高,應(yīng)用領(lǐng)域的不斷擴(kuò)大,用戶也逐漸向個(gè)性化需求方向發(fā)展。特別是工作流模塊,其亟待解決的就是在工作流設(shè)計(jì)中列表控件數(shù)據(jù)統(tǒng)計(jì)與寫權(quán)限問題。為此,我們針對(duì)這一情況進(jìn)行了二次開發(fā)并在實(shí)際中解決了這些問題。
通達(dá)OA網(wǎng)絡(luò)智能辦公系統(tǒng)工作流設(shè)計(jì)分表單設(shè)計(jì)和流程設(shè)計(jì)兩個(gè)步驟。在表單設(shè)計(jì)中,系統(tǒng)提供了實(shí)現(xiàn)相同格式記錄的輸入控件“列表控件”,該控件雖然具有較強(qiáng)的數(shù)據(jù)處理能力但依然存在不足:
1.1 發(fā)起多個(gè)流程后,無法分類匯總包含在列表控件記錄中的某類數(shù)據(jù)。如:
發(fā)起人于2012.02.12發(fā)起的流程,寫入流程表單的列表控件數(shù)據(jù)(表1),發(fā)起人于2012.02.23發(fā)起的流程,寫入流程表單的列表控件數(shù)據(jù)(表2)。
表1 材料采購計(jì)劃明細(xì)表(元)
發(fā)起人:xxx 計(jì)劃日期:2012.02.12
表2 材料采購計(jì)劃明細(xì)表(元)
發(fā)起人:xxx 計(jì)劃日期:2012.02.23
當(dāng)在統(tǒng)計(jì)2012.02.12日到2012.02.23日發(fā)起的兩個(gè)流程中釘書器或碳素筆的數(shù)量時(shí),列表控件就無能為力,具體的統(tǒng)計(jì)結(jié)果也不能為及其它流程使用。
1.2 仍然以上述二表為例,現(xiàn)在發(fā)起人A在表一中填寫了編號(hào)、材料名稱、規(guī)格、數(shù)量、單位以后,轉(zhuǎn)交到下一步審核。下一步驟執(zhí)行人如對(duì)材料計(jì)劃數(shù)量核準(zhǔn)有異議,對(duì)數(shù)量或價(jià)格進(jìn)行更改時(shí),因該控件是對(duì)所有有編輯權(quán)限的執(zhí)行人全開,所以,不能對(duì)編輯權(quán)限字段分別指定,故有錯(cuò)誤修改數(shù)據(jù)的風(fēng)險(xiǎn)。
1.3 列表控件的行列數(shù)據(jù)存儲(chǔ)方式系統(tǒng)默認(rèn)為一個(gè)字段,記錄、字段以標(biāo)記分隔符形式存儲(chǔ)在后臺(tái)數(shù)據(jù)表的字段中,不宜在工作流設(shè)計(jì)查詢統(tǒng)計(jì),也不能將統(tǒng)計(jì)結(jié)果在其它流程中調(diào)用。
鑒于以上三點(diǎn),我們在工作流程設(shè)計(jì)的步驟中,巧妙利用系統(tǒng)提供的工作流程提交前執(zhí)行插件程序這一功能來克服上述不足,完成各類工作流功能的擴(kuò)展。
寫兩套插件程序,一套作為將列表控件數(shù)據(jù)轉(zhuǎn)存至后臺(tái)附加的新數(shù)據(jù)表。另一套在后續(xù)經(jīng)辦人改寫列表控件字段后,與第一插件程序回存的新數(shù)據(jù)表內(nèi)數(shù)據(jù)進(jìn)行組合,再寫回正式工作流后臺(tái)數(shù)據(jù)表。只要后續(xù)經(jīng)辦人被授權(quán)改寫列表控件字段,就嵌入該插件程序以完成數(shù)據(jù)存儲(chǔ)。
仍以前面兩個(gè)列表控件數(shù)據(jù)為例,設(shè)計(jì)流程表單如下例:
3.1 計(jì)劃申請人提出材料采購申請,材料明細(xì)表上部控件為計(jì)劃申請人填寫。
其中,材料明細(xì)表列表控件只填寫,編號(hào)、材料名稱、規(guī)格、數(shù)量、單位。(運(yùn)行第一套插件程序)
3.2 審核人對(duì)計(jì)劃申請人提出的材料進(jìn)行首次確認(rèn),在審核意見處填寫審核意見,流程根據(jù)給出的意見決定流程走向,不同意回步驟1,同意則轉(zhuǎn)交下步驟3進(jìn)行物資部核價(jià)。
3.3 物資部核價(jià)人對(duì)材料明細(xì)表中的材料的市場單價(jià)、成交價(jià)格進(jìn)行編輯,完成材料明細(xì)表。并在核價(jià)意見中填寫據(jù)體意見,自動(dòng)轉(zhuǎn)交到下步驟4批準(zhǔn)人辦理(運(yùn)行第一套插件程序)。
3.4 批準(zhǔn)人根據(jù)上述經(jīng)辦人填寫的資料再次確認(rèn),并填寫意見,不同意回步驟1,同意則轉(zhuǎn)交下步驟5物資部采購人。
3.5 物資部采購人根據(jù)上述經(jīng)辦人填寫的資料進(jìn)行采購,并填寫意見完成流程。
3.6 嵌入插件程序的步驟
(1)計(jì)劃申請人提出材料采購申請后數(shù)據(jù)提交時(shí),第一套插件程序?qū)⒈粓?zhí)行,列表控件中填寫的,編號(hào)、材料名稱、規(guī)格、數(shù)量、單位字段被寫入新建數(shù)據(jù)表中(同時(shí)存儲(chǔ)必要的工作流特征以便搜索)。
(2)物資部核價(jià)人對(duì)材料明細(xì)表中的材料的市場單價(jià)、成交價(jià)格進(jìn)行編輯,完成材料明細(xì)表后,執(zhí)行第二套插件程序,將新建數(shù)據(jù)表存儲(chǔ)的數(shù)據(jù)與市場單價(jià)、成交價(jià)格合并,寫入工作流系統(tǒng)后臺(tái)數(shù)據(jù)表對(duì)應(yīng)字段。
(3)如果后續(xù)經(jīng)辦人仍有改寫列表控件的數(shù)據(jù)要求時(shí),隨時(shí)嵌入第二套插件程序即可,但要在PHP插件程序中明確指定當(dāng)前經(jīng)辦人可編輯的字段編號(hào)(編號(hào)可連續(xù)亦可跳躍,數(shù)目限制在25以內(nèi))。
4.1 后臺(tái)新表的建立
打開PHPmyAdmin,打開TD_OA,點(diǎn)擊操作,創(chuàng)建一個(gè)名為flow_form_user 的數(shù)據(jù)表,作為備用。用戶也可根據(jù)自己應(yīng)用的情況自行定義列的個(gè)數(shù)。如果嫌麻煩可建立SQL腳本新建表,腳本大致如下:
4.2 表單設(shè)計(jì)的原則
在設(shè)計(jì)表單時(shí),每個(gè)控件都有自己獨(dú)立的ID編號(hào),在寫插件程序代碼的過程中,會(huì)引用到列表控件的ID,所以,盡可能在最初設(shè)計(jì)表單時(shí)將列表控件作為第一控件加入到表單內(nèi)部,使其ID為1。如果不為1,可在表單及流程設(shè)計(jì)完成后,運(yùn)行一次工作流,在流程后臺(tái)數(shù)據(jù)表FLOW_RUN_ DATA中找到列表控件的ID號(hào)。雖然插件程序支持列表控件字段權(quán)限的分別控制,還需要在表單設(shè)計(jì)界面中標(biāo)注說說明以便于操作人參考。另外,很多用戶要求流程實(shí)際打印按照標(biāo)準(zhǔn)A4紙帳打印,我們可以在WORD中設(shè)計(jì)好A4大小的表格存儲(chǔ)為JPG格式,上傳到服務(wù)器的MYOAwebroot images中。打開表單智能設(shè)計(jì)器點(diǎn)擊添加圖片,在源文件那里填寫“/images/圖片全名”。最后,在預(yù)留的空白處添加控件,這樣打印出來的效果就符合用戶要求了。
4.3 用戶參數(shù)與代碼編寫
寫代碼時(shí)應(yīng)該考慮3個(gè)問題
(1)除了在代碼中明確指定列表控件的ID外,還要明確當(dāng)前步驟的執(zhí)行人可編輯的列表控件中相應(yīng)字段的編號(hào)。如:上表中的單價(jià)、市場單價(jià)編號(hào)為6、7.或如中間相隔的如6、9、12等。(因?yàn)槠聊淮笮〉南拗?,一般最多支?5個(gè)字段)
(2)需在代碼設(shè)計(jì)時(shí)重點(diǎn)考慮數(shù)據(jù)讀取與合并,以及數(shù)據(jù)寫回工作流后臺(tái)表部分代碼的設(shè)計(jì)。因此必須先要對(duì)列表控件字段仔細(xì)分析。在合并語句中,千萬注意列與行的處理過程。
(3)注意FLOW_ID、RUN_ID、ITEM_ID的聲明和對(duì)應(yīng)關(guān)系。
5.1 建立流程并設(shè)計(jì)好執(zhí)行權(quán)限、可寫字段或一般條件設(shè)置,在列表視圖中找到對(duì)應(yīng)步驟中基本設(shè)置,點(diǎn)選其它設(shè)置,在插件程序名稱中嵌入相應(yīng)的插件程序一般插件程序都放在服務(wù)器安裝路徑中webroot/ general/workflow/plugin/turn/下。
5.2 在發(fā)起人嵌入的插件代碼大致如下;
已完成列表控件數(shù)據(jù)寫回表的過程
5.3 在需要改寫列表控件字段的步驟中嵌入的插件代碼如下:
本步驟代碼含有回存數(shù)據(jù)表flow_ form_user的部分功能,嵌入代碼后需要驗(yàn)證該步驟的執(zhí)行效果,如果顯示出現(xiàn)問題,多半問題出在上述代碼中的Str_Item_Data的部分。上述插件程序可在需要改寫列表控件字段的步驟中重復(fù)使用。
至此,即可完成列表控件的存儲(chǔ)與按權(quán)限改寫字段的全部能力,既使當(dāng)前步驟的執(zhí)行人錯(cuò)誤修改了其它執(zhí)行人輸入的字段,在實(shí)際組合存儲(chǔ)的過程中也不會(huì)發(fā)生存儲(chǔ)錯(cuò)誤,繼而完成了字段保護(hù)的目的。另外,后臺(tái)回存的表可通過流程再設(shè)計(jì)將列表字段的內(nèi)容進(jìn)行詳細(xì)匯總,亦可以設(shè)計(jì)為數(shù)據(jù)分析報(bào)告,因編輯字段使用數(shù)組預(yù)先定義,故可應(yīng)用于其它流程。
Mastery OA running in the background plug-ins list control data transferred to the background, additional data tables. And list control field managers were written permission of fields.
10.3969/j.issn.1001-8972.2012.08.068
伊宏鑫,出生日期:1966.02.27,籍貫:黑龍江寧安,單位:黑龍江省火電第三工程公司HEILONGJIANG No.3THERMAL POWER CONSTRUCTION CORP,職務(wù):網(wǎng)絡(luò)工程師,職稱:主任工程師,研究方向:網(wǎng)絡(luò)信息技術(shù)、企業(yè)管理。