Office-Anywhere-2016業(yè)務(wù)流程使用詳解_第1頁
Office-Anywhere-2016業(yè)務(wù)流程使用詳解_第2頁
Office-Anywhere-2016業(yè)務(wù)流程使用詳解_第3頁
Office-Anywhere-2016業(yè)務(wù)流程使用詳解_第4頁
Office-Anywhere-2016業(yè)務(wù)流程使用詳解_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Office Anywhere 2016業(yè)務(wù)流程平臺(tái)詳解業(yè)務(wù)流程平臺(tái)詳解第1章什么是業(yè)務(wù)流程平臺(tái)1.1業(yè)務(wù)流程平臺(tái)的用途1.2業(yè)務(wù)流程平臺(tái)的功能特性第2章業(yè)務(wù)流程平臺(tái)示例應(yīng)用2.1車輛使用申請(qǐng)2.2公告通知審批流程第3章業(yè)務(wù)流程平臺(tái) Restful 接口3.1名詞解釋3.20AUTH2認(rèn)證3.2.1 注冊外部應(yīng)用3.2.2 獲取訪問令牌3.2.3 重新獲取訪問令牌3.3 流程引擎接口3.3.1獲取業(yè)務(wù)模塊綁定的流程 ID3.3.2獲取工作流水號(hào)3.3.3獲取參數(shù)數(shù)據(jù)3.3.4獲取數(shù)據(jù)3.3.5新建工作3.3.6辦理工作3.3.7獲得下一步辦理節(jié)點(diǎn)3.3.8工作保存3.3.9工作提交3.3.10

2、一鍵轉(zhuǎn)交3.3.11工作委托3.3.12獲取退回節(jié)點(diǎn)3.3.13工作退回第 4 章 業(yè)務(wù)流程平臺(tái)接口4.1 獲取業(yè)務(wù)模塊綁定的流程 ID4.2 獲取工作流水號(hào)目錄13131414151717171819192020212223242525262627274.3獲取參數(shù)274.4獲取數(shù)據(jù)274.5新建工作284.6辦理工作284.7辦理工作294.8獲得下一步辦理節(jié)點(diǎn)294.9工作提交304.10一鍵轉(zhuǎn)交314.11工作委托314.12獲得退回節(jié)點(diǎn)314.13工作退回32第1章 什么是業(yè)務(wù)流程平臺(tái)1.1業(yè)務(wù)流程平臺(tái)的用途工作流是通達(dá)OA的核心模塊,也是廣大用戶使用最為頻繁的模塊之一?!白?定義表

3、單” + “自定義流程”的模式廣泛應(yīng)用于各行各業(yè)各類業(yè)務(wù)的申請(qǐng)、審批、 會(huì)簽、登記、操作等環(huán)節(jié)的管理,將協(xié)同工作的過程進(jìn)行詳細(xì)記錄,便于日后審 核與查詢,并實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)的規(guī)范化錄入、查詢、統(tǒng)計(jì)、打印和存檔等(更詳細(xì) 內(nèi)容請(qǐng)參考Office Anywhere2016 工作流使用詳解)。工作流除了結(jié)合自定 義表單進(jìn)行使用之外,能否被別的模塊、別的系統(tǒng)所調(diào)用呢?答案是肯定的,這 就是16版推出的業(yè)務(wù)流程平臺(tái)所需解決的課題。業(yè)務(wù)流程平臺(tái)提供通用的流程引擎和接口,便于其他系統(tǒng)或模塊去調(diào)用和使 用,以實(shí)現(xiàn)具有工作流或者業(yè)務(wù)流性質(zhì)的事務(wù)或者業(yè)務(wù)功能。這樣其他系統(tǒng)或者 模塊完全不用考慮流程如何去實(shí)現(xiàn),但卻可輕

4、松獲得工作流的先進(jìn)技術(shù)和協(xié)同審 批功能特性。1.2 業(yè)務(wù)流程平臺(tái)的功能特性流程引擎獨(dú)立運(yùn)轉(zhuǎn),與具體業(yè)務(wù)不直接關(guān)聯(lián),高效對(duì)接各種業(yè)務(wù),滿足 多種應(yīng)用場景。獨(dú)立的表單機(jī)制:支持各種自定義表單,也支持其他業(yè)務(wù)系統(tǒng)任意業(yè)務(wù)表單。每個(gè)步驟均可綁定表單,綁定的表單可以相同,可以不同;可以是同一個(gè)系統(tǒng)的,也可以是跨系統(tǒng)的;可以是同一業(yè)務(wù)不同環(huán)節(jié),也可 以是跨業(yè)務(wù)的。開放性:支持與OA其他模塊關(guān)聯(lián),也支持與第三方系統(tǒng)集成整合。安全性:Oauth2授權(quán)認(rèn)證機(jī)制,保障開放性的同時(shí)保障安全性。完備的 流程引擎接口 采用Restful規(guī)范封裝,支持基于OA系統(tǒng)內(nèi)部的開發(fā)調(diào) 用,也支持跨系統(tǒng)間調(diào)用。定制性:支持表單、流

5、程、條件、權(quán)限等定制功能。第2章 業(yè)務(wù)流程平臺(tái)示例應(yīng)用業(yè)務(wù)流程平臺(tái)在操作上與工作流基本一致,但又不盡相同,在學(xué)習(xí)業(yè)務(wù)流程 平臺(tái)之前建議先學(xué)習(xí)Ofice Anywhere2016 工作流使用詳解。16版的車輛使 用申請(qǐng)和公告通知申請(qǐng)已經(jīng)改造為使用業(yè)務(wù)流程平臺(tái)以實(shí)現(xiàn)更加靈活的審批過 程。以下結(jié)合車輛使用申請(qǐng)、公告通知申請(qǐng),具體說明如何使用業(yè)務(wù)流程平臺(tái)。2.1 車輛使用申請(qǐng)車輛使用申請(qǐng)通過業(yè)務(wù)流程平臺(tái)進(jìn)行實(shí)現(xiàn),以下是具體實(shí)現(xiàn)步驟。第一步,進(jìn)入業(yè)務(wù)流程平臺(tái) 工作流設(shè)置,新建【車輛審批流程】。石占芳£<11-tF 訥這塊與工作流基本相同,不同地方是流程基本信息沒有表單這一項(xiàng)。第二步,添加

6、字段分組9 / 35'llTMffV-其中,標(biāo)識(shí)符:由英文字母、數(shù)字以及下劃線組成。描述:分組中文描述信息。類型:分單記錄和多記錄兩種。排序號(hào):確定不同分組的先后順序。停用:是否停用該分組。fin-第三步:字段設(shè)置顯示方式蹣定I養(yǎng)iT|其中,標(biāo)識(shí)符:由英文字母、數(shù)字以及下劃線組成。描述:字段中文描述信息。數(shù)據(jù)類型:分文本、數(shù)值、貨幣、日期、時(shí)間、日期 +時(shí)間,共六種。顯示方式:字段為文本類型時(shí)細(xì)分顯示方式,包含單行輸入、多行輸入、下拉選擇、復(fù)選、單項(xiàng)、附件、圖片、簽章,共八種。是I否。候選項(xiàng),以 I'分割:如果顯示方式為下拉選擇或者單項(xiàng)時(shí),允許指定 候選項(xiàng),不同候選項(xiàng)由“I”分

7、割,如:排序號(hào):確定不同字段的先后順序。停用:是否停用該字段。fnhiL-lt Itiuivl TfthiJH曬!B列M卜啊呻n加竜 IE Uh疔皓閒尸go祁wr-i即iTtt帶 S iirTju tc_Tari單c立T禮 IC dHh5 Jq:- . apT-草厝和1宮fe晅巖剝I*多齊怎tT jp !B.r .-Ihai-jii聞:搭11(7H毘3刑謂匱貢第四步:設(shè)計(jì)流程步驟基本操作與工作流的設(shè)計(jì)流程步驟相同,如下圖。VisitsI -匕fl不同之處是每步驟都需要設(shè)計(jì)表單。車輛申請(qǐng)步驟設(shè)計(jì)的表單為:車鬲冊屏愉直齊苓軾雖:曲酈務(wù) 璽床n蓮呵前® q罰戶世rxi直表明該步驟表單為嵌入

8、車輛申請(qǐng)模塊頁面,其中VU_ID為參數(shù)。部門審批步驟設(shè)計(jì)的表單為:表呼方式 O eww 懣h樺Vim齒-“鼎骼該厲劇&與祈齒我軒詞'樣I氓用表明該步驟采用車輛申請(qǐng)步驟的表單,不單獨(dú)設(shè)置表單。調(diào)度員審批也采用車輛申請(qǐng)步驟的表單:3啟定 eg姍鷹疏再嚴(yán)配肉a*顓側(cè)瞠I囲片怖齒醫(yī)相冋第五步:改造車輛申請(qǐng)模塊的保存操作。車輛申請(qǐng)保存時(shí)通過業(yè)務(wù)平臺(tái)接口創(chuàng)建工作,然后提交給一下步驟,之后將通過業(yè)務(wù)流程平臺(tái)完成車輛申請(qǐng)審批工作。在車輛申請(qǐng)保存成功之后的代碼處包含如下代碼:包含業(yè)務(wù)流程平臺(tái)接口文件include_once ("inc/flow_engine/engine/TFIowE

9、ngine .php");/$i_flowid = TFIowEngine:using_engine("/general/vehicle/usage_detail .php"); /獲取流程id$res = TFlowEngine:new_work($i_flowid);/ if($res"status")/創(chuàng)建成功?/把相關(guān)數(shù)據(jù)傳遞給業(yè)務(wù)流程平臺(tái)創(chuàng)建工作$arr_data"vehicle_grou p.vu_id" = $p arams'VU_ID'$arr_data"vehicle_grou p

10、.vu_prop oser" = $p arams'VU _PROP OSER'$arr_data"vehicle_grou p.vu_ prop oser_name"=td_tnm(GetUserNameByld($ params'VU _PROP OSER')/把參數(shù)傳遞給業(yè)務(wù)流程平臺(tái)$arr_ paras"VU_ID" = $p arams'VU_ID'/保存工作$res2 = TFIowEngine:save_work(false, 1, $i_flowid, $res"data

11、s"flow_run_info"RUN_ID",1, 1, $arr_data, $arr_ paras, NULL, $res"datas""flow_run_info""RUN_NAME","", 0,"")/轉(zhuǎn)交下一步if(res2"status")$res3 = TFlowEngine:turn_work($i_flowid, $res"datas""flow_run_info""RUN_

12、ID", 1, 1);第六步:審批結(jié)果返回給用車申請(qǐng)模塊,這個(gè)通過在相應(yīng)步驟上定義觸發(fā)器進(jìn)行實(shí)現(xiàn)。部門審批定義的觸發(fā)器如下:囹工霑律 FC 背*(!仲1:JBE3丘申戲0占嘩腦自執(zhí)htS恤jS曜說耐:v.eiffl由陰:啊呈汽(轉(zhuǎn)訐耶帀J【往舉粧TJ Hsrj. «.進(jìn)育尸童二,即乍逋嶼刃"用£嚇博語1 3【矗t璟幣】第:眉卄】調(diào)度員審批定義的觸發(fā)器如下:褲節(jié)口岸伊號(hào)負(fù)仃方貳碎SfiS晦?USt1巫門麗lltffl右F牛忌3 1紺單布昌【15花*陌J-'(博卡音齊1-JI和百:J7 ? 11觸發(fā)器更新用車申請(qǐng)的代碼存放路徑為:webroot

13、9;ge neral'a pp rove_ce nter plugi nturninclude_once("inc/flow_engine/engine/TFlowEngine. php");/。主要代碼如下:包含業(yè)務(wù)流程平臺(tái)接口文件$arr_ para = TFlowEngine:get_ para_data($RUN_ID);/從業(yè)務(wù)流程平臺(tái)中讀取參數(shù)$arr_data = TFlowEngine:get_data($RUN_ID);/參數(shù)和數(shù)據(jù)賦值從業(yè)務(wù)流程平臺(tái)中讀取數(shù)據(jù)$vu id=$arr_ para"VU_ID"$vu_sms_rem

14、ind=$arr_data"vehicle_gro up .vu_sms_remind"=_(”是")? 1 : 0;1$arr_data"vehicle_gro up .vu _prop oser"$vu_proposer$arr_data"vehicle_gro up.vu_prop oser":""($arr_data"vehicle_gro up .vu_de pt_app "=_(" $vu_de pt_reason$arr_data"vehicle_gr

15、o up. vu_de pt_reason":""$vu_dept_app= $arr_data"vehicle_group.vu_dept_app"=_("同意")不同意")? 2 : 0);$arr_data"vehicle_gro up .vu_de pt_reason"$vu_ op erator_a pp= $arr_data"vehicle_gro up.vu_op erator_a pp "=_("同意")? 1 : 0;$vu_ op er

16、ator_reason=$arr_data"vehicle_gro up .vu_ op erator_reason"$arr_data"vehicle_gro up.vu_op erator_reason":""if($FLOW_ PRCS = "2") /部門審批處理/把數(shù)據(jù)寫入用車申請(qǐng)模塊$query="up dateDMER_STATUS='$vu_de pt_app ',SHOW_FLAG='$show_flag',DE PT_REASON='$vu_de

17、 pt_reason' VU_ID='$vu_id": exequery(TD:conn(), $query);VEHICLE USAGEsetwhere#/35elseif($FLOW_ PRCS = "3") /調(diào)度人審批處理完成上述步驟后,用車審批就可以通過業(yè)務(wù)流程平臺(tái)進(jìn)行審批。具體操作如下:第一步:行政辦公 車輛申請(qǐng)與安排 車輛使用管理 其他設(shè)置中,開啟車輛審批引擎。第二步:行政辦公車輛申請(qǐng)與安排車輛使用申請(qǐng)中,填寫車輛申請(qǐng)信息,第三步:部門審批人登錄 0A,在業(yè)務(wù)流程平臺(tái)我的工作 待辦工作中,并保存。n?-尸少* 匸-LUG 1-空,Wt

18、r!=-fl Ft叫tarn-匕也話祜衛(wèi) fit£毒*皿"A輛于t痕Ji tRRWfl-* r=:暑G打E 曰UH海祁h*祈.HIT.SIlJ "訴船背忌胡 嗣宦iF*?f可以看到此工作。待辦工作界面:興r斗 J - 試一存1 4A£J-HiiMnTVtlTBr】1 r1 :an «r車uFf|F rf *2i «T呻: " -i i畤qh m-j-9fSik11k ;-iw i1 .4 殆bqr 1f "1.7rtf(Hn KH卜TW” 41-11"ly l1 .星* T. ChWSF凸Ph州113 /

19、 35進(jìn)入工作流辦理界面:會(huì)直接將車輛申請(qǐng)信息直接調(diào)用到表單中,如下圖所示:* -IUKl:然后轉(zhuǎn)交流程,和工作流模塊的普通流程是一樣的,審批人在工作流模塊進(jìn)行審批,也可以在辦車輛使用管理模塊查看該申請(qǐng)。事 垃記*i-iMj書AlonldiUttjiiA1- 4:IF js 曠 1心肝廊聞Il EXIFt峙沖応吊-:yv iri-2嚴(yán)勺jT aifn rvrseufr-m-M ir hsaiE電ni IT 口 小IJ - J"PnZDIfOMI ir :JJE-a?CI 11-:3 刃峠盯;',.>42瞬11= ”涯ei ii li 站NIm也直到流程走完,業(yè)務(wù)流程平臺(tái)

20、通過觸發(fā)器完成對(duì)車輛申請(qǐng)模塊數(shù)據(jù)的同步和更新。2.2 公告通知審批流程公告通知審批流程以公告通知使用申請(qǐng)為例。第一步,進(jìn)入業(yè)務(wù)流程平臺(tái) 工作流設(shè)置,新建【公告通知審批流程】。Ir-門 Rsr«w-滯M*弄第二步,隹?etriPBM 1工添加字段分組A±4U詣毋NL孚理1;.蠱第三步:字段設(shè)置EnfltrfT片中wd字網(wǎng)iSflfrcia賓3!ffixttxtstiriiwnt 1的出畧冇*丹址誦薪wnnr甲節(jié)PH詢肯囲a鬥Ul為血r=iclfitk n p-iHfFrIT Rt _npf iR甲打5r龍說 Sfijii Ef FUatifTrXit 兀=麗t-M節(jié)異軻iH蒂

21、摒w慶notiff. ofuLit ar itosnizt芾異蘋就-研礙ia艸L第四步:設(shè)計(jì)流程步驟基本功能類似于工作的設(shè)計(jì)流程步驟類似。7-公告通知申請(qǐng)表單定義如下:盞巾啟?;,門動(dòng)曙丿醴人期薊1厲11二'皿 Li f -ijrT c_nol lI * 窪心雖I:- :3IC*1F i_LD:逸活色知aA呻怙亡直n第五步:改造新建公告通知的保存模塊,增加以下代碼:獲取流程idinclude_once ("inc/flow_engine/engine/TFIowEngine .php ”);$i_flowid = TFIowEngine:using_engine('7

22、general/notify/show/read_notify .php"); /新建工作if($i_flowid)$res = TFlowEngine:new_work($i_flowid);/ if($res"status")/設(shè)置數(shù)據(jù) $arr_data"notify_grou p.notify_id" = $p arams'NOTIFY_ID'$arr_data"notify_grou p.notify_audite門=$p arams'NOTIFY_AUDITER'/設(shè)置參數(shù) $arr_ pa

23、ras"NOTIFY_ID" = $p arams'NOTIFY_ID'/保存工作 $res2 = TFlowEngine:save_work(false, 1, $i_flowid, $res"datas""flow_run_info""RUN_ID",1, 1, $arr_data, $arr_ paras, NULL, $res"datas""flow_run_info""RUN_NAME","", 0,"

24、;");/轉(zhuǎn)交下一步 if ($res2"status")$res3 = TFIowEngine:turn_work($i_flowid, $res"datas""flow_run_info""RUN_ID", 1, 1);第六步:公告通知審批步驟增加觸發(fā)器:三I菌*m丈奮赴善14扯壬tc啟 O'EMt盤fffe也韻H辭 X白曰-Jli劃孑刪15工-呎PP £1t嫩-空乍-【吏壯比乍17 I £4決IE】的H ,怛三 月三一輕找卡丑? :11=:詞敲尹廬床觸發(fā)器公告通知審批同步

25、主要代碼如下:include_once("inc/flow_engine/engine/TFIowEngine. php");/從業(yè)務(wù)流程平臺(tái)讀取參數(shù)包含業(yè)務(wù)流程平臺(tái)接口文件$arr_ para = TFIowEngine:get_ para_data($RUN_ID);/從業(yè)務(wù)流程平臺(tái)讀取數(shù)據(jù)$arr_data = TFIowEngine:get_data($RUN_ID);/以下同步更新公告通知數(shù)據(jù)$notify_id=intval($arr_ para"NOTIFY_ID");$notify_leader_a pp= $arr_data"

26、notify_gro up.n otify_auditer_a pp "=_("($arr_data"notify_group.notify_leader_app"=_("不同意")? 2 : 0);同意")? 1 :$notify_leader_reason=$arr_data"notify_gro up.n otify_auditer_reason"$cur_date = date("Y-m-d", time(); if($notify_id)if($notify_leader_a

27、 pp = 1)$query="up dateNOTIFYsetP UBLISH='1',AUDITER='".$_SESSION"LOGIN_USER_ID"."',AUDIT_DATE='$cur_date' NOTIFY_ID='$notify_id'"whereexequery(TD:conn(), $query);elseif($notify_leader_a pp = 2)$query"up dateNOTIFYsetP UBLISH=3,AUDIT

28、ER="'.$_SESSION"LOGIN_USER_ID"."',AUDIT_DATE='$cur_date',REASON='$notify_ leader_reason' where NOTIFY_ID='$notify_id'"exequery(TD:conn(), $query);公告通知使用業(yè)務(wù)流程平臺(tái)進(jìn)行審批操作步驟如下:第一步:系統(tǒng)管理行政辦公設(shè)置公告通知設(shè)置開啟審批中心進(jìn)行審批15 / 35turpfl 旳 Aei Ae mi二舌 nuLiSd 曰SWtiE古由追

29、油詩壯丄力*出"1IS再iR匕社a皿-f- h -辛戸甘|護(hù)|»站W(wǎng)ift-niacrtT > < 耳亍W曲些弓矢Z第二步:行政辦公公告通知管理新建公告通知,并保存。21 / 353r:irn”、 ii-雀fts曲說!丄5«*;5塞-jsfirwVEHr.電 tSnWM -f -WKitltUEt旺疋Bibie#THP. EWir-IEIl呻傘匕:'.性bti'小a 弋坦丄4;n* jnuinsiN. I "1-. r- ;-'血弓4trA =F 13拒 1=,.注小刊ET干I I ,. , 了/戸直上酌訐壯上耳辭二可

30、門皿門?型勺F丫'廬鬥T召刃廠匸融:-"呼斶工邛trL:!::.冊.tjfti l|E IP - err 億i ” 巳製(11; " I zfSj邱昨 1 f I咤呼 ;." a!*3 ii 1 凈-3二 g,”處.證vii-i-i * : . "一1 c!.-'E;JE a-w-TdtiisL-/'. Br "起也豉廣.i“雋宀,心處吃汕'竝 >* 丑您甌*貯卻冏*?匕!嘯? 丫MA斗価&1方rt:M: Uh.門i n;口訂苛-*«! mp-uTFltTv" ' h.r

31、ijSirciin®t- ” 匹SS&誦(T耳TS«t卞 >1弱尸忙洛a你產(chǎn)fflk疋甲磚y世H 評(píng)¥ 1匸戸巧口閃五|(1審將嗚|r右:弄q腐.飛尊"N輛 5 ITT 訂 m,也盯tH二瞬江3鼠矽站二二需亞1孔血喧T:n以第三部:部門審批人登錄0A,在業(yè)務(wù)流程平臺(tái)我的工作待辦工作中,可以看到此工作。待辦工作界面:a*FWliV:制 BOH:亍mIIIEthil 昕B呻 BUC-Of B :- n 尺 Itirlm4l9iAfciPk»P"ZT;riIM I -irrw rS th-tnJ-XJ I Itfijt沖M.-

32、;5 $I!曲邨4*WBf今=£. .; . .叮葉護(hù)ENT-曙F;壯齡* Hlrt* arsAcapci " t? l+ -afii質(zhì)辺陀"裁口*IlltC.4*T111*:« >1:門耀*.辛怦h ; =. 1q Kt沖*=r1£悴刁錄=> *'41川卻*“,S4t. JlLiP*一 Ti ;二:ttJllTHn進(jìn)入工作流辦理界面:會(huì)直接將公告通知的內(nèi)容直接調(diào)用到表單中,如下圖所示:h. idSIHAftiWCMre-a ix 屈迪-a* ' AVtUHAlbra'llTTV ! m 碑和 KV*Jr.*

33、"卻-工"| J二騒*巧尸產(chǎn)降工習(xí)/三之京妊*噩|即4總雖如=1*盲3斗王|卜、耳卅訊豈.n"- 口*<"戶心沖±.4£ 也"斗_ I- :!:.=匾茁氣i:i斗片:“厶,F(xiàn)u-atnr BF二"w i-i- 背rf平屯- 牛.丁“BriMrWtet : flTN F點(diǎn)Nf匸卯n-' WT.IT A *Hirf . 'i 卻卡手=-t tlP刊呵FWtl鬲亦S. #曲債旱muXSK哥1IMI喬譯和胡口 :* MilTie債盧晰石匸n-"-Ji吐3 icTfli-*甲片址-加廿叱.圧奇

34、Etr*廠舌哉窪:吒"碎丁耳屮用:*a;監(jiān)"=rEr>fl. "EM宙二二(*牙£口.”豪盯丹拿工丟心巨.ihXT丁丘亍報(bào)"珈1輯 ”潘i可貶-» "Lia II 目石邛 L預(yù)圍臨;二.i直干3 I:-wR A - rt- -褲JFP乖版瓷ET菇舛缺5:. Ef»3K7*r然后轉(zhuǎn)交流程,和工作流模塊的普通流程是一樣的,審批人在工作流模HA 電»L1塊進(jìn)行審批,也可以在辦車輛使用管理模塊查看該申請(qǐng)。USB »iy|IIT k I:ItJt-直到流程走完,由業(yè)務(wù)流程平臺(tái)通過步驟觸發(fā)器完成對(duì)公告

35、通知模塊數(shù)據(jù)的同步更新。第3章 業(yè)務(wù)流程平臺(tái)Restful接口3.1名詞解釋REST(英文:Representational State Transfer,簡稱REST描述了一個(gè)架構(gòu)樣式的網(wǎng)絡(luò)系統(tǒng),比如 web應(yīng)用程序。在目前主流的三種 Web服務(wù)交互方案中,REST相比于 SOAP(Simple Object Access protocol,簡單對(duì)象訪問協(xié)議)以及XML-RPC更加簡單明了,無論是對(duì)URL的處理還是對(duì)P ayload 的編碼,REST都傾向于用更加簡單輕量的方法設(shè)計(jì)和實(shí)現(xiàn)。值得注意的是REST并沒有一個(gè)明確的標(biāo)準(zhǔn),而更像是一種設(shè)計(jì)的風(fēng)格。REST指的是一組架構(gòu)約束條件和原則。

36、滿足這些約束條件和原則的應(yīng)用程序或設(shè)計(jì)就是RESTful。Web應(yīng)用程序最重要的REST原則是,客戶端和服務(wù)器之間的交互在請(qǐng)求之間是無狀態(tài)的。從客戶端到服務(wù)器的每個(gè)請(qǐng)求都必須包含理解請(qǐng)求所必需的信息。在服務(wù)器端,應(yīng)用程序狀態(tài)和功能可以分為各種資源。每個(gè)資源都使用UR(Uni versal Resource Ide ntifier)得到一個(gè)唯一的地址。所有資源都共享統(tǒng)一的接口,以便在客戶端和服務(wù)器之間傳輸狀態(tài)。使用的是標(biāo)準(zhǔn)的HTT P方法,比 如 GET PUT POST和 DELETE通達(dá)OA2O16版BPM流程引擎接口采取RESTful原則進(jìn)行設(shè)計(jì)和封裝。3.2 OAUTH2A證在訪問BPM

37、接口之前,需要通過 OAUTH2認(rèn)證獲得訪問令牌。在令牌有效期內(nèi),可以通過令牌訪問BPM接口。3.2.1注冊外部應(yīng)用登陸通達(dá)OA,然后依次訪問【系統(tǒng)管理】 【注冊外部應(yīng)用】,進(jìn)入注冊外部應(yīng)用模塊,如下圖:ME本模塊屬于2016版新增功能,如果看不到此菜單請(qǐng)先到【角色與權(quán)限管理】 模塊分配權(quán)限。注冊外部應(yīng)用時(shí)需要提供應(yīng)用名稱、描述、應(yīng)用地址、認(rèn)證回調(diào)地址等信息,如下圖:應(yīng)用地址:jQLttpr-Vli;. 0.0. 1/如M切:/127. 0. 0" 1 /fran-d. pbp注冊 返回外部應(yīng)用注冊成功之后,將生成 client_id和client_secret,如下圖:應(yīng)境地ibM

38、 index, php認(rèn)證E調(diào)地址:-resTtEt/frant, phpclient idOXGCL BJ SPKi GKYC 肝 BLIL TEQ2 OMW&OcLi»Tit_SwC r-iTSla&;3£2S4ba712e7eIb2oS'002335S5'l322獲取訪問令牌接口: POST http:/ 通達(dá) OA 地址/oauth2/token參數(shù):“ grant_type ” :“ password ”“ client_id:client_id,“ client_secret“ user name ” :aI 力p assword

39、:其中 client_id、” :base64_encode(AES(client_secret,client_secret),:user name,:p asswordclient_secret為通過2.1章節(jié)注冊獲得,clie nt_secret 要用 clie nt_secret作為密碼進(jìn)行AES加密并取BASE64編碼,參數(shù) user name、p assword 未用,直接用默認(rèn)值 user name、p assword 即可。返回:如果授權(quán)成功,HTTP狀態(tài)碼為200,并返回如下JSON "access_toke n":code, "ex pires_

40、in": sec, "toke n_typ e": "bearer", "refresh_toke n":"code"令牌有效期默認(rèn)為20分鐘,即expires_in為 120sec 。如果授權(quán)失敗,HTTP狀態(tài)碼不為200,并返回如下JSON:"error":"in valid_clie nt","error_descri pti on": "The clie nt crede ntials are in valid"舉例:

41、$Server一 H.$Works pace = 'TD_OA'fun cti on p mRestLog in( $clie ntId, $clie ntSecret, $user name, $p assword) global $Server, $Works pace;$p ost Params = array('gra nt_type'=> 'p assword','clie nt_id'=> $clie ntid, 'clie nt_secret' => base64_e ncode(A

42、ES($clie ntSecret,$clie ntSecret),'user name' => $user name,=> $p assword'p assword');$ch = curl_i nit("$Server/$Works pace/oauth2/toke n");curl_set op t($ch, CURL OP T_TIMEOUT, 30);curl_set op t($ch, CURL OPT_P OST, 1);curl_set op t($ch, CURL OPT_P OSTFIELDS, $p ost

43、Params); curl_set op t($ch, CURL OP T_RETURNTRANSFER, true); $oToke n = json _decode(curl_exec($ch);$htt pStatus = curl_geti nfo($ch, CURLINFO_HTT P_CODE); curl_close($ch);if ($htt pStatus != 200) pri nt "Error in HTT P status code: $htt pStatus'n" return n ull; elseif (isset($oToke n-

44、>error) p ri nt "Error logg ing into $p mServer: n"."Error:$oToke n->errorn"."Descri pti on: $oToke n->error_descri pti onn" else setcookie("access_toke n", $oToke n->access_toke n, time() + 86400);setcookie("refresh_toke n", $oToke n->

45、; refresh_toke n); /refresh toke n does n't expire setcookie("clie nt_id",$clie ntid);setcookie("clie nt_secret", $clie ntSecret);return $oToke n;調(diào)用方法:II IIp mRestLogi n( "OXGCLBXS PKTUIKYONBBULTEQZOWVNWGQ8156738284ba71287e16258002385851 ","user name",&quo

46、t; password");返回如下:"clie nt_id":"OXGCLBXS PKTUIKYONBBULTEQZOWVNWGQ","clie nt_secret":" 8156738284ba71287e16258002385851","access_toke rr:"629d3d061c19a76d4ef 728e8a2c9d89a4088cd9e","ex pires_i n":120,"token_ty pe":"

47、bearer","sco pe" :"*","refresh_toke n":"ebdb9e6dc81a7e56c44eaec945c7f56c5bd03744"3.2.3重新獲取訪問令牌令牌有時(shí)效性,調(diào)用接口返回的 HTTP狀態(tài)碼不為200,并返回如下JSON: "error":"in valid_clie nt","error_descn ptio n":"Theclie nt crede ntials are inv alid&q

48、uot;表明令牌已經(jīng)失效,需要重新獲取。接口: post http:OA地址/oauth2/token參數(shù):“ grand_type ” : ” refresh_token”,“ client_id” :client_id,“ client_secret” : base64_encode(AES(client_secret,client_secret),“ refresh_token” :refresh_token結(jié)果:如果獲得成功,HTTP狀態(tài)碼為200,并返回如下JSON"access_toke n":code,"ex pires_in": sec,

49、"token_typ e": "bearer"如果獲得失敗,HTTP狀態(tài)碼不為200,并返回如下JSON:"error":"in valid_clie nt","error_descri pti on": "The clie nt crede ntials are in valid"3.3 流程引擎接口3.3.1獲取業(yè)務(wù)模塊綁定的流程ID接口: GET http:/OA 地址/restapi/1_0/works/usingbpm參數(shù):url:url,/模塊地址flow_ pr

50、cs:flow_ pres/ 設(shè)計(jì)步驟號(hào)結(jié)果:如果調(diào)用成功,HTTP狀態(tài)碼為200,并返回業(yè)務(wù)綁定的流程ID (流程ID為0時(shí),表明未綁定流程)。如果調(diào)用失敗,HTTP狀態(tài)碼不為200,并返回如下JSON"error":"40","error_descri pti on":""舉例:$ap iServer =""OA地址$_COOKIE'access_toke n'$accessToke n=isset($_COOKIE'access_toke n')getAcc

51、essToken();/ 訪問令牌$postP arams = array("url"=>"/ge neral/vehicle/new. php ","flow_ prcs"=>1);$ch = curl_ in it($a piServer . "/resta pi/1_0/works/us ingbpm");curl_seto pt($ch, CURL OP T_HTT PHEADER, array("Authorizati on: Bearer $accessToke n");

52、curl_set op t($ch, CURL OP T_RETURNTRANSFER, true);curl_seto pt($ch, CURL OP T_CUSTOMREQUEST, "GET");curl_seto pt($ch, CURL OPT_P OSTFIELDS, http_build_query($ post Params);$oResult = json _decode(curl_exec($ch);$statusCode = curl_geti nfo($ch, CURLINFO_HTTP_CODE);if (isset($oResult) and i

53、sset($oResult->error) print"錯(cuò)誤:n Code:$oResult->error->messagen"elseif (isset($oResult) and $oResult > 0) print "'/general/vehicle/new.php'綁定的流程 ID 為:$oResult n"else print "HTTP 狀態(tài)碼:$statusCoden"curl_close($ch);$oResult->error->codenM essage:33

54、2獲取工作流水號(hào)接口: GEThttp:/OA 地址/restapi/1_0/works/runid25 / 35參數(shù):flow_id:flow_id/ 流程 IDflow_ prcs:flow_ pres,/ 流程設(shè)計(jì)步驟號(hào)arr_para:arr_para/參數(shù)鍵值對(duì)數(shù)組結(jié)果:如果調(diào)用成功,HTTP狀態(tài)碼為200 ,并返回業(yè)務(wù)對(duì)應(yīng)的工作流水號(hào)。 如果調(diào)用失敗,HTTP狀態(tài)碼不為200,并返回如下JSON"error":"41","error_descri pti on":""3.3.3獲取參數(shù)數(shù)據(jù)接口: GET

55、http:/OA 地址/restapi/1_0/works/paradata參數(shù):run_id:run_id/ 工作流水號(hào)結(jié)果:如果調(diào)用成功,HTTP狀態(tài)碼為200 ,并返回參數(shù)數(shù)據(jù)數(shù)組。如果調(diào)用失敗,HTTP狀態(tài)碼不為200,并返回如下JSON"error":"42","error_descri pti on":""3.3.4獲取數(shù)據(jù)接口: GET http:/OA地址/restapi/1_0/works/data參數(shù):run_id:run_id/ 工作流水號(hào)結(jié)果:如果調(diào)用成功,HTTP狀態(tài)碼為200,并返回?cái)?shù)據(jù)

56、數(shù)組。如果調(diào)用失敗,HTTP狀態(tài)碼不為200,并返回如下JSON"error":"42","error_descri pti on3.3.5新建工作接口: P OSThtt p:/OA 地址/resta pi/1_0/works/new參數(shù):flow_id:flow_id,/ 流程 IDarr_useri nfo:arr_useri nfo/arr_useri nfo=>"LOGIN_USER_ID"=>"","LOGIN_USER_NAM E"=>"","logIN_DE PT_ID"=>"","LOGIN_USER _P RIV"=>"","LOGIN_DE PT_ID_OTHER"=>"","LOGIN_U SER_ PRIV_OTHER"=>"“結(jié)果:如果獲得成功,HTTP狀態(tài)碼為 200,并返回如下 JSON“status ” :1, “datas ”:“ flow info”:/流程信息,參考通達(dá)OA數(shù)據(jù)字典,“ flow_ pr oc

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論