JTangFlowJ應用服務器程序員手冊_第1頁
JTangFlowJ應用服務器程序員手冊_第2頁
JTangFlowJ應用服務器程序員手冊_第3頁
JTangFlowJ應用服務器程序員手冊_第4頁
JTangFlowJ應用服務器程序員手冊_第5頁
已閱讀5頁,還剩64頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 jtangflow-s v3.0程序員手冊浙江省杭州市東部軟件園a座1212室浙江大學中間件工程技術中心修訂記錄日期修訂版本描述作者2007-05-161.00初稿完成阮凌波、吳斌、黃頌博67jtang應用服務器程序員手冊目錄1. 概述31.1 文檔概覽31.2 文檔受眾31.3 相關文檔32. 系統簡介32.1 系統基本概念32.2 系統體系結構42.3 系統組成部分52.3.1 流程定義工具52.3.2 工作流引擎52.4 系統功能82.4.1 業務流程建模功能82.4.2 流程執行和監控功能92.5 系統運行環境92.6 系統性能92.7 系統特色102.7.1 規范化和標準化102.

2、7.2 完整的系統部件102.7.3 靈活的流程定義102.7.4 豐富的應用編程接口102.7.5 方便的第三方組織數據的重用方案102.7.6 跨語言的工作流二次開發113. 基于jtangflow的接口開發工作流任務管理器113.1 工作流任務管理器功能框架113.2 登錄模塊設計123.3 任務列表模塊的開發(主要介紹allworkitem.jsp)123.4 任務執行模塊的開發133.4.1 任務執行模塊功能框架133.4.2 啟動新流程的功能開發143.4.3 執行任務的功能開發(主要介紹doworkitem.jsp)153.4.4 動態設置任務的功能開發173.4.5 任務轉發對

3、象的選取的功能開發(未做)183.4.6 任務轉發的功能開發(未做)193.5 用戶應用頁面開發193.5.1 獲取應用數據193.5.2 用戶頁面內容203.5.3 回傳數據203.6 流程監控模塊的開發(缺)203.7 消息發送的功能開發(缺)203.7.1 獲取當前系統消息列表的功能開發204. 附錄204.1 工作流接口wapi大全204.1.1 全局接口 globalapi(ejb接口) jtangflowfactory(ejb接口) transfer(ejb接口)284.1.2 實例接口2 packageinst

4、ance(ejb接口)2 processinstance(ejb接口)3 actinstance(ejb接口)3 workitem(ejb接口)3 datainstance(ejb接口)4 participantinstance434.1.3 定義接口4 flowpackage(ejb接口)4 process(ejb接口)4 activity(ejb接口)50 transition(java類)5 participant(java類)54

5、 data(java類)5 application包561. 概述1.1 文檔概覽第一章,概述,從總體上介紹了文檔的組織結構。第二章,系統簡介,介紹了jtangflow-s的整體結構,重點說明了引擎部分第三章,講述了如何基于jtangflow-s提供的接口進行二次開發,主要包括任務管理器和監控器的開發。第四章,附錄部分對jtangflow-s提供的二次開發接口進行了具體說明。1.2 文檔受眾本文檔面向基于jtangflow-s系統進行二次開發的程序員,文檔中包含的主題主要集中在如何使用系統提供的接口開發任務管理器和監控器,同時,也包含了一些jtangflow-s系

6、統的基本架構和工作流的一些基本概念,對于測試和使用工作流系統也有一定的參考價值。1.3 相關文檔jtangflow用戶使用手冊.doc:工作流定義器使用幫助文檔2. 系統簡介2.1 系統基本概念l 工作流(workflow)業務流程的全部或部分自動化,在此過程中,文檔、信息或者任務按照一定的過程規則流轉,實現組織成員間的協調工作以期達到業務的整體目標。l 工作流管理系統(wfms: workflow management system)一種能定義、創建和管理工作流執行的系統。主要包含三種功能:在流程建立建模的建模功能,即完成工作流過程和相關活動的定義和描述;在流程執行階段的控制功能,即執行工作

7、流過程,完成活動調度、任務分發和流程流轉;在流程運行階段的人機交互功能,即在各種活動執行過程中實現用戶與應用工具之間的數據交互。 l 業務流程(business process)在功能確定的組織結構中,能夠實現業務目標和策略的相互連接的過程和活動集。例如,投保過程、項目開發過程。l 流程定義(process definition)業務流程的形式化描述,來支持系統建模和運行過程的自動化。過程可分解為一系列子過程和活動,其定義主要包括描述過程起始、終止的活動關系網絡,以及一些關于個體行為的信息,例如組織成員,與過程相關的應用和數據等。l 活動(activity)實現過程邏輯步驟的一項工作任務的描述

8、,一般分手工操作和自動處理兩類。活動是過程執行中可被工作流引擎調度的最小工作單元,它要求有人或機器的參與。l 流程實例/活動實例(process instances/activity instances)實際運行中的一個過程或活動。每個實例代表一個能獨立控制執行,具有內部狀態的線程,可被外界通過標識存取。下圖工作流基本概念及其關系。圖 21工作流概念及關系圖2.2 系統體系結構jtangflow工作流管理系統是在wfmc的工作流參考模型的基礎上進行開發的,下圖為系統的整體結構圖。系統可以分為系統建模工具、工作流運行平臺兩個部分。系統建模工具是提供給應用系統開發者,讓其定義流程,定義組織結構和登

9、記所開發的頁面應用的工具,包括流程定義工具,組織結構定義工具和應用管理工具。這些工具都是運行于客戶端的windows程序。流程運行平臺用以在系統運行時,支持流程的執行,主要作用有保證流程正常流轉,分派任務,提供接口讓用戶獲取任務等。流程運行平臺又可以分為工作流接口,工作流引擎、工作流任務管理器和工作流監控工具。圖 22 jtangflow-s整體體系結構圖2.3 系統組成部分2.3.1 流程定義工具流程定義工具主要是一個圖形化的流程定義工具,提供所見即所得的流程定制平臺,其中包括流程定制部分、人員管理部分。具體請見jtangflow用戶使用手冊.doc。2.3.2 工作流引擎工作流引擎是在后臺

10、運行的一個java程序,主要負責流程的正常流轉。主要的作用有啟動和結束活動,檢查流程是否超期等。這個程序直接操作數據庫,和工作流接口以及應用系統沒有直接的聯系,而系統開發者和使用者也都不需要做和其相關的工作。引擎結構圖如下:圖 23 jtangflow-s引擎體系結構圖從下往上依次為:工作流持久化層:用于保存流程運行的定義信息和運行時信息,備份歷史數據,保證在引擎正常關閉或者異常后能繼續未完成工作。中間件服務器:jtangflow-s引擎運行在如jtang、jboss之類的中間件平臺之上,主要使用了web和ejb技術。后臺引擎:jtangflow-s引擎的核心部分,主要包括流程控制子模塊、應用

11、調用子模塊、事件處理子模塊。工作流接口:工作流的接口是直接提供給應用開發者,用于在工作流管理系統的基礎上開發應用系統。通過這些接口應用程序可以直接對工作流系統進行操作,使用工作流系統中的功能。這里主要的接口是工作流應用編程接口,提供了用戶任務管理,應用調用,流程跟蹤和監控,設置活動和流程數據和屬性,代理人設置等幾方面功能。組織結構接口和通知提示接口是輔助接口,用以獲得組織結構信息和系統發給用戶的消息和提示。任務管理器:系統自帶了具備基本功能的任務管理器,能夠支持用戶登陸、獲取任務、執行任務、轉發任務、發送消息等主要功能。監控器:監控工是錢塘工作流管理系統重要組成部分,主要提供對系統連接狀態的管

12、理、流程定義的管理以及流程實例的監控三大模塊功能。其中,系統連接狀態的管理主要包括瀏覽當前系統的連接信息以及對連接的操作;流程定義的管理目前主要提供的是對流程定義信息的瀏覽;流程實例的監控主要包括流程實例詳情的流程、流程狀態的修改、流程相關數據的修改、流程實例的相關任務的管理、流程實例相關活動的管理等。2.4 系統功能2.4.1 業務流程建模功能用戶通過使用錢塘工作流建模工具,經過簡易方便的拖拉,以“所見即所的方式建立和發布業務流程。流程建模工具支持如下功能:o 支持順序、選擇、并發和循環等典型流程結構;o 支持子流程功能;o 支持基于角色和約束的任務分配策略;o 支持對任務進行期限設置;o

13、支持運行時指定任務的執行者和設定任務期限;o 支持復雜的表達式功能;o 支持流程級別和任務級別的自定義屬性的設置;o 支持復雜的人員、組織和角色的關系模型;o 支持web應用、ejb應用、web服務等多種應用類型; 2.4.2 流程執行和監控功能錢塘工作流執行引擎負責解析流程定義、生成用戶任務和流程路由選擇。用戶通過與工作流任務管理器的交互獲取任務列表、執行和提交任務。流程管理員通過工作流監控跟蹤和管理系統部署的流程和當前運行的流程狀態。流程執行和監控支持如下特殊功能:o 支持任務轉發功能;o 支持用戶代理功能;o 支持任務超期提醒功能;o 支持消息傳遞功能;o 支持用戶動態選擇路由功能;o

14、支持任務的批處理功能;o 支持任務的異常處理功能;o 支持流程歷史數據的自動備份功能; 2.5 系統運行環境1. 產品各組件的運行環境l 工作流引擎可運行在windows、linux、unix等操作系統之上。l 工作流建模工具(包括流程定義工具、人員組織角色管理工具和應用管理工具)運行在windows平臺之上。l 工作流任務管理器和工作流監控器可運行在windows的ie、linux的netscape和mozilla瀏覽器之上。2. 產品支持的數據庫jtangflow支持sql server、oracle、mysql等主流數據庫產品。3. 系統支持的應用服務器jtangflow支持weblog

15、ic、jboss、jtang等應用服務器產品。2.6 系統性能jtangflow在如下系統環境中的性能輸入如下表所示:【硬件環境】 普通pc機cpu: p4 2.4g;內存:ddr512m;【軟件環境】 操作系統:window xp;數據庫:sql server;用服務器:jtang應用服務器;【性能測試軟件】loadrunner;測試內容并發用戶數總響應時間(s)平均響應時間(ms)在無歷史數據的前提下,啟動流程實例,創建流程的起始活動實例并完成任務分發502346010048480200101505500255510在1000個流程實例的歷史數據的前提下,啟動流程實例,創建流程的起始活動實

16、例并完成任務分發5023460100494902001035155002595182.7 系統特色jtangflow工作流管理系統具有如下幾個特點:2.7.1 規范化和標準化jtangflow符合國際工作流聯盟提出的工作流和工作流管理系統模型,以及標準的5個應用程序編程接口wapis。2.7.2 完整的系統部件jtangflow提供了基本完整的工作流產品部件,各類圖形化的工作流系統工具(包括流程建模工具,人員組織建模工具,應用管理工具等),以及標準的基于ejb開發的wapis應用接口,所有這些部件能方便用戶快速有效的建立規范化的業務流程應用系統。2.7.3 靈活的流程定義jtangflow支持

17、多種流程模式,如順序、并發、選擇、循環、多實例活動等等。定義不再單純是定義階段的事情,在流程運行階段,同樣可以動態的定義流程的信息,這樣的定義使得用戶在定義流程的時候更加動態化,完成更加豐富和復雜的業務流程。2.7.4 豐富的應用編程接口jtangflow的主要設計目標就是提供一個讓用戶進行二次開發的平臺,以供系統開發者很好的將jtangflow集成或者嵌入到現有系統中。 由于實際情況的不同,開發者所要開發的應用系統不論是框架結構還是具體的功能方面都可能有各種不同的要求。工作流系統提供了豐富的編程接口,使得開發者可以用這些接口開發出符合實際要求的,不同的結構和用戶界面的實用系統。2.7.5 方

18、便的第三方組織數據的重用方案為了重用已有系統的人員組織數據,錢塘工作流管理平臺提供了第三方人員的注冊和管理,既保證了工作流應用系統方便的重用第三方組織數據,又避免了不必要的重復開發和管理。2.7.6 跨語言的工作流二次開發為了支持多種程序語言對工作流系統的訪問和集成,方便工作流應用系統的二次開發,錢塘工作流管理平臺在提供了java編程接口和dll編程接口,方便不同的編程用戶開發適合自身特點和需求的工作流客戶端工具,包括任務管理器、監視器。3. 基于jtangflow的接口開發工作流任務管理器3.1 工作流任務管理器功能框架工作流任務管理器的功能包括用戶登陸、任務管理、流程控制、系統消息、個人設

19、置等幾個模塊,下圖是一個典型的工作流任務管理器的功能框架圖。本章將介紹如何通過工作流接口實現基于web的工作流任務管理器。3.2 登錄模塊設計【名稱】:登錄處理【輸入】:用戶登錄名logname和用戶密碼pwd【相關頁面】:靜態登錄頁面index.htm, 動態登錄頁面log.jsp, 其中log.jsp包括頂部的top.jsp,左側的navi.jsp,右側的allworkitem.jsp,【實現方法】:1) 通過org.jtang.flow.engine包中的globalapi.java類中的userlogin方法來驗證登錄的合法性2) 如果合法,用用戶登錄名logname來設置sessio

20、n的userid屬性;3) 如果不合法,彈出對話框提示用戶名或密碼錯誤;【功能】:驗證用戶登錄的合法性?!菊f明】:系統主界面要包括所有的功能選項。【例子】:/globalapi是一個globalapi ejb的遠程接口string logname = new string(request.getparameter(logname).getbytes(iso8859-1);string pwd = (string)request.getparameter(pwd);boolean result = globalapi.userlogin(logname,pwd); if (result) ses

21、sion.setattribute(userid,logname);else/else:用戶名或密碼錯誤時,彈出對話框提示“錯誤用戶名或密碼”/如果合法:顯示出任務管理器頁面3.3 任務列表模塊的開發(主要介紹allworkitem.jsp)【名稱】:任務列表【輸入】:點擊navi.jsp頁面中的任務瀏覽,或登錄任務管理器及其他情況【相關頁面】:在log.jsp頁面中的右側部分顯示allworkitem.jsp頁面;【實現方法】:1) 用session中的方法getattribute獲得用戶的userid;2) 用org.jtang.flow.engine.globalapi ejb的遠程接口

22、中的方法getallnewworkitems4user獲得用戶userid的所有新任務;3) 用org.jtang.flow.engine.globalapi ejb的遠程接口中的方法getallexecutingworkitems4user獲得用戶userid的所有在辦任務;4) 用org.jtang.flow.engine.globalapi ejb的遠程接口中的方法getallprefinishedworkitems4user獲得用戶userid的動態設置任務;5) 用org.jtang.flow.engine.globalapi ejb的遠程接口中的方法getallfinishedwo

23、rkitems4user獲得用戶userid的所有結束任務;6) 用workitem的方法getworkitemid,getname,getprocinsid分別獲得任務id,任務name,流程實例id;【功能】:顯示各類任務,包括新任務,在辦任務,動態設置任務,結束任務;【說明】:點擊不同的任務進入顯示不同的任務信息【例子】:/獲得useridglobalapihome apihome = (globalapihome) portableremoteobject.narrow (obj, globalapihome.class);globalapi globalapi = apihome.c

24、reate();string userid = (string)session.getattribute(userid);/獲得新任務列表arraylist usertasks = globalapi.getallnewworkitems4user(userid,true,null);/獲得在辦任務列表usertasks = globalapi.getallexecutingworkitems4user(userid,true,null);/獲得動態設置任務列表usertasks = globalapi.getallprefinishedworkitems4user(userid,true,n

25、ull);/獲得結束任務列表usertasks = globalapi.getallfinishedworkitems4user(userid,true,null);/獲得任務列表中每個任務的id,name,procinsid workitem task=(workitem)usertasks.get(j); long workitemid = task.getworkitemid(); string workitemname = task.getname(); long procinsid = task.getprocinsid();3.4 任務執行模塊的開發3.4.1 任務執行模塊功能框架

26、任務執行模塊是任務管理器的核心模塊,該模塊的功能圖如下,在該圖中需要說明如下兩點:i. 在讀取到新任務后,流程可以有兩個通路,一條是對新到任務進行轉發,另一條是對新到任務進行處理。ii. 在新建任務過程中,需要判斷新建的流程是否需要對任務數量、路由、期限或執行者進行設置,如果不需要設置,就可以跳過動態設置這一頁;然后直接轉入任務處理這一步,進行具體的應用。3.4.2 啟動新流程的功能開發【名稱】:新流程啟動【輸入】:先點擊navi.jsp頁面中的“新建任務”,右側顯示tasklb.jsp頁面,點擊頁面列表中流程定義,獲得流程定義processid,然后從tasklb.jsp輸出processi

27、d到tasklist.jsp頁面【位置】:可啟動流程頁面tasklb.jsp,流程啟動頁面tasklist.jsp【功能】:啟動一個新流程【實現方法】: tasklib.jsp中) 用session的方法getattribute獲得userid;) 用org.jtang.flow.engine.globalapi ejb的遠程接口中的方法getallmanualstartprocs4user獲得用戶userid的所有人工啟動的啟動流程列表;) 用org.jtang.flow.engine.definition.process ejb的遠程接口中的方法getid,getname來獲得各個流程定義

28、的processid和name;將參數傳到頁面tasklist.jsp; tasklist.jsp中) 用request的方法getparameter獲得申請啟動的流程的流程定義的processid;) 用session的方法getattribute獲得申請啟動流程的用戶的userid; ) 用org.jtang.flow.engine.factory.jtangflowfactory ejb的遠程接口中的方法createstartprocins,創建流程processid的實例;) 用org.jtang.flow.engine.factory.jtangflowfactory ejb的遠程接

29、口中的方法getprocins獲得新創建的流程實例,然后用org.jtang.flow.engine.instance.processinstance ejb遠程接口中的方法start來啟動流程實例proinsid;) 用response的方法sendredirect將頁面轉到直接allworkitem.jsp;【例子】:tasklb.jsp中:string userid = (string)session.getattribute(userid);arraylist proclist = globalapi.getallmanualstartprocs4user(userid,true,nu

30、ll);org.jtang.flow.engine.definition.process process = null;string processid = ;string processname = ;for (int i=0;iproclist.size();i+) process = (org.jtang.flow.engine.definition.process)proclist.get(i);if(process != null) processid = process.getid();processname = process.getname();tasklist.jsp中:st

31、ring processid = (string)request.getparameter(processid);string userid = (string)session.getattribute(userid);org.jtang.flow.engine.definition.process process= factory.getprocess(processid);long procinsid = factory.createstartprocins(processid,userid);factory.getprocins(procinsid).start();response.s

32、endredirect(./allworkitem.jsp);3.4.3 執行任務的功能開發(主要介紹doworkitem.jsp)【名稱】:任務執行(對新任務,在辦任務,結束任務的操作)【輸入】:點擊allworkitem.jsp中新任務或在辦任務或結束任務列表中的某一項,向doworkitem.jsp傳入workitemid,procinsid和任務類型new或executing;【相關頁面】:allworkitem.jsp,doworkitem.jsp;【功能】:對新建任務、在辦任務、結束任務進行操作,關聯到具體的應用;【方法】:allworkitem.jsp中) 請先參考3.4任務列表

33、模塊設計;) 當點擊新任務或在辦任務或結束任務列表中的任務名時,跳轉到doworkitem.jsp頁面; doworkitem.jsp中) 用request中的方法getparameter獲得workitemid,procinsid,type(此處為new);) 用org.jtang.flow.engine.instance.workitem ejb的遠程接口中的方法setexecutor來設置任務執行者,須更新數據庫;) 用org.jtang.flow.engine.instance.workitem ejb的遠程接口中的方法isdynamicvotesettask來判斷是否是動態會簽主持人

34、設置任務;方法isdynamicvotecommittask()判斷是否是動態會簽主持人提交任務,若是,則先進行與會簽有關的操作(此處先不涉及對會簽具體如何操作);) 若不是會簽,進行相關的應用;用org.jtang.flow.engine.instance.workitem ejb的遠程接口中的方法getparentactins獲得活動實例;用org.jtang.flow.engine.instance.activityinstance中的方法getactdef獲得該活動的定義;org.jtang.flow.engine.definition.activity ejb的遠程接口中的方法get

35、application得到活動所綁定的應用(存放在數據庫中);然后用org.jtang.flow.engine.definition.application.webapp中的方法getpath獲得應用的路徑;跳轉到具體的應用的url; 【例子】:allworkitem.jsp中string href=;href = doworkitem.jsp?workitem_id= + workitemid + &proc_inst_id=+procinsid + &type=new;doworkitem.jsp中jtangflowfactory factory = factoryhome.create(

36、); string workitemid = (string)request.getparameter(workitem_id);session.setattribute(workitem_id,workitemid);string procinsid = (string)request.getparameter(proc_inst_id);string type = (string)request.getparameter(type);string userid = (string)session.getattribute(userid);workitem workitem = factor

37、y.getworkitem(long.parselong(workitemid);if(type.equals(new) workitem.setexecutor(userid,true,null);/ 動態會簽主持人設置任務if(workitem.isdynamicvotesettask() out.print(window.open(dynamic/voteset.jsp);/ 動態會簽主持人提交任務else if(workitem.isdynamicvotecommittask() response.sendredirect(dynamic/votecommit.jsp); else a

38、ctinstance actins = workitem.getparentactins();activity actdef = actins.getactdef();webapp app = (webapp)actdef.getapplication(); string tool = ; tool = app.getpath();if (!tool.equals() string appurl = tool;out.println(window.location = +appurl+);3.4.4 動態設置任務的功能開發【名稱】:判斷是否需要動態設置【輸入】:點擊allworkitem.js

39、p中的動態任務列表中任務名,跳轉到completeworkitem1.jsp,向其傳入workitemid【相關頁面】: allworkitem.jsp,completeworkitem1.jsp,completeworkitem2.jsp;【功能】:判斷任務是否需要動態設置;【實現方法】:completeworkitem1.jsp中) 用org.jtang.flow.engine.factory. jtangflowfactory ejb的遠程接口中的方法getworkitem來得到org.jtang.flow.engine.instance中的workitem ejb的遠程接口;) 用or

40、g.jtang.flow.engine.instance.workitem ejb的遠程接口中的方法finish判斷任務是否有結束,若未結束,跳轉到completeworkitem2.jsp,進行動態設置;若已結束,不作處理,直接跳轉回allworkitem.jsp;【例子】:completeworkitem1.jsp中:jtangflowfactory factory = factoryhome.create(); workitem workitem = factory.getworkitem(long.parselong(workitemid);int flag = workitem.fi

41、nish(0);if(flag != 0 ) response.sendredirect(completeworkitem2.jsp?result= + flag); else response.sendredirect(allworkitem.jsp);【功能1】:動態設置路由;【輸入】:completeworkitem1.jsp傳入的參數” result”、session 中保存的”workitem_id”【相關頁面】: allworkitem.jsp,completeworkitem1.jsp,completeworkitem2.jsp,savedynamicsetting.jsp;【說

42、明】:動態設置下一步執行的活動【實現方法】:completeworkitem2.jsp中) 用org.jtang.flow.engine.factory.jtangflowfactory ejb的遠程接口中的方法getworkitem來得到org.jtang.flow.engine.instance中的workitem ejb的遠程接口;) 根據參數”result”的值判斷是否需要動態設置路由;) 用org.jtang.flow.engine.instance.workitem ejb的遠程接口中的方法getnextstartactlist得到能啟動的后續活動列表;) 將用戶選擇傳遞到save

43、dynamicsetting.jsp頁面;) 在savedynamicsetting.jsp頁面中,用org.jtang.flow.engine.instance.workitem ejb的遠程接口中的方法dynamicsetnextstartact設置后續啟動活動;【例子】:completeworkitem2.jsp中:/ 需要動態設置路由if(flag / 100 = 1 )arraylist nextactlist = workitem.getnextstartactlist();int i = 0;while (i (nextactlist.size() string nextacti

44、d = (activity)nextactlist.get(i).getactid();string nextactname = (activity)nextactlist.get(i).getactname();input type=radio name=nextact value= savedynamicsetting.jsp中:/ 處理動態設置路由信息if(flag / 100 = 1) string nextstartactid = (string)request.getparameter(nextact);if(nextstartactid != null & !nextstarta

45、ctid.equals() workitem.dynamicsetnextstartact(nextstartactid);flag = flag%100;【功能2】:動態設置執行者;【輸入】:completeworkitem1.jsp傳入的參數” result”、session 中保存的”workitem_id”【相關頁面】: allworkitem.jsp,completeworkitem1.jsp,completeworkitem2.jsp,savedynamicsetting.jsp;【說明】:動態設置后續活動的執行者【實現方法】:completeworkitem2.jsp中) 用or

46、g.jtang.flow.engine.factory.jtangflowfactory ejb的遠程接口中的方法getworkitem來得到org.jtang.flow.engine.instance中的workitem ejb的遠程接口;) 根據參數”result”的值判斷是否需要動態設置執行者;) 用org.jtang.flow.engine.instance.workitem ejb的遠程接口中的方法getdynamicsetexecutorinfolist得到動態執行者信息;) 用戶選擇執行者,并將用戶選擇傳遞到savedynamicsetting.jsp頁面;) 在savedyna

47、micsetting.jsp頁面中,用org.jtang.flow.engine.instance.workitem ejb的遠程接口中的方法dynamicsetexecutor設置后續啟動活動;【例子】:completeworkitem2.jsp中:arraylist dynamicsetexecutorinfolist = workitem.getdynamicsetexecutorinfolist();savedynamicsetting.jsp中:/ 處理動態設置執行者信息if(flag = 1) string temp = (string)request.getparameter(t

48、otalindex);if(!temp.equals(0) string actids = request.getparametervalues(actid);string executors = request.getparametervalues(executor);string executortypes = request.getparametervalues(executortype);int totalindex = integer.valueof(temp).intvalue();temp = (string)request.getparameter(groupid);int g

49、roupid = integer.valueof(temp).intvalue();string batchindexset = (string)request.getparameter(batchindexset);for(int i = 0 ; i totalindex ; i+ ) int executortype = 0;if (executortypesi.equals(mem)executortype = 1;else if (executortypesi.equals(role)executortype = 2;else if (executortypesi.equals(org

50、anization)executortype = 3;if(executorsi != null & !executorsi.equals() workitem.dynamicsetexecutor(actidsi,groupid,batchindexset,executortype,executorsi,true,null);【功能3】:動態設置期限(未做);【功能4】:動態設置任務數量(未做);3.4.5 任務轉發的功能開發名稱:任務轉發輸入:點擊allworkitem.jsp新任務或在辦任務列表中的“轉發”按鈕,跳轉到transmittask.jsp頁面,再點擊transmittask.

51、jsp中的“設置”按鈕,跳轉到dynamic/setexecutor.jsp頁面,點擊transmittask.jsp中的“確定”按鈕,調用finishtransition.jsp,然后跳轉回allworkitem.jsp頁面。相關頁面:allworkitem.jsp,transmittask.jsp,finishtransition.jsp。功能: 完成任務的轉發工作。實現方法:transmittask.jsp中:) 用transmittask.jsp中定義的方法setexecutor()來打開dynamic/setexecutor.jsp頁面,進行轉發對象的選?。唬?用request的方法

52、getparameter得到workitemid;) 用session的方法setattribute設置屬性workitem_id的值為workitemid;) 點擊“設置”按鈕后跳轉到轉發對象選擇的頁面,選擇其中一個執行者后(點擊“set”按鈕),回到transmittask.jsp頁面。finishtransition.jsp中:) 用session的方法getattribute得到workitemid,userid;) 用request的方法getparameter得到targerentityid,entitytype,通過對entitytype的判斷,得到targetentitytyp

53、e;) 用org.jtang.flow.engine.factory. jtangflowfactory ejb的遠程接口中的方法getworkitem來得到org.jtang.flow.engine.instance中的workitem ejb的遠程接口;) 用org.jtang.flow.engine.instance.workitem ejb的遠程接中的方法tasktransmit將任務從userid轉發給用戶targerentityid;) 用response的方法sendredirect跳轉加allworkitem.jsp頁面。例子:transmittask.jsp中:function setexecutor(rowindex)window.open(dynamic/setexecutor.jsp?index= + rowindex);string workitemid = (string)request.getparameter(workitemid);session.setattribute(workitem_id,workitemid);finishtransition.jsp中:string workitemid = (string)session.getattribute(wor

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論