版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、xx工業(yè)研究院辦公自動化系統(tǒng)設(shè)計方案xxxx年6月目錄第一章 系統(tǒng)總體結(jié)構(gòu)6第二章 系統(tǒng)設(shè)計7 2.1 電子郵件7一. 表單設(shè)計71. 郵件表單(memo)72. 回信表單(reply)83. 轉(zhuǎn)發(fā)表單(wforward)84. 信件郵遞報告表單(nondelivery report)9二. 視圖設(shè)計91. 收件箱($inbox)92. 發(fā)件箱($sent)93. 草稿箱($drafts)104. 垃圾箱(carbage)10 2.2 公文流轉(zhuǎn)11一. 結(jié)構(gòu)設(shè)計11二. 功能設(shè)計11三. 表單設(shè)計121. 公文表單(data)122. 公文附件表單(addattachment)133. 公文正
2、文表單(adddocumentbody)134. 工作流信息表單(workflowinfo)145. 流程節(jié)點表單(event)146. 已辦公文記錄表單(donerecord)167. 用戶角色設(shè)置表單(userruls)178. 搜索表單(searchform)17四. 視圖設(shè)計181. 工作流名稱列表182. 模版事件列表183. 激活事件列表184. 數(shù)據(jù)表單列表185. 公文草稿列表186. 公文附件列表187. 公文正文列表188. 已辦公文列表19五. 工作流流轉(zhuǎn)控制算法設(shè)計191. 功能分析192. 創(chuàng)建過程定義實例和同應(yīng)用數(shù)據(jù)實例綁定203. 維護(hù)流程節(jié)點狀態(tài)信息21六. 工
3、作流流程定義工具設(shè)計281. 類關(guān)系282. 類結(jié)構(gòu)設(shè)計293. 過程定義工具文本輸出格式33七. 格式轉(zhuǎn)化工具設(shè)計33 2.3 公共事務(wù)35一. 總體結(jié)構(gòu)設(shè)計35二. 表單設(shè)計351. 日程安排表單352. 會議安排表單363. 會議記錄表單374. 會議紀(jì)要表單385. 空閑時間查詢表單386. 空閑日期查詢表單397. 會議室管理表單398. 空閑會議室查詢表單399. 會議室空時段查詢表單4010. 來賓接待表單40三. 視圖設(shè)計401. 會議安排視圖412. 會議草稿視圖413. 在審會議視圖414. 議記錄視圖415. 議紀(jì)要視圖416. 日程安排視圖417. 日程草稿視圖418.
4、 在審日程視圖419. 會議室視圖4110. 來賓接待視圖41 2.4 電子討論區(qū)42一. 討論區(qū)功能模塊設(shè)計42二. 討論板塊42三. 用戶筆名注冊43 2.5信息服務(wù)45一. 信息服務(wù)功能模塊設(shè)計45二. 電子布告欄45三. 公共信息查詢461. 員工地址簿472. 個人名片夾473. 列車時刻表484. 航班時刻表495. 郵編及電話區(qū)號506. 公司大事記50 2.6 系統(tǒng)維護(hù)52一. 表單設(shè)計521. 組織機(jī)構(gòu)設(shè)置表單(department)522. 用戶信息注冊表單(userinfo)523. 用戶職務(wù)注冊表單(caste_name)534. 用戶信息列表顯示表單(pagepers
5、ons)535. 用戶密碼設(shè)置表單(password)54二. 視圖設(shè)計541. 組織機(jī)構(gòu)列表(departmentlist)542. 用戶列表(persons)543. 職務(wù)列表(caste_name)544. 用戶權(quán)限列表(limit)54附錄1 xx工業(yè)研究院mis系統(tǒng)設(shè)計55 1 概述55 2 需求分析55一、 科技項目管理55l 項目申報(科委項目、工研院項目)55l 合同管理55l 項目跟蹤55二、 教育培訓(xùn)管理55l 職工教育培訓(xùn)55l 招生管理55三、 科技情報管理55l 科技情報發(fā)布55l 下屬單位需求55四、 申請書編號管理55五、 用戶權(quán)限管理55 3 功能表格56科技項
6、目管理x56教育管理培訓(xùn)j56科技情報管理q56 4 功能模塊設(shè)計57一.功能模塊57l 科技項目管理57l 教育培訓(xùn)管理58l 科技情報管理58二. 功能說明58l 科技項目管理58l 教育培訓(xùn)管理59l 科技情報信息管理59 5 數(shù)據(jù)表格設(shè)計59一. 科技項目及合同管理59l 科技項目申請表59l 申請一覽表61l 工研院項目執(zhí)行情況報告書61二.教育管理培訓(xùn)62三.科技情報管理62l 科技情報發(fā)布62l 下屬單位需求63附錄2 網(wǎng)站設(shè)計64 1 概述64 2 功能設(shè)計64一. 情況介紹64二. 需求分析64三. 功能模塊及實現(xiàn)65四. 數(shù)據(jù)接口66五. 網(wǎng)站目錄結(jié)構(gòu)67 3 數(shù)據(jù)庫設(shè)計6
7、7xx工業(yè)研究院辦公自動化系統(tǒng)設(shè)計第一章 系統(tǒng)總體結(jié)構(gòu)xx工業(yè)研究院辦公自動化系統(tǒng)基于lotus domino / notes平臺開發(fā),系統(tǒng)的總體結(jié)構(gòu)如下圖所示:圖1-1 xx工業(yè)研究院辦公自動化系統(tǒng)總體結(jié)構(gòu)第二章 系統(tǒng)設(shè)計 2.1 電子郵件 電子郵件模塊的結(jié)構(gòu)如下圖所示。圖2-1-1 電子郵件模塊一. 表單設(shè)計1. 郵件表單(memo)表2-1-1 郵件表單設(shè)計數(shù)據(jù)域類型說明sendto文本域收件人地址copyto文本域郵件抄送地址blindcopyto文本域郵件密送地址websubject文本域郵件主題text文本域(允許多行)郵件正文haveread文本域郵件文件已讀標(biāo)志操作說明發(fā)送發(fā)送
8、郵件保存為草稿將郵件保存為草稿回復(fù)回復(fù)郵件轉(zhuǎn)發(fā)轉(zhuǎn)發(fā)郵件地址簿打開地址簿表單編輯編輯郵件刪除刪除郵件2. 回信表單(reply)表2-1-2 回信表單設(shè)計數(shù)據(jù)域類型說明sendto文本域收件人地址copyto文本域郵件抄送地址blindcopyto文本域郵件密送地址websubject文本域郵件主題text文本域(允許多行)郵件正文haveread文本域郵件文件已讀標(biāo)志操作說明發(fā)送發(fā)送郵件保存為草稿將郵件保存為草稿回復(fù)回復(fù)郵件轉(zhuǎn)發(fā)轉(zhuǎn)發(fā)郵件地址簿打開地址簿表單編輯編輯郵件刪除刪除郵件3. 轉(zhuǎn)發(fā)表單(wforward)表2-1-3 轉(zhuǎn)發(fā)表單設(shè)計數(shù)據(jù)域類型說明sendto文本域收件人地址copyto文
9、本域郵件抄送地址blindcopyto文本域郵件密送地址websubject文本域郵件主題text文本域(允許多行)郵件正文haveread文本域郵件文件已讀標(biāo)志操作說明發(fā)送發(fā)送郵件保存為草稿將郵件保存為草稿回復(fù)回復(fù)郵件轉(zhuǎn)發(fā)轉(zhuǎn)發(fā)郵件地址簿打開地址簿表單編輯編輯郵件刪除刪除郵件4. 信件郵遞報告表單(nondelivery report)表2-1-4 信件郵遞報告表單設(shè)計數(shù)據(jù)域類型說明originalsubject文本域被郵遞的信件名稱intendedrecipient文本域被郵遞信件的收件人地址failurereason文本域郵件為郵遞到目的地原因sendto文本域被郵遞郵件文件中指定的收件地
10、址copyto文本域被郵遞郵件文件中指定的抄送地址blindcopyto文本域被郵遞郵件文件中指定的密送地址subject文本域被郵遞郵件文件的主題body文本域(允許多行)被郵遞郵件文件的內(nèi)容haveread文本域郵件文件已讀標(biāo)志操作說明刪除刪除郵件二. 視圖設(shè)計1. 收件箱($inbox)收件箱通過文件夾實現(xiàn),所有接收到郵件文件均由系統(tǒng)自動放入收件箱中。2. 發(fā)件箱($sent)用于所發(fā)送的郵件均自動保存在發(fā)件箱中。文檔選擇條件為:select delivereddate= & posteddate!= & !(ismember(s;excludefromview) & viewtag!=
11、delete3. 草稿箱($drafts)所有保存為草稿的郵件均顯示在草稿箱中。文檔選擇條件為:select posteddate = & $messagetype = & isnotmember(d; excludefromview) & ismailstationery != 1& viewtag=istrash4. 垃圾箱(carbage) 所有被刪除的郵件均保存在此視圖中。在此視圖中再次刪除的話,則郵件文件被真正刪除。 文檔選擇條件為:select (form=memo | form=reply | form=wforward) & deleted=true 2.2 公文流轉(zhuǎn)一. 結(jié)構(gòu)
12、設(shè)計xx工業(yè)研究院oa系統(tǒng)公文流轉(zhuǎn)模塊總體結(jié)構(gòu)如下圖所示。圖2-2-1 公文流轉(zhuǎn)模塊結(jié)構(gòu)設(shè)計二. 功能設(shè)計公文流轉(zhuǎn)模塊提供的具體功能如下圖所示:圖2-2-2 公文流轉(zhuǎn)模塊功能設(shè)計三. 表單設(shè)計1. 公文表單(data)公文表單用于記錄公文的相關(guān)信息。具體設(shè)計如下:表2-2-1 公文表單設(shè)計數(shù)據(jù)域類型說明gwlx列表框公文類型djbm列表框公文的登記部門djsj文本域公文的登記時間subject文本域公文標(biāo)題ngr文本域公文起草人姓名gwhj列表框公文緩急信息列表ztcb文本域公文的主題詞zbdw文本域主辦單位名稱zcdw文本域主送單位名稱csdw文本域抄送單位名稱cbdw文本域抄報單位名稱in
13、fo文本域(允許多行)公文正文內(nèi)容data_number文本域公文的編號selectworkflow列表框顯示過程定義模版列表personanswer文本域顯示處理人的批復(fù)意見data_personlist文本域允許處理本公文的用戶列表start文本域公文是否為首次提交data_current_editor文本域記錄當(dāng)前編輯公文的用戶姓名cuiban文本域是否存在公文催辦通知操作說明提交流轉(zhuǎn)提交公文進(jìn)入流轉(zhuǎn)過程暫存將公文保存為草稿簽收處理人打開公文進(jìn)行編輯編輯公文作者編輯公文刪除刪除公文催辦發(fā)出公文催辦通知說明:(1) subject、info等用于記錄公文的內(nèi)容信息,公文的內(nèi)容信息包括公文主
14、題、公文編號、公文內(nèi)容、公文密級、公文緩急等。(2) ngr、djsj分別記錄公文文檔的創(chuàng)建人和創(chuàng)建時間,工作流的管理與監(jiān)控功能會用到這些信息。(3) selectworkflow是列表框,用于顯示所有可供使用的過程定義模版。在公文的創(chuàng)建階段,用戶從列表中選擇要使用的流程;在公文進(jìn)入流轉(zhuǎn)過程以后,由工作流引擎根據(jù)所選擇的流程,自動生成過程定義實例,之后實現(xiàn)公文文檔同過程定義實例的綁定操作。(4) data_personlist域用于記錄所有對本文檔具有處理權(quán)限的用戶的用戶名列表,只有在此列表中列出的用戶才能夠?qū)倪M(jìn)行處理。其取值由工作流引擎自動填寫。2. 公文附件表單(addattachme
15、nt)公文附件表單用于存儲某一公文所包含的附件文件,一個公文可以包含多個附件,每個附件對應(yīng)一個公文附件表單。表2-2-2 公文附件表單設(shè)計數(shù)據(jù)域類型說明attachment_info文本域?qū)Ω郊暮喴f明file upload控件上載文件控件parentid文本域此附件表單所從屬的公文表單idattachment_name文本域附件文件名attachment_size文本域附件文件大小操作說明保存附件保存公文附件表單刪除附件刪除公文附件表單關(guān)閉窗口關(guān)閉公文附件上載窗口3. 公文正文表單(adddocumentbody)公文正文表單用于存儲某一公文所包含的正文文件,一個公文可以包含多個正文文件,
16、每個正文文件對應(yīng)一個公文正文表單。表2-2-3 公文正文表單設(shè)計數(shù)據(jù)域類型說明attachment_info文本域?qū)φ奈募暮喴f明file upload控件上載文件控件parentid文本域此公文正文表單所從屬的公文表單idattachment_name文本域附件文件名attachment_size文本域附件文件大小操作說明保存正文保存公文正文表單刪除正文刪除公文正文表單關(guān)閉窗口關(guān)閉公文正文上載窗口4. 工作流信息表單(workflowinfo)工作流信息表單用于存儲工作流程模版的基本屬性信息。在流程信息表單中定義的重要數(shù)據(jù)域如下:表2-2-4 工作流信息表單數(shù)據(jù)域類型說明workflow
17、_name文本域流程名稱workflow_type列表框流程類型,可選值為“預(yù)定義流程”和“自定義流程”workflow_author文本域此流程創(chuàng)建人姓名workflow_created文本域此流程創(chuàng)建時間workflow_body文本域此流程功能簡要說明操作說明修改編輯工作流信息表單保存保存工作流信息表單刪除刪除工作流信息表單5. 流程節(jié)點表單(event)流程節(jié)點表單用于記錄過程定義中流程節(jié)點所包含的信息。過程定義中的每個流程節(jié)點都與domino數(shù)據(jù)庫中的一個流程節(jié)點文檔對應(yīng)。表2-2-5 流程節(jié)點表單設(shè)計數(shù)據(jù)域類型說明workflow_id文本域節(jié)點所從屬的工作流信息文檔iddata_
18、id文本域與此過程定義所綁定的應(yīng)用數(shù)據(jù)文檔idevent_id文本域流程節(jié)點文檔id,在節(jié)點文檔生成后自動填寫event_name文本域流程節(jié)點功能描述名稱,如初審、批閱等。event_pre_names列表框此流程節(jié)點的全部前趨節(jié)點列表event_personlist文本域此節(jié)點允許處理人名稱event_personlist_type列表域指定處理人類型:“個人”、“交色”sxqm復(fù)選框是否使用手寫簽名功能event_body文本框(允許多值)此節(jié)點功能簡要說明event_pre_name文本域(允許多值)以節(jié)點名稱表示的前驅(qū)節(jié)點列表event_pre_id文本域(允許多值)以節(jié)點id表示的
19、前驅(qū)節(jié)點列表evemt_next_name文本域(允許多值)以節(jié)點名稱表示的后繼節(jié)點列表event_next_id文本域(允許多值)以節(jié)點id表示的后繼節(jié)點列表event_status文本域流程節(jié)點狀態(tài)event_period文本域流程節(jié)點文檔狀態(tài)event_period文本域用于區(qū)分模版和實例,可取值為“模版”、“實例”selectpre復(fù)選框此節(jié)點是否為選擇性收點selectnext復(fù)選框此節(jié)點是否為選擇性發(fā)點selectnode文本域如果此節(jié)點是選擇性發(fā)點,則此域用于記錄所選定的后繼節(jié)點名稱操作說明修改編輯流程節(jié)點表單保存保存流程節(jié)點表單刪除刪除流程節(jié)點表單說明:(1) 流程節(jié)點定義中的
20、att(事件屬性集合)通過數(shù)據(jù)域workflow_id、data_id、event_id、event_name、evnent_personlist、sxqm等表達(dá)出來。event_pre_name、event_pre_id為允許多值的文本域,以節(jié)點名稱和節(jié)點文檔id兩種方式表達(dá)此節(jié)點的前驅(qū)節(jié)點集合pre;event_next_name、event_next_id則以節(jié)點名稱和節(jié)點文檔id兩種方式表達(dá)此節(jié)點的后繼節(jié)點集合next。event_status表達(dá)節(jié)點狀態(tài)信息。(2) workflow_id數(shù)據(jù)域用于標(biāo)識此流程節(jié)點文檔所從屬的工作流程。屬于同一工作流程的流程節(jié)點文檔具有相同的workf
21、low_id。(3) data_id數(shù)據(jù)域用于實現(xiàn)應(yīng)用數(shù)據(jù)實例同過程定義實例的一一對應(yīng)。data_id的值為公文表單的文檔實例的文檔id,由工作流管理系統(tǒng)自動填寫。組成一個過程定義實例的所有流程節(jié)點文檔具有相同的data_id值。(4) event_status標(biāo)識流程節(jié)點的狀態(tài)信息,由工作流引擎自動設(shè)置。(5) 構(gòu)成過程定義的流程節(jié)點文檔在工作流進(jìn)入運(yùn)行期之前,存儲在過程定義模版庫中;在運(yùn)行期,則存儲到過程定義實例庫。因此,在流程節(jié)點表單中使用event_period數(shù)據(jù)域來標(biāo)識過程定義的狀態(tài)。屬于同一過程定義的節(jié)點文檔的event_period域的值是相同的。其可能取值為“模版”和“實例”
22、。(6) selectpre數(shù)據(jù)域用于標(biāo)識此節(jié)點是否為選擇性收點。在工作流實例運(yùn)行期間,工作流引擎需要根據(jù)此數(shù)據(jù)域的取值選擇不同的啟動條件構(gòu)造算法。(7) selectnext數(shù)據(jù)域用于表示此節(jié)點是否為選擇性發(fā)點。在工作流實例運(yùn)行期間,工作流引擎需要根據(jù)此數(shù)據(jù)域的取值選擇不同的完成條件構(gòu)造算法。節(jié)點所選定的后繼節(jié)點的名稱保存在selectnode數(shù)據(jù)域中。6. 已辦公文記錄表單(donerecord)已辦公文記錄表單用于記錄用戶已經(jīng)處理完成的公文的相關(guān)信息,以備日后查閱。表2-2-6 已辦公文記錄表單設(shè)計數(shù)據(jù)域類型說明subject文本域公文標(biāo)題ngr文本域記錄公文的擬稿人姓名sdsj文本域收
23、到此公文的時間bjsj文本域完成處理的時間pyyj文本域用戶的批閱意見操作說明刪除刪除已辦公文記錄表單7. 用戶角色設(shè)置表單(userruls)用戶角色設(shè)置表單用于記錄用戶同其職務(wù)的對應(yīng)關(guān)系。表2-2-7 用戶角色設(shè)置表單設(shè)計數(shù)據(jù)域類型說明rulname文本域角色名稱sendto文本域人員名稱zhineng文本域角色職能說明操作說明修改編輯用戶角色設(shè)置表單保存保存用戶角色設(shè)置表單刪除刪除用戶角色設(shè)置表單8. 搜索表單(searchform)搜索表單用于輸入文檔檢索條件。表2-2-8 搜索表單設(shè)計數(shù)據(jù)域類型說明search_viewname列表框選擇要檢索的視圖search_info文本域人員名
24、稱search_type文本域角色職能說明html文本域文檔檢索結(jié)果操作說明檢索文檔進(jìn)行檢索操作四. 視圖設(shè)計1. 工作流名稱列表 用于顯示數(shù)據(jù)庫中所有工作流信息文檔。 文檔選擇條件: select form=workflowinfo2. 模版事件列表用于顯示所有具有“模版”屬性的流程節(jié)點文檔。文檔選擇條件如下: select (form = 流程節(jié)點) & (event_period=模版) 3. 激活事件列表用于顯示所有具有“激活”屬性的流程節(jié)點文檔。文檔選擇條件如下:select (form = 流程節(jié)點) & (event_period=激活) 4. 數(shù)據(jù)表單列表用于顯示所有公文文檔。
25、文檔選擇條件如下:select form=數(shù)據(jù)表單 & start=0 5. 公文草稿列表用于顯示所有保存為草稿的公文文檔。文檔選擇條件如下: select form=數(shù)據(jù)表單 & start=1 6. 公文附件列表用于顯示所有公文附件文檔。文檔選擇條件如下:select form=addattachment7. 公文正文列表用于顯示所有公文正文文檔。文檔選擇條件如下:select form=adddocumentbody8. 已辦公文列表用于顯示所有已辦公文記錄文檔。文檔選擇條件如下:select form=donerecord五. 工作流流轉(zhuǎn)控制算法設(shè)計1. 功能分析 將工作流引擎的功能細(xì)
26、化為以下幾個子功能: (1) 創(chuàng)建過程定義實例 在工作流進(jìn)入運(yùn)行期以前,過程定義以模版的形式保存在過程定義模版庫中。工作流進(jìn)入運(yùn)行期,工作流引擎必須根據(jù)用戶所選定的過程定義模版自動生成過程定義實例,并存入負(fù)載最低的過程定義實例子庫。 (2) 完成應(yīng)用數(shù)據(jù)實例和過程定義實例的綁定操作 在過程定義實例生成以后,工作流引擎必須將其同對應(yīng)的應(yīng)用數(shù)據(jù)實例綁定,實現(xiàn)一一對應(yīng),從而完成數(shù)據(jù)單元實例的組建。 (3) 在工作流實例運(yùn)行期間,對流程節(jié)點的狀態(tài)信息進(jìn)行維護(hù) 在基于流程節(jié)點單一設(shè)計元素的過程定義模型中,定義了流程節(jié)點狀態(tài)信息來描述節(jié)點對應(yīng)用數(shù)據(jù)的處理狀態(tài)。而整個工作流實例的運(yùn)行狀態(tài)會通過流程節(jié)點的狀態(tài)
27、表達(dá)出來。工作流引擎需要根據(jù)流程節(jié)點的啟動條件和完成條件來對節(jié)點的狀態(tài)進(jìn)行設(shè)置,從而模擬出數(shù)據(jù)流動的效果。這是工作流引擎的核心功能。 (4) 對應(yīng)用數(shù)據(jù)文檔的訪問控制列表進(jìn)行維護(hù) 流程節(jié)點狀態(tài)信息的變化必須轉(zhuǎn)化為用戶對應(yīng)用數(shù)據(jù)處理權(quán)限的變化。某一流程節(jié)點狀態(tài)信息變?yōu)閍ctive,實際意味著在此節(jié)點定義中指定的處理人獲得了對應(yīng)用數(shù)據(jù)文檔的處理權(quán);狀態(tài)信息為inactive或done則表示指定的處理人沒有處理文檔的權(quán)限。因此,工作流引擎需要根據(jù)流程節(jié)點狀態(tài)信息的變化,對應(yīng)用數(shù)據(jù)表單中的用戶訪問控制列表進(jìn)行修改,從而實現(xiàn)節(jié)點狀態(tài)信息和用戶對文檔處理權(quán)限的一致變化。 (5) 工作流實例運(yùn)行期間,給予用
28、戶對過程定義實例的動態(tài)修改的能力 由于實際業(yè)務(wù)處理過程往往表現(xiàn)出一定的隨意性,因此,工作流引擎應(yīng)該向用戶提供在工作流實例運(yùn)行期間,對過程定義實例的修改能力,使用戶可以根據(jù)文檔處理的需要,對預(yù)定義的流程進(jìn)行臨時性的修改。這種動態(tài)修改流程的能力,可以大大加強(qiáng)工作流系統(tǒng)的靈活性,使工作流系統(tǒng)更加滿足用戶的實際需求。 下圖表示了當(dāng)用戶完成應(yīng)用數(shù)據(jù)文檔的處理,將文檔保存提交以后,工作流引擎處理數(shù)據(jù)的過程:圖2-2-3 工作流引擎處理數(shù)據(jù)流程2. 創(chuàng)建過程定義實例和同應(yīng)用數(shù)據(jù)實例綁定在流程節(jié)點表單(event)中定義了數(shù)據(jù)域event_period來區(qū)分屬于過程定義模版庫的節(jié)點文檔和過程定義實例庫的節(jié)點文
29、檔;而data_id域用于記錄對應(yīng)應(yīng)用數(shù)據(jù)文檔的文檔id信息。工作流引擎通過四個步驟完成過程定義實例的創(chuàng)建和同應(yīng)用數(shù)據(jù)文檔的綁定操作。(1) 流程節(jié)點文檔復(fù)制將過程定義模版庫中屬于相應(yīng)過程定義的流程節(jié)點文檔復(fù)制,生成一個新的流程節(jié)點文檔。此新節(jié)點文檔的數(shù)據(jù)域的值同其原型完全相同。關(guān)鍵代碼如下: 在數(shù)據(jù)庫中創(chuàng)建新文擋 set newnode = new notesdocument( db ) 將模版庫中的節(jié)點文檔node的全部數(shù)據(jù)域復(fù)制到新文檔call node.copyallitems( newnode, true ) (2) 置event_period域?qū)⑿陆鞒坦?jié)點文檔中event_per
30、iod數(shù)據(jù)域的值由“模版”改為“實例”。關(guān)鍵代碼如下:newnode.event_period = “實例”(3) 同應(yīng)用數(shù)據(jù)實例綁定將應(yīng)用數(shù)據(jù)文檔如公文文檔的文檔id值置入新建流程節(jié)點文檔的data_id域,從而完成綁定操作。關(guān)鍵代碼如下: data為應(yīng)用數(shù)據(jù)文檔 newnode.data_id = data.universalid3. 維護(hù)流程節(jié)點狀態(tài)信息a) 原理流程假設(shè)某節(jié)點node完成了應(yīng)用數(shù)據(jù)文檔處理,接下來工作流引擎會通過設(shè)置流程節(jié)點的狀態(tài)信息來更新工作流實例的運(yùn)行狀態(tài)。工作流實例運(yùn)行狀態(tài)的更新過程可以用下圖所示的原理流程表達(dá):圖2-2-4 狀態(tài)更新原理流程從狀態(tài)更新的原理流程中
31、可以看出,狀態(tài)更新過程由節(jié)點node完成對應(yīng)用數(shù)據(jù)文檔的處理觸發(fā),之后工作流引擎分三步來修改節(jié)點狀態(tài):a. 設(shè)置節(jié)點node狀態(tài)為done當(dāng)流程節(jié)點處理完成后,狀態(tài)有active變?yōu)閐one。 b. 激活新流程節(jié)點流程節(jié)點的啟動條件決定了節(jié)點何時被激活,何時獲得處理權(quán)限。在此步驟中,工作流引擎通過構(gòu)造各個流程節(jié)點的啟動條件,判斷其值來完成節(jié)點處理權(quán)限的傳遞。因為流程節(jié)點的啟動條件可以通過其所有前驅(qū)節(jié)點的狀態(tài)信息和流轉(zhuǎn)順序信息的邏輯組合表達(dá)出來,所以在節(jié)點node完成處理后,工作流引擎沒有必要計算構(gòu)成過程定義實例的所有節(jié)點的啟動條件,而只需要計算節(jié)點node的所有后繼節(jié)點的啟動條件即可。c. 決
32、定哪些節(jié)點的狀態(tài)有done變?yōu)閕nactive流程節(jié)點狀態(tài)由done轉(zhuǎn)化為inactive的必要性在過程定義模型部分已經(jīng)作了說明,節(jié)點的完成條件規(guī)定了這一狀態(tài)轉(zhuǎn)化的條件。在某節(jié)點完成處理后,工作流引擎通過計算其它節(jié)點的完成條件,來確定哪些狀態(tài)為done的節(jié)點可以將狀態(tài)設(shè)置為inactive。b) 步驟1的具體實現(xiàn)步驟1的目的是在節(jié)點node完成對應(yīng)用數(shù)據(jù)文檔的處理以后,將節(jié)點狀態(tài)設(shè)置為done。關(guān)鍵代碼如下: node.event_status = “done”c) 后繼節(jié)點狀態(tài)設(shè)置算法步驟2的目的是設(shè)置節(jié)點node的后繼節(jié)點的狀態(tài),節(jié)點node的類型以及其后繼節(jié)點的類型決定了步驟2有不同的實
33、現(xiàn)方式。設(shè)置node后繼節(jié)點狀態(tài)的過程可以用下圖表達(dá): 圖2-2-5 后繼節(jié)點狀態(tài)設(shè)置算法從圖中可以看出,將設(shè)置算法依據(jù)節(jié)點node的分類分為兩種情況:a. 節(jié)點node為唯一后繼節(jié)點或者發(fā)點此種情況下,節(jié)點node需要遍歷其所有的后繼節(jié)點,計算每個后繼續(xù)節(jié)點的啟動條件的取值。b. 節(jié)點node為選擇性發(fā)點當(dāng)節(jié)點node為選擇性發(fā)點時,根據(jù)選擇性發(fā)點的定義,只有一個后繼節(jié)點可以獲得處理權(quán),因此不需要遍歷其所有的后繼節(jié)點,只需計算其所選定的后繼節(jié)點的啟動條件即可。根據(jù)后繼節(jié)點的類型,計算啟動條件分為兩種情況(狀態(tài)設(shè)置算法1和狀態(tài)設(shè)置算法2):a. 后繼節(jié)點為收點或唯一前驅(qū)節(jié)點當(dāng)節(jié)點node的某個
34、后繼節(jié)點next為收點或唯一前驅(qū)收點時,在遍歷next的所有前驅(qū)節(jié)點時,對每個前驅(qū)節(jié)點計算判斷式(select(prei) ctn next) and (status(prei) = “done”) 的值,只要有一個為false,則next的啟動條件必然不成立,即可以終止遍歷循環(huán)。判斷next的啟動條件值的關(guān)鍵代碼如下:dim flag as booleanflag = false 遍歷next的全部前驅(qū)節(jié)點forall n in next.event_pre_id set prenode = db.getdocumentbyunid(n)if not(select(prenode,next)
35、 = true and prenode.event_status(0) = “done”) then select()函數(shù)用于判斷prenode所選定的后繼節(jié)點列表中是否包括next flag = true exit forall end ifend forall 設(shè)置后繼節(jié)點next的狀態(tài)if flag = true then 節(jié)點next的啟動條件不滿足,狀態(tài)不變else 節(jié)點next的啟動條件滿足,將狀態(tài)變?yōu)閍ctive next.event_status = “active” next.save true,true,trueend ifb. 后繼節(jié)點為選擇性收點當(dāng)節(jié)點node的某個后繼
36、節(jié)點next為選擇性收點時,不需要遍歷next的所有前驅(qū)節(jié)點,而只需要判斷下式對節(jié)點node的取值即可。(select(node) ctn next) and (status(nodei) = “done”) 關(guān)鍵代碼如下:if (select(node,next) = true and note.event_status(0) = “done”) thenselect()函數(shù)用于判斷node所選定的后繼節(jié)點列表中是否包括next next.event_status = “active” next.save true,true,trueelse next狀態(tài)保持不變end ifd) 設(shè)置完成條
37、件得到滿足的流程節(jié)點狀態(tài)當(dāng)完成對流程節(jié)點node的后繼節(jié)點狀態(tài)設(shè)置以后,其后繼節(jié)點狀態(tài)的變化可能使某些節(jié)點的完成條件得到滿足,從而完成流程節(jié)點狀態(tài)信息由done向inactive的轉(zhuǎn)化。在判斷流程節(jié)點的完成條件時,沒有必要計算組成過程定義實例的所有流程節(jié)點的完成條件,只需要檢查節(jié)點node的獲得了處理權(quán)的后繼節(jié)點的所有前驅(qū)節(jié)點的完成條件即可。判斷完成條件的處理流程如圖2-2-6所示。從流程中可以看到,根據(jù)next的前驅(qū)節(jié)點類型,構(gòu)造next的前驅(qū)節(jié)點的完成條件有兩種方式(完成條件判斷算法1和完成條件判斷算法2):(2) next的前驅(qū)節(jié)點為唯一后繼節(jié)點或者發(fā)點關(guān)鍵代碼如下:dim flag a
38、s booleanflag = false 假設(shè)prenode為next某個前驅(qū)節(jié)點,nextnode為prenode的某個后繼節(jié)點forall x in prenode.event_next_nameset nextnode=db.getdocumentbyunid(getidbyname(y)if nextnode.event_status(0) “active” thenflag=trueend ifend forallif flag=true then prenode的完成條件不滿足,保持狀態(tài)不變else prenode.event_status= “inactive” prenode
39、.save true,true,trueend if(2) next的前驅(qū)節(jié)點為選擇性發(fā)點關(guān)鍵代碼如下: 假設(shè)prenode為next的某個具有選擇性發(fā)點類型的前驅(qū)節(jié)點,nextnode為prenode所選定的獲得處理權(quán)的唯一后繼節(jié)點set nextnode=db.getdocumentbyunid(getidbyname(prenode. selectevent(0)if nextnode.event_status(0)= “active” thenprenode的完成條件得到滿足 prenode.event_system= “inactive” prenode.save true,true
40、,trueelse prenode的完成條件不成立,狀態(tài)保持不變end if圖2-2-6 流程節(jié)點完成條件判斷算法e) 設(shè)置應(yīng)用數(shù)據(jù)文檔的訪問控制列表公文表單中的data_personlist數(shù)據(jù)域用于存儲允許訪問列表,只有列在此列表中的用戶才具有對文檔的處理權(quán)限。通過查找過程定義實例中所有狀態(tài)為active的流程節(jié)點,將它們在event_personlist數(shù)據(jù)域中所指定的處理人姓名添加到應(yīng)用數(shù)據(jù)文檔的data_personlist數(shù)據(jù)域,來完成節(jié)點狀態(tài)和應(yīng)用數(shù)據(jù)文檔處理權(quán)限的同步變化。 關(guān)鍵代碼如下: 假設(shè)過程定義實例存儲在過程定義實例視圖view中,data為應(yīng)用數(shù)據(jù)文檔 set ite
41、m=data.getfirstitem(“data_personlist”)set node=view.getfirstdocumentwhile not(node is nothing) 判斷與此應(yīng)用數(shù)據(jù)文檔相綁定的流程節(jié)點的狀態(tài)if (node.data_id(0)=data.universalid) and (node.event_status(0)= “active”)then找到了具有處理權(quán)的流程節(jié)點,將其指定的處理人加入到應(yīng)用數(shù)據(jù)文檔的data_personlist數(shù)據(jù)域中 call item.appendtotextlist(node.event_personlist(0) da
42、ta.save true,true,true end if set node=view.getnextdocument(node)wend六. 工作流流程定義工具設(shè)計流程定義工具的功能可以細(xì)分為:(1) 向用戶提供定義工作流的操作界面(2) 根據(jù)用戶的輸入自動生成以文本形式表達(dá)的工作流抽象描述(3) 將以文本形式表達(dá)的工作流抽象描述發(fā)送給格式轉(zhuǎn)化工具組件1. 類關(guān)系將流程節(jié)點抽象為流程節(jié)點類(node),同時,將流程節(jié)點定義中的事件屬性集合、前驅(qū)節(jié)點集合、后繼節(jié)點集合均做對象化處理,由此產(chǎn)生屬性信息(attibute)、前驅(qū)節(jié)點信息(prenodes)、后繼節(jié)點信息(nextnodes)三個類
43、。這三個類同流程節(jié)點類構(gòu)成復(fù)合聚合的關(guān)系,如下圖所示。圖2-2-7 復(fù)合聚合型的類關(guān)系2. 類結(jié)構(gòu)設(shè)計(1) 流程節(jié)點類(node)class node private string node_id ; private attibute att ; private prenodes p ; private nextnodes n ; private string type ; privatestring status ; public string getid(); public void setid(string s); public attibute getatt() ; public p
44、renodes getp(); public nextnodes getn(); public string getstatus(); public void setstatus(string s); 實際業(yè)務(wù)處理過程最終會抽象表達(dá)為一系列流程節(jié)點類實例的集合。對流程節(jié)點類的定義完全遵循流程節(jié)點的定義。類定義中成員變量和方法的含義在下表中加以說明:表2-2-9 流程節(jié)點類設(shè)計成員變量含義node_id流程節(jié)點的唯一標(biāo)識符att對流程節(jié)點屬性信息類(attribute)的引用p對流程節(jié)點前驅(qū)節(jié)點信息類(prenodes)的引用n對流程節(jié)點后繼節(jié)點信息類(nextnodes)的引用type流程節(jié)點
45、的類型方法作用getid()取得流程節(jié)點唯一標(biāo)識setid()設(shè)置流程節(jié)點唯一標(biāo)識getatt()取得節(jié)點狀態(tài)信息類的指針getp()取得節(jié)點前驅(qū)節(jié)點信息類的指針gern()取得節(jié)點后繼節(jié)點信息類的指針gettype()取得節(jié)點類型信息sertype()設(shè)置流程節(jié)點類型信息(2) 屬性信息類(attibute) class attibute private string node_name ; private string node_person; private boolean node_reply; private boolean node_sign; private string nod
46、e_body; public string getname(); public void setname(string s); public string getperson(); public void setperson(string s); public string getreply(); public void setreply(boolean b); public string getsign(); public void setsign(boolean b); public string getbody(); public void setbody(stirng s); 屬性信息
47、類用于表達(dá)流程節(jié)點所代表的實際業(yè)務(wù)步驟的重要屬性信息。屬性信息類定義中成員變量和方法的含義在下表中加以說明:表2-2-10 屬性信息類設(shè)計成員變量含義node_name流程節(jié)點標(biāo)識名稱node_person流程步驟的處理人。當(dāng)節(jié)點獲得了處理權(quán)以后,只有在此變量中列出的人員才能夠?qū)?yīng)用數(shù)據(jù)進(jìn)行處理node_reply節(jié)點完成處理以后,是否向工作流發(fā)起人發(fā)送已辦通知,取值為false 或 truenode_sign是否在節(jié)點完成處理時,使用手寫簽名認(rèn)證功能,取值為false 或 truenode_body對節(jié)點所代表的實際業(yè)務(wù)步驟的功能的說明方法作用getxxxx()取得相應(yīng)屬性值setxxxx()設(shè)置相應(yīng)屬性值(3) 前驅(qū)節(jié)點信息類(prenodes) class prenodes arraylist prelist ;public void addpre();public object getpre(string s)public int getacount();public void emptylist(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 職業(yè)理想 課件
- 2024年湖南省長沙市中考生物真題卷及答案解析
- 愛迪生課件兒童
- 西京學(xué)院《微電網(wǎng)技術(shù)及應(yīng)用》2022-2023學(xué)年期末試卷
- 北師大小學(xué)數(shù)學(xué)六年級上《分?jǐn)?shù)混合運(yùn)算(三)》教程
- 中等職業(yè)學(xué)校教師教育教學(xué)水平能力測試成績單附件2
- 西京學(xué)院《電工電子學(xué)》2022-2023學(xué)年期末試卷
- 西華師范大學(xué)《中學(xué)歷史課程標(biāo)準(zhǔn)解讀與教材分析》2022-2023學(xué)年第一學(xué)期期末試卷
- 如何提高 課件
- 西華師范大學(xué)《計算思維》2021-2022學(xué)年期末試卷
- ???023綜合安防工程師認(rèn)證試題答案HCA
- 跌倒墜床PDCA循環(huán)管理降低住院患者跌倒墜床發(fā)生率
- 【校園快遞管理系統(tǒng)的設(shè)計與實現(xiàn)(論文)12000字】
- 檔案工作管理情況自查表
- 豎向設(shè)計圖課件
- WinCCflexible的傳送操作HMI設(shè)備設(shè)置入門
- 三寶屯污水處理廠三期改擴(kuò)建工程項目環(huán)境影響報告
- 大學(xué)生創(chuàng)新創(chuàng)業(yè)教育智慧樹知到答案章節(jié)測試2023年湖南鐵路科技職業(yè)技術(shù)學(xué)院
- 機(jī)電一體化說專業(yè)比賽
- (國開電大)專科《市場營銷學(xué)》網(wǎng)上形考任務(wù)4試題及答案
- 2023年??谑惺聵I(yè)單位招聘考試《公共基礎(chǔ)知識》題庫及答案解析
評論
0/150
提交評論