版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、開發(fā)常見問題及解答視圖查詢代碼生sql1 表單1.1表單的類型說明:表單類型分為普通,查詢表單,普通(映射)表單。(1)普通,常規(guī)的表單配置(2)查詢表單,主要為視圖列表配置查詢頭,要與視圖配置結(jié)合使用(3)映射表單,可以調(diào)用應用軟件在同一個數(shù)據(jù)庫中不屬于平臺生成的數(shù)據(jù)表,通過字段的映射,對該表進行數(shù)據(jù)查詢,修改,添加,刪除操作1.2控件屬性1.2.1刷新說明:控件刷新屬性,是指當控件的內(nèi)容發(fā)生改變時,觸發(fā)包含當前控件的表單的刷新事件,以通知表單中其它具有重計算屬性的控件進行刷新。1.2.2重計算說明:控件重計算屬性,是指當控件配置選擇重計算時,則包含當前控件的表單,其刷新事件被觸發(fā)時,當前控
2、件的腳本將被重新運算,以實現(xiàn)與最新數(shù)據(jù)同步1.2.3手機說明:控件手機屬性,是指當控件配置選擇手機時,通過MYAPPS智能客戶端訪問平臺應用,則此控件將在智能客戶端上顯示,否則不顯示。1.2.4值腳本說明:控件值腳本,是指可能通過腳本來決定控件的值。示例1:表單字段計算/* 這里我們用單價與數(shù)量,計算金額為例進行講解。* 表單中有一個字段“單價”,數(shù)字類型;有一個字段“數(shù)量”,數(shù)字類型;有一個字段“金額”,數(shù)字類型。* 單價和數(shù)量兩個字段都選擇了“刷新”屬性,金額字段選擇了“重計算”屬性。* 其中,金額字段寫有值腳本。*/var price = getItemValueAsDouble(&qu
3、ot;單價");var count = getItemValueAsDouble("數(shù)量");price * count;示例2:匯總子表單字段值/* 這里我們以匯總子表“金額”字段為例進行講解。* 主表有一字段為“總金額”,數(shù)字類型;子表有一字段為“金額”,數(shù)字類型。* 子表包含元素控件選擇了“刷新”屬性,總金額字段選擇了“重計算”屬性。* 其中,總金額字段寫有值腳本。*/此函數(shù)有兩個參數(shù),第一個參數(shù):子表單名稱;第二個參數(shù):匯總字段名稱。sumSubDocument("子表明細","金額");示例3:子表單記錄計數(shù)/*這
4、里我們以獲取子表記錄數(shù)為例。*/countSubDocument("子表單名稱");示例4:自動編號/*方法1, 創(chuàng)建數(shù)據(jù)但未保存時,會出現(xiàn)斷號的情況。生成TLK0001、TLK0002、TLK0003.*/var number = getItemValue("字段名");if(number =null | number.trim().length()<=0) number = countNext2("TLK",false,false,false,4);number;/*方法2, 創(chuàng)建數(shù)據(jù)但未保存時,會出現(xiàn)斷號的情況。生成TLK
5、201101050001、TLK201101050002、TLK201101050003.*/var number = getItemValue("字段名");if(number =null | number.trim().length()<=0)number = countNext2("TLK",true,true,true,4);number;1.2.5選項腳本說明:控件選項腳本,是指通過腳本來創(chuàng)建出控件的可選擇項,支持固定選項、動態(tài)生成選項。示例:/*方法1:固定選項列表,選項名與選項值相同。*/"選項1;選項2;選項3;選項4&q
6、uot;/*方法2:固定選項列表,選項名與選項值不相同。*/var opts=createOptions();opts.add("","");opts.add("選項1","1");opts.add("選項2","2");opts.add("選項3","3");opts.add("選項4","4");opts;/*方法3:動態(tài)生成選項列表,從基礎表中獲取數(shù)據(jù)動態(tài)生成選項。*/獲取所有區(qū)域var o
7、pts=createOptions();opts.add("","");var dql = "$formname='/片區(qū)信息表'"var datas =queryByDQL(dql);if(datas!=null && datas.size()>0)for(var iter = datas.iterator();iter.hasNext();)var doc = iter.next();opts.add(doc.getItemValueAsString("片區(qū)"),doc.g
8、etItemValueAsString('片區(qū)代碼');opts;/*方法4:動態(tài)生成選項列表,從基礎表中動態(tài)生成選項。* 從基礎表中動態(tài)生成選項列表。選項名與選項值取不同字段的值。*/var dql = "$formname='/片區(qū)信息表'"var key = new Array();key0 = "片區(qū)代碼"key1 = "片區(qū)"getOptionsByDQL(dql,key,true);/*方法5:動態(tài)生成選項列表,從基礎表中動態(tài)生成選項。* 選項名與選項值取同一個字段的值。*/var dql
9、= "$formname='/片區(qū)信息表'"getOptionsByDQL(dql,"片區(qū)",true);1.2.6校驗腳本說明:控件校驗腳本,是指通過腳本來對表單控件內(nèi)容進行校驗。示例1:判斷是否為空/*這里我們以校驗“名稱”字段是否填寫內(nèi)容為例。*/var value = getItemValueAsString("名稱");var rtn = ""if (value=null | value.trim().length()<=0)rtn = "名稱字段必須填寫!"rt
10、n;示例2:判斷是否為數(shù)字/*這里我們以校驗“數(shù)量”字段填寫內(nèi)容是否為數(shù)字為例。*/var value = getItemValueAsString("數(shù)量");var rtn = ""if (!isNumberText(value)rtn = "字段內(nèi)容必需為數(shù)字!"rtn;示例3:判斷是否為郵件地址/*這里我們以校驗“email”字段填寫內(nèi)容是否為Email地址為例。*/var value = getItemValueAsString("email");var rtn = ""if (!is
11、MailAddressText(value)rtn = "非法的Email地址!"rtn;示例4:判斷是否為正數(shù)/*這里我們以校驗“數(shù)量”字段填寫內(nèi)容是否為正數(shù)為例。*/var value = getItemValueAsDouble("數(shù)量");var rtn = ""if (!isPositive(value)rtn = "數(shù)量必需大于0!"rtn;示例5:表單中的2個字段進行比較/*這里我們以校驗“總額”字段與“實際金額”字段比較為例。*/var total_amount = getItemValueAsDo
12、uble("總額");var amount = getItemValueAsDouble("實際金額");var rtn = ""if (total_amount< amount)rtn = "實際金額不能大于總額!"rtn;示例6:獲取參數(shù)表中的值,并進行比較/*這里我們以校驗“總額”參數(shù)與“實際金額”參數(shù)比較為例。*/var total_amount = getParameterAsDouble("總額");var amount = getParameterAsDouble("
13、;實際金額");var rtn = ""if (total_amount< amount)rtn = "實際金額不能大于總額!"rtn;示例7:判斷記錄是否已存在/*這里我們以校驗“任務編號”是否已存在為例。*/var code = getItemValueAsString("任務編號");var dql = "$formname='fm_task' and code='"+code + "' and $id<>'" + get
14、Id() + "'"var datas = queryByDQL(dql);var rtn = ""if (datas!=null && datas.size()>0)rtn = "任務編號"+code+"已經(jīng)存在!"rtn;1.2.7隱藏腳本說明:控件隱藏腳本,是指當腳本返回值為true時,控件隱藏,當返回值為false時,控件顯示。示例1:判斷當前用戶部門,并決定是否隱藏/*這里我們以非“總經(jīng)辦”的用戶不可查看“合同總額”字段信息為例。我們在“合同總額”字段隱藏腳本。1表示一級部門
15、*/var deptid = getDeptIdByNameAndLevel("總經(jīng)辦",1);var dpts = getWebUser().getDepartments();var isHidden = true;if (dpts!=null && dpts.size()>0)for (var it = dpts.iterator();it.hasNext();)var dptVO = it.next();if (deptid.equals(dptVO.getId()isHidden = false;break;isHidden;示例2:判斷當前用
16、戶角色,并決定是否隱藏/*這里我們以非“總經(jīng)理”的角色用戶不可查看“合同總額”字段信息為例。我們在“合同總額”字段隱藏腳本填寫腳本。*/var roleid = getRoleIdByName("總經(jīng)理");var roles = getWebUser().getRoles();var isHidden = true;if (roles!=null && roles.size()>0)for (var it = roles.iterator();it.hasNext();)var roleVO = it.next();if (roleid.equals
17、(roleVO.getId()isHidden = false;break;isHidden;示例3:判斷當前表單另一字段值,并決定是否隱藏/*這里我們以表單“任務類型”字段值狀態(tài)為例。我們在“開發(fā)者”字段隱藏腳本填寫腳本。當為非開發(fā)任務時,隱藏“開發(fā)者”*/var type = getItemValueAsString("任務類型");var isHidden = true;if ("開發(fā)任務".equals(type)isHidden = false;isHidden;示例4:判斷當前表單處于新建還是編輯狀態(tài),并決定是否隱藏/*這里我們以表單為編輯狀
18、態(tài)時顯示字段值信息為例?!敖▎稳恕弊侄坞[藏腳本。*/var doc = getCurrentDocument();doc.getIstmp();1.2.8打印時隱藏腳本說明:控件打印時隱藏腳本,當腳本返回值為true,文檔打印時隱藏控件內(nèi)容;腳本返回值為false,文檔打印時顯示控件內(nèi)容。1.2.9只讀腳本說明:控件只讀腳本,當腳本返回值為true,表單字段只讀;當腳本返回值為false,表單字段可編輯。示例:只作者可編輯var doc = getCurrentDocument();var user = getWebUser();var isReadOlny = true;if (user.g
19、etId().equals(doc.getAutho().getId()isReadOlny = false;isReadOlny;1.3操作1.3.1基本操作類型前臺效果圖名稱簡述查詢用于對應視圖的查詢表單功能。保存執(zhí)行保存操作。保存執(zhí)行保存并觸發(fā)流程保存并返回執(zhí)行保存操作后返回上一級頁面。保存并新建執(zhí)行保存操作后并創(chuàng)建新的操作,而且會帶有原來的數(shù)據(jù)。保存并新建執(zhí)行保存操作后并創(chuàng)建新的操作,但不會帶有原來的數(shù)據(jù)。保存執(zhí)行保存操作后不進行數(shù)據(jù)校驗。保存并復制執(zhí)行保存操作后并進行復制。保存并關閉窗口執(zhí)行保存操作后關閉窗口。返回返回上一級頁面。打印數(shù)據(jù)表進行打印。帶流程歷史打印 打印數(shù)據(jù)表時并帶有
20、流程歷史。流程處理提交給下一個流程進行進一步處理。腳本處理 對腳本進行處理。關閉窗口把當前的窗口關閉。編輯審批人對數(shù)據(jù)信息進行操作、修改的人。PDF導出數(shù)據(jù)信息以PDF格式進行導出。文件下載下載相關文件,文件路徑如:”/uploads/aaa.txt”,那么在發(fā)布項目的uploads目錄下的aaa.txt文件會被下載。電子簽章對電子文檔進行電子簽章。動態(tài)打印數(shù)據(jù)進行嵌套打印。用戶可根據(jù)自己的需求設計打印界面及其字段實現(xiàn)自定義打印。跳轉(zhuǎn)跳轉(zhuǎn)到對應的表單流程啟動觸發(fā)流程1.3.2動作執(zhí)行前腳本說明:表單按鈕動作執(zhí)行前腳本,是指按鈕的動作執(zhí)行前觸發(fā)此腳本。通常也可以用來進行校驗操作。當此腳本返回值為
21、:字符串對象、Alert對象(通過createAlert函數(shù)創(chuàng)建)、Confirm對象(可通過createConfirm函數(shù)創(chuàng)建)。示例1:執(zhí)行前顯示Alert窗口/*這里我們以“提交”按鈕動作執(zhí)行前腳本為例。*/var code = getItemValueAsString("任務編號");if (code =null | code.trim().length()<=0)createAlert("任務編號不能為空!");示例2:執(zhí)行前顯示Confirm窗口/*這里我們以“提交”按鈕動作執(zhí)行前腳本為例。*/createConfirm("確
22、定要提交文檔?");1.3.3動作執(zhí)行后腳本說明:表單按鈕動作執(zhí)行后腳本,是指按鈕的動作執(zhí)行后觸發(fā)此腳本。示例1:保存當前文檔,并根據(jù)當前表單的內(nèi)容創(chuàng)建另一文檔/*這里我們以“保存”按鈕動作執(zhí)行后腳本為例。*/var formProcess = getFormProcess();/查詢出表單var form = formProcess.doViewByFormName("fm_purchase_materials",getApplication();var process = getDocumentProcess();var doc = process.doNew
23、(form,getWebUser(),createParamsTable();doc.findItem("title").setValue(getItemValueAsString("標題");doc.findItem("type").setValue(getItemValueAsString("類型");doc.findItem("count").setValue(getItemValueAsString("數(shù)量");doc.setIstmp(false);process.
24、doCreate(doc);示例2:保存當前文檔,并發(fā)送郵件通知/*這里我們以“保存”按鈕動作執(zhí)行后腳本為例。*/var from=getItemValueAsString("from");var to=getItemValueAsString("to");var host=getItemValueAsString("host");var user=getItemValueAsString("user");var password=getItemValueAsString("password")
25、;var bbc=getItemValueAsString("bbc");var subject=getItemValueAsString("subject");var body=getItemValueAsString("body");sendMail(from, to, subject, body, host, user, password, bbc, fasle);示例3:保存當前文檔,自動生成編號/*自動編號,此種生成方式編號會連號,讓編號利用率到最高。當點擊保存按鈕,數(shù)據(jù)保存成功后,生成TLK201101001、TLK201
26、101002、TLK201101003.*/保存動作執(zhí)行后腳本var doc = getCurrentDocument();var value = doc.getItemValueAsString("code1");if(value = null | value.trim().length() <= 0)value = countNext2("TLK",true,true,false,4);doc.findItem("code1").setValue(value);var process = getDocProcess(getA
27、pplication(); /Document操作類process.doUpdate(doc);2視圖2.1視圖的類型說明:視圖的類型分為:普通,日歷視圖,樹形視圖,地圖視圖,甘特視圖(1) 普通,常規(guī)的視圖配置(2) 日歷視圖,類似掛歷或備忘錄的形式陳列表單數(shù)據(jù),通過映射字段映射表單的日期字段,根據(jù)該日期字段以每日,每周,每月顯示數(shù)據(jù)(具體實例請參考myApps功能示例/視圖示例/日歷視圖)。月視圖:周視圖:日視圖:(3) 樹形視圖,以樹形結(jié)構顯示表單內(nèi)容,字段中的層級關系通過視圖列中映射字段設置來定義的,節(jié)點點擊打開類型為對應視圖和鏈接(具體實例請參考myApps功能示例/視圖示例/樹形視
28、圖(列表)或者樹形視圖(表單)。前臺顯示效果:(4) 地圖視圖,為用戶提供地圖位置,顯示位置信息。使用google地圖的插件,需在可連互聯(lián)網(wǎng)環(huán)境才能正常使用,通過映射字段映射地圖控件(具體實例請參考myApps功能示例/視圖示例/地圖視圖)。前臺顯示效果:(5) 甘特視圖,能更直觀的統(tǒng)計每日,周,月,季的工作進展情況和完成進度,它通過映射字段對應表單需要的字段(具體實例請參考myApps功能示例/視圖示例/甘特視圖示例)。前臺顯示效果:2.2篩選條件定義示例1:在視圖中列出單個數(shù)據(jù)表內(nèi)容通過視圖基本信息中設置相關表單,即可對應單個表單的數(shù)據(jù)表,分別可以通過設計,代碼(DQL),代碼(SQL)來
29、進行對列的條件過濾。(具體實例請參考myApps功能示例/視圖示例/視圖示例design、DQL和SQL)以上實例中通過查詢條件對應綁定查詢表單里字段,根據(jù)查詢表單字段內(nèi)容對視圖數(shù)據(jù)表進行篩選。/ DQL語句/*獲取查詢表單“字段1”和“字段2”的值,當查詢表單中“字段1”和“字段2”的值等于“視圖示例_dql”中“字段1”和“字段2”的值時,顯示數(shù)據(jù)表為查詢表單中中“字段1”和“字段2”對應內(nèi)容的數(shù)據(jù)。*/var value1 = getItemValue("字段1");var value2 = getItemValue("字段2");var wher
30、e = (value1 != null && value1.trim().length() > 0)?" and 字段1='"+ value1+"'":""where += (value2 != null && value2.trim().length() > 0)?" and 字段2='"+ value2 + "'":"""$formname='視圖示例_dql' &quo
31、t; + where;/SQL語句/*獲取查詢表單“字段1”的值,當查詢表單中“字段1”的值等于“視圖示例_sql”中“字段1”的值時,顯示數(shù)據(jù)表為查詢表單中“字段1”對應內(nèi)容的數(shù)據(jù)。字段名不是以item_起頭的,就要定義一個別名,別名是以item_起頭,因為如果不是以item_起頭,數(shù)據(jù)項的值將無法獲取到值。*/var sql = ""var value = getItemValue("字段1");if (value!=null && value.trim().length() > 0)sql = " and ITEM_
32、字段1='"+value+"'""SELECT * FROM TLK_視圖示例_sql where istmp=0 "+sql;/SQL語句實現(xiàn),映射表單數(shù)據(jù)查詢/*查詢映射表單tb_mapping中name與title字段內(nèi)容。*/var sql = "select d.*,,m.title from t_document d"sql +=" inner join tb_mapping m on d.mappingid=m.keyname"sql;示例2:在視圖中顯示多個數(shù)據(jù)
33、表(多表查詢)的內(nèi)容/*通過過濾中代碼(SQL)來實現(xiàn)多個數(shù)據(jù)表(多表查詢)的內(nèi)容,主要通過主子表來實現(xiàn)多表單的數(shù)據(jù)查詢,查詢子表單中finished與date字段的數(shù)據(jù)。*/var sql="SELECT d.*,sub.item_finished,sub.item_date from tlk_fm_task d"sql +=" inner join tlk_fm_task_sub sub on d.id=sub.parent"sql;示例3:SQL語句實現(xiàn)已辦數(shù)據(jù)查詢var sql="select * from tlk_會議記錄 doc w
34、here '"+getWebUser().getId();sql +="' in (select u.ACTORID from T_ACTORHIS a,t_relationhis r"sql +=" where r.docid=doc.id and a.nodehis_id=r.id"sql +=" AND r.flowid in "sql +="(SELECT flowid FROM t_flowstatert WHERE docid=doc.id ) "sql;示例4:實現(xiàn)待辦數(shù)據(jù)查
35、詢/DQL實現(xiàn)var dql ="$formname='formname' and $state.actors.actorid='" +getWebUser().getId() + "'"dql;/SQL實現(xiàn)var sql="select d.* from tlk_tablename d"sql +=" where (d.id in (select states.docid"sql +=" from t_flowstatert states, t_actorrt actor
36、s"sql +=" where states.id = actors.flowstatert_id"sql +=" and actors.actorid ='" +getWebUser().getId() + "')"sql;2.3定義列說明:定義列的顯示,我們可以通過兩種方式來實現(xiàn):FIELD和SCRIPT;(1)FIELD,視圖中默認的方式,根據(jù)視圖查詢的表單,選擇對應表單的列;(2)SCRIPT,通過代碼來顯示數(shù)據(jù)。2.3.1獲取表單字段值說明:獲取相關表單字段的值,實現(xiàn)的方式有兩種類型:FIELD和S
37、CRIPT(1) FIELD,視圖中默認的方式,根據(jù)視圖查詢的表單,選擇對應表單的列(2) SCRIPT,通過代碼來顯示數(shù)據(jù),具體示例如下:var value = getItemValue("地區(qū)");value;2.3.2值轉(zhuǎn)換說明:通過視圖列配置來實現(xiàn)值轉(zhuǎn)換,需要使用iScript代碼的方式來實現(xiàn) (具體實例請參考myApps功能示例/視圖示例/數(shù)據(jù)轉(zhuǎn)換)/*獲取當前文檔“地區(qū)”字段的值,當值等于010時顯示北京,當值等于020是顯示廣州,當值等于021時顯示上海?!暗貐^(qū)”列的值腳本。*/var doc = getCurrentDocument();var value
38、= doc.getItemValueAsString("地區(qū)");var rtn=''if(value="010")rtn="北京 "else if(value='020')rtn="廣州 "else if(value='021')rtn="上海 "elsertn= value;rnt;前臺顯示的效果是:2.3.3獲取其它表單字段值說明:/*列上通過SCRIPT代碼實現(xiàn)。這里我們以根據(jù)物料編輯獲取物料名稱為例。*/var code = getIte
39、mValueAsString("code");var dql = "$formname='物料表單' and code='" + code + "'"var doc = findByDQL(dql);doc.getItemValueAsString("name");2.3.4在列上顯示操作說明:列上通過SCRIPT代碼實現(xiàn),當點擊列名為中“編輯”按鈕時,進入當前行中的表單。示例:編輯操作按鈕var doc = getCurrentDocument();var rtn = "
40、<input type='Button' value='編輯' "rtn+="onclick='javascript:document.forms0.action=""rtn+=getContextPath();rtn+="/portal/dynaform/document/view.action"rtn+= "?_docid=" + doc.getId() + "&_formid=" + doc.getFormid();rtn+= &quo
41、t;&r_edit=true""rtn+= "document.forms0.submit();'/>"rtn;效果如下:2.3.5在列上顯示圖片示例:/*列通過SCRIPT代碼實現(xiàn),獲取相關表單“地區(qū)”字段的值,當值等于010和020和021時,顯示服務器上相關圖片,否者顯示另一種相關圖片。“結(jié)果”列的值腳本。*/var value = getItemValue("地區(qū)");var rtn=""if(value="010" | value="020"
42、| value="021")rtn="<img src='/obpm/resource/image/backstatelabel.gif'/>"elsertn="<img src= /obpm/resource/image/terminate1.gif'/>"rtn;rtn='<img style="max-width:20%" src="/Z22629'+rtn+'" />'2.3.6在列上顯示超鏈接說
43、明:列通過SCRIPT代碼實現(xiàn)(具體實例請參考myApps功能示例/視圖示例/多樣式列視圖示例)示例:列鏈接到其它網(wǎng)址/*以字符串的形式獲取相關表單“task_type”字段的值,當字段值為0時,顯示打開百度并在當前頁面中鏈接到百度地址,當字段值為1時,顯示打開百度并在當前頁面中鏈接到谷歌地址。*/var value = getItemValueAsString("task_type");var rtn = ""if ("0".equals(value)rtn = "<a href=''>打開百度
44、</a>"else if ("1".equals(value)rtn = "<a href=''>打開谷歌</a>"rtn;2.4操作2.4.1基本操作類型說明:操作的類型有:查詢,創(chuàng)建,刪除,批量提交,導出EXCEL,導入EXCEL,清空所有數(shù)據(jù),文件下載,批量簽章(1) 查詢:對應視圖的查詢表單功能(2) 創(chuàng)建:創(chuàng)建關聯(lián)表單新數(shù)據(jù)(3) 刪除:刪除所選記錄(4) 批量審批:對數(shù)據(jù)信息進行大量的審批提交(表單有綁定流程)(5) 導出EXCEL:導出視圖數(shù)據(jù)的EXCEL文件(6) 導入EXCE
45、L:根據(jù)導入映射的配置,導入相關數(shù)據(jù)(7) 清空所有數(shù)據(jù):清空所選表單的數(shù)據(jù)(8) 文件下載:下載相關文件,通過文件名稱腳本,指向下載文件的相對路徑,例如”/uploads/aaa.txt”,下載服務器上uploads文件夾下名為aaa.txt的文件(9) 批量簽章:對所有表單進行簽章2.4.2動作前執(zhí)行腳本說明:視圖按鈕動作執(zhí)行前腳本,是指按鈕的動作執(zhí)行前觸發(fā)此腳本。通常做動作執(zhí)行前校驗操作。示例:校驗是否勾選了記錄/*這里我們以刪除按鈕動作執(zhí)行前腳本為例。刪除之前需要選擇被刪除記錄。*/var selects = getParameterAsArray("_selects&quo
46、t;);var rtn = ""if (selects =null | selects.length<0)rtn = "請選擇記錄!"rtn;2.4.3動作后執(zhí)行腳本說明:視圖按鈕動作執(zhí)行后腳本,是指按鈕的動作執(zhí)行后觸發(fā)此腳本。示例:更新選中記錄相關的信息/*這里在按鈕執(zhí)行后腳本里來更新選中的記錄信息。*/var docids = getParameterAsArray("_selects");var process = getDocProcess(getApplication(); /Document操作類for(var i=
47、0;i<docids.length;i+)var doc = process.doView(docidsi);doc.findItem("am_apply_status").setValue('己成生');process.doUpdate(doc );3流程3.1狀態(tài)標簽說明:狀態(tài)標簽是節(jié)點狀態(tài)的顯示,前臺中一般顯示在進入流程中表單的右上角。表單中可以根據(jù)獲取到流程的狀態(tài)來決定表單中某字段的值。表單通過腳本獲取狀態(tài)標簽:/方法1:var doc = getCurrentDocument();var statelabel = doc.getStateLa
48、bel();statelabel;/方法2:var statelabel = getStateLabel();statelabel;示例:“軟件缺陷管理系統(tǒng)模板”,表單中“指派給”字段是通過流程狀態(tài)獲取的值,其值根據(jù)狀態(tài)變化而變化,這里的用戶變量“users”的值是獲得某個指定角色下的所有用戶,是一個集合,需要通過遍歷(如:var iter = users.getDatas().iterator(); iter.hasNext();)后返回選項值,因此控件使用了下拉框,腳本寫在該控件屬性中的選項腳本。/*當流程狀態(tài)標簽值為空和“FindBug”和“TestBug”時獲取Developer角色下
49、的所有用戶,否者當值為“FixBug”狀態(tài)時獲取Tester角色下的所有用戶,當值為“AssignBug”時獲取Developer角色下的所有用戶。*/var opts = createOptions();opts.add("","");var doc = getCurrentDocument();var process = createProcess("cn.myapps.core.user.ejb.UserProcess");var users = null;var statelabel = doc.getStateLabel()
50、;if(statelabel = null | statelabel = 'FindBug' | statelabel = 'TestBug')users = process.doQueryByRoleId("11de-a80d-a8e5d7bb-b638-55c259677fcd");else if(statelabel = 'FixBug')users = process.doQueryByRoleId("11de-a80d-b3e7fd0d-b638-55c259677fcd");else if(st
51、atelabel = "AssignBug")users = process.doQueryByRoleId("11de-a80d-a8e5d7bb-b638-55c259677fcd");if (users!=null && users.rowCount > 0)for(var iter = users.getDatas().iterator(); iter.hasNext();) var user = iter.next();var userno = user.getLoginno();var username = user.g
52、etName();opts.add(username,userno);opts;3.2會簽說明:傳統(tǒng)意義上的會簽是指撰擬公文的過程中,主辦單位主動與有關單位協(xié)商并核簽的一種辦文程序,一般當公文的內(nèi)容涉及本單位的多個部門或與其他單位有關時,需要進行會簽。流程會簽,是指當前環(huán)節(jié)需要會簽,則需要等待當前環(huán)節(jié)的所有審批人都審批完成,當前環(huán)節(jié)才算完結(jié),流程才流轉(zhuǎn)到下一環(huán)節(jié)。3.3分支說明:分支是A->B,C,D->E(這里的A,B,C,D,E指的是流程中左側(cè)圖標的手動節(jié)點,箭頭指的是流程中左側(cè)圖標的關聯(lián)節(jié)點), A執(zhí)行完以后,可以根據(jù)需求對B,C,D多個流程節(jié)點進行選擇和判斷。對B,C,D分
53、支節(jié)點進行多和單的節(jié)點選擇(這個是在流程節(jié)點屬性的審批設置中對審批送出設置和審批到達設置中進行選擇設定);判斷流程的走向,一般是在流程的關聯(lián)節(jié)點上進行設置。具體示例請參考myApps功能示例/流程示例/流程分支示例, 這里建單人創(chuàng)建文檔后提交流程,流程根據(jù)表單中“字段2”的值進行路徑的判斷。大于100走“分支1.1”,小于100走“分支2.1”,根據(jù)邏輯這是個單選。因此分別在關聯(lián)節(jié)點和建單人以及分支節(jié)點上進行審批設置。3.4并發(fā)流程說明:并發(fā)流程是A->B,C,D->E(這里的A,B,C,D,E指的是流程中左側(cè)圖標的手動節(jié)點,箭頭指的是流程中左側(cè)圖標的關聯(lián)節(jié)點), A執(zhí)行完以后,讓
54、B,C,D來執(zhí)行,他們的執(zhí)行沒有先后順序,只有他們?nèi)齻€全部執(zhí)行完以后,才能到下個流程節(jié)點E。這里的流程節(jié)點屬性設置中,其中,在A節(jié)點審批設置審批送出節(jié)點設置“當下步有多個審批節(jié)點時,可以選擇多個節(jié)點”,E節(jié)點中審批到達節(jié)點設置“當上步有多個審批節(jié)點時,所有節(jié)點完成,流程可以到達”3.5調(diào)用子流程說明:子流程作為父流程中的一種特殊的活動出現(xiàn)。子流程在父流程中,所處的只是一個節(jié)點,因此在進行流程處理時,子流程只當做一個流程的節(jié)點來看待。調(diào)用子流程只是當前流程處理到子流程節(jié)點這個環(huán)節(jié)時,主流程會通知流程引擎,流程引擎開始啟動并調(diào)用子流程。3.6綁定表單并設置權限說明:流程中在手動節(jié)點的基本信息中進行
55、對應的表單綁定,可表單字段進行“只讀”,“修改”,“隱藏”的權限控制。默認情況下所有表單字段都是“修改”的權限,因此:(1)綁定表單,需要修改其中某些字段的“修改”的權限,按照流程的實際需求;(2)解除綁定,將表單所有字段權限改為“修改”即可。4報表4.1交叉報表說明:交叉表單是報表中常見的類型,可以配置行和列數(shù)據(jù)匯總。它的視圖查詢模式可分為sql.dql,form(1) sql:通過ISCRIPT語句實現(xiàn),具體可以參考視圖中的代碼(SQL)(2) dql:通過ISCRIPT語句實現(xiàn),具體可以參考視圖中的代碼(DQL)(3) form:通過ISCRIPT語句實現(xiàn),具體可以參考視圖中的設計4.2
56、列表說明:列表通過視圖設計實現(xiàn),其實現(xiàn)方式有:(1) 將視圖基本信息只讀設置為“是”(2) 將試圖列信息中的是否匯總標記上,對列進行匯總4.3自定義報表(Beta)說明:用戶根據(jù)自己的需求定義表單的統(tǒng)計方式,目前實現(xiàn)了圖表視圖和儀表版;表格視圖,矩陣視圖和匯總視圖正在開發(fā)中。用戶在后臺通過菜單的自定義鏈接(內(nèi)部)來調(diào)用自定義報表界面,鏈接地址如下:/portal/share/report/oReport/oReport.jsp 5腳本語言iScript5.1常見效果實現(xiàn)5.1.1執(zhí)行SQL說明:執(zhí)行SQL分別可通過queryByDSName(dsName,sql)、insertByDSName
57、(dsName,sql)、updateByDSName(dsName,sql)和deleteByDSName(dsName,sql)四個方法實現(xiàn)。示例1:執(zhí)行SQL查詢/省份。用戶首先需要創(chuàng)建"kd"數(shù)據(jù)源。var opts = createOptions();opts.add("","");tryvar appid = getApplication();var sql = "select cityid,cityname from cityinfo where rootid=0"var datas = queryB
58、yDSName("kd",sql);if(datas!=null)for(var iterator = datas.iterator();iterator.hasNext();)var map1 = iterator.next();/取值var name= map1.get("cityname");var value = map1.get("cityid");opts.add(name,value);catch(e)opts;示例2:執(zhí)行SQL插入var doc = getCurrentDocument();var sql = &qu
59、ot;insert into cityinfo(cityid,cityname,rootid) "sql +=" values('"+doc.getItemValue("citycode")+"','"sql +=doc.getItemValue("cityname")+"', "sql +=doc.getItemValue("cityroot")+")"insertByDSName("kd",
60、sql);示例3:執(zhí)行SQL更新var doc = getCurrentDocument();var sql = "update cityinfo set cityid = "sql +="'"+doc.getItemValue("citycode")+"', cityname='"sql +=doc.getItemValue("cityname")+"', rootid ="sql +=doc.getItemValue("cityr
61、oot");updateByDSName("kd",sql);示例4:執(zhí)行SQL刪除var docid = getId();var sql = "delete from tlk_施工物料明細 where PARENT='"+docid+"'"deleteByDSName("kd",sql);5.1.2通過SQL查詢示例:根據(jù)當前文檔ID查詢子表記錄。var value = ""var docid = getId();var sql = "select * fr
62、om tlk_fm_ticket_sub parent = '" + docid + "'"var subdocs1 = queryBySQL(sql);if(subdocs1 != null && subdocs1.size() > 0) var temp = null;var temp1 = ""var temp2 = ""for (var iter1 = subdocs1.iterator(); iter1.hasNext();) var subdoc1 = iter1.next();temp1 = subdoc1.getLastmodified();if(temp1 > temp2) temp2 = temp1;temp = subdoc1;value = temp.getItemValueAsString("finishdegree");elsevalue = "0%"value;5.1.3通過DQL查詢示例:根據(jù)當前文檔ID查詢子表記錄。var value =
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版港口工程保險合同3篇
- 二零二五版涵洞工程環(huán)保監(jiān)測合同3篇
- 二零二五版反擔保合同模板:供應鏈金融3篇
- 二零二五年計時工勞動合同管理與心理關懷協(xié)議3篇
- 二零二五年度軟件開發(fā)項目合同及其廉潔規(guī)定2篇
- 二零二五版教育SaaS平臺軟件服務合同3篇
- 二零二五版粉煤灰運輸安全規(guī)范與應急預案編制合同3篇
- 二零二五年度特種飼料原料采購合同模板2篇
- 二零二五年防火墻安全防護系統(tǒng)集成與維護合同3篇
- 二零二五年度大數(shù)據(jù)中心建設與運營勞務分包合同3篇
- 2024版塑料購銷合同范本買賣
- 【高一上】【期末話收獲 家校話未來】期末家長會
- JJF 2184-2025電子計價秤型式評價大綱(試行)
- 二年級下冊加減混合豎式練習360題附答案
- 2021年道路交通安全法期末考試試題含答案
- 股東變更情況報告表
- 自帶藥物治療告知書
- 房產(chǎn)中介門店6S管理規(guī)范
- 吞咽解剖和生理研究
- TSG11-2020 鍋爐安全技術規(guī)程
- 異地就醫(yī)備案個人承諾書
評論
0/150
提交評論