




免费预览已结束,剩余30页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Office Anywhere 2016业务流程平台详解目录业务流程平台详解 . 1第 1 章1.11.2第 2 章2.12.2第 3 章3.13.2什么是业务流程平台 . 1业务流程平台的用途 . 1业务流程平台的功能特性 . 1业务流程平台示例应用 . 2车辆使用申请 . 2公告通知审批流程 . 8业务流程平台 Restful 接口. 13名词解释 . 13OAUTH2 认证 . 143.2.1 注册外部应用 . 143.2.2 获取访问令牌 . 153.2.3 重新获取访问令牌 . 173.3流程引擎接口 . 173.3.1 获取业务模块绑定的流程 ID . 173.3.2 获取工作流水号 . 183.3.3 获取参数数据 . 193.3.4 获取数据 . 193.3.5 新建工作 . 203.3.6 办理工作 . 203.3.7 获得下一步办理节点 . 213.3.8 工作保存 . 223.3.9 工作提交 . 233.3.10 一键转交 . 243.3.11 工作委托 . 253.3.12 获取退回节点 . 253.3.13 工作退回 . 26第 4 章4.14.2业务流程平台接口 . 26获取业务模块绑定的流程 ID . 27获取工作流水号 . 214.124.13获取参数 . 27获取数据 . 27新建工作 . 28办理工作 . 28办理工作 . 29获得下一步办理节点 . 29工作提交 . 30一键转交 . 31工作委托 . 31获得退回节点 . 31工作退回 . 32第1章 什么是业务流程平台1.1业务流程平台的用途工作流是通达 OA 的核心模块,也是广大用户使用最为频繁的模块之一。“自定义表单”+“自定义流程”的模式广泛应用于各行各业各类业务的申请、审批、会签、登记、操作等环节的管理,将协同工作的过程进行详细记录,便于日后审核与查询,并实现业务数据的规范化录入、查询、统计、打印和存档等(更详细内容请参考Office Anywhere2016 工作流使用详解)。工作流除了结合自定义表单进行使用之外,能否被别的模块、别的系统所调用呢?答案是肯定的,这就是 16 版推出的业务流程平台所需解决的课题。业务流程平台提供通用的流程引擎和接口,便于其他系统或模块去调用和使用,以实现具有工作流或者业务流性质的事务或者业务功能。这样其他系统或者模块完全不用考虑流程如何去实现,但却可轻松获得工作流的先进技术和协同审批功能特性。1.2业务流程平台的功能特性l 流程引擎独立运转,与具体业务不直接关联,高效对接各种业务,满足多种应用场景。l 独立的表单机制:支持各种自定义表单,也支持其他业务系统任意业务表单。每个步骤均可绑定表单,绑定的表单可以相同,可以不同;可以是同一个系统的,也可以是跨系统的;可以是同一业务不同环节,也可以是跨业务的。l 开放性:支持与 OA 其他模块关联,也支持与第三方系统集成整合。l 安全性:Oauth2 授权认证机制,保障开放性的同时保障安全性。完备的流程引擎接口 采用 Restful 规范封装,支持基于 OA 系统内部的开发调用,也支持跨系统间调用。l 定制性:支持表单、流程、条件、权限等定制功能。1 / 35第2章 业务流程平台示例应用业务流程平台在操作上与工作流基本一致,但又不尽相同,在学习业务流程平台之前建议先学习Office Anywhere2016 工作流使用详解。16 版的车辆使用申请和公告通知申请已经改造为使用业务流程平台以实现更加灵活的审批过程。以下结合车辆使用申请、公告通知申请,具体说明如何使用业务流程平台。2.1车辆使用申请车辆使用申请通过业务流程平台进行实现,以下是具体实现步骤。第一步,进入业务流程平台工作流设置,新建【车辆审批流程】。这块与工作流基本相同,不同地方是流程基本信息没有表单这一项。第二步,添加字段分组2 / 35其中,标识符:由英文字母、数字以及下划线组成。描述:分组中文描述信息。类型:分单记录和多记录两种。排序号:确定不同分组的先后顺序。停用:是否停用该分组。第三步:字段设置3 / 35其中,标识符:由英文字母、数字以及下划线组成。描述:字段中文描述信息。数据类型:分文本、数值、货币、日期、时间、日期+时间,共六种。显示方式:字段为文本类型时细分显示方式,包含单行输入、多行输入、下拉选择、复选、单项、附件、图片、签章,共八种。候选项,以|分割:如果显示方式为下拉选择或者单项时,允许指定候选项,不同候选项由“|”分割,如:是|否。排序号:确定不同字段的先后顺序。停用:是否停用该字段。第四步:设计流程步骤基本操作与工作流的设计流程步骤相同,如下图。4 / 35不同之处是每步骤都需要设计表单。车辆申请步骤设计的表单为:表明该步骤表单为嵌入车辆申请模块页面,其中VU_ID为参数。部门审批步骤设计的表单为:表明该步骤采用车辆申请步骤的表单,不单独设置表单。调度员审批也采用车辆申请步骤的表单:第五步:改造车辆申请模块的保存操作。车辆申请保存时通过业务平台接口创建工作,然后提交给一下步骤,之后将通过业务流程平台完成车辆申请审批工作。在车辆申请保存成功之后的代码处包含如下代码:include_once (inc/flow_engine/engine/TFlowEngine.php);/包含业务流程平台接口文件$i_flowid = TFlowEngine:using_engine(/general/vehicle/usage_detail.php); /获取流程 id5 / 35$res = TFlowEngine:new_work($i_flowid);/创建工作if($resstatus)/创建成功?/把相关数据传递给业务流程平台$arr_datavehicle_group.vu_id = $paramsVU_ID;$arr_datavehicle_group.vu_proposer = $paramsVU_PROPOSER;$arr_datavehicle_group.vu_proposer_name=td_trim(GetUserNameById($paramsVU_PROPOSER)/把参数传递给业务流程平台$arr_parasVU_ID = $paramsVU_ID;/保存工作$res2 = TFlowEngine:save_work(false, 1, $i_flowid, $resdatasflow_run_infoRUN_ID,1, 1, $arr_data, $arr_paras, NULL, $resdatasflow_run_infoRUN_NAME, 0, );/转交下一步if(res2status)$res3 = TFlowEngine:turn_work($i_flowid, $resdatasflow_run_infoRUN_ID, 1, 1);第六步:审批结果返回给用车申请模块,这个通过在相应步骤上定义触发器进行实现。部门审批定义的触发器如下:调度员审批定义的触发器如下:触发器更新用车申请的代码存放路径为:webrootgeneralapprove_centerpluginturn。主要代码如下:include_once(inc/flow_engine/engine/TFlowEngine.php);/包含业务流程平台接口文件$arr_para = TFlowEngine:get_para_data($RUN_ID);/从业务流程平台中读取参数$arr_data = TFlowEngine:get_data($RUN_ID);/从业务流程平台中读取数据/参数和数据赋值$vu_id$vu_sms_remind= $arr_paraVU_ID;= $arr_datavehicle_group.vu_sms_remind=_(是) ? 1 : 0;6 / 35$vu_proposer=$arr_datavehicle_group.vu_proposer?$arr_datavehicle_group.vu_proposer : ;$vu_dept_app=$arr_datavehicle_group.vu_dept_app=_( 同 意 )?1:($arr_datavehicle_group.vu_dept_app=_(不同意) ? 2 : 0);$vu_dept_reason=$arr_datavehicle_group.vu_dept_reason?$arr_datavehicle_group.vu_dept_reason : ;$vu_operator_app= $arr_datavehicle_group.vu_operator_app=_(同意) ? 1 : 0;$vu_operator_reason=$arr_datavehicle_group.vu_operator_reason?$arr_datavehicle_group.vu_operator_reason : ;if($FLOW_PRCS = 2) /部门审批处理/把数据写入用车申请模块$query=updateVEHICLE_USAGEsetDMER_STATUS=$vu_dept_app,SHOW_FLAG=$show_flag,DEPT_REASON=$vu_dept_reasonwhereVU_ID=$vu_id;exequery(TD:conn(), $query);elseif($FLOW_PRCS = 3) /调度人审批处理完成上述步骤后,用车审批就可以通过业务流程平台进行审批。具体操作如下:第一步:行政办公车辆申请与安排车辆使用管理其他设置中,开启车辆审批引擎。第二步:行政办公车辆申请与安排车辆使用申请中,填写车辆申请信息,并保存。第三步:部门审批人登录 OA,在业务流程平台我的工作待办工作中,7 / 35可以看到此工作。待办工作界面:进入工作流办理界面:会直接将车辆申请信息直接调用到表单中,如下图所示:然后转交流程,和工作流模块的普通流程是一样的,审批人在工作流模块进行审批,也可以在办车辆使用管理模块查看该申请。直到流程走完,业务流程平台通过触发器完成对车辆申请模块数据的同步和更新。2.2公告通知审批流程公告通知审批流程以公告通知使用申请为例。第一步,进入业务流程平台工作流设置,新建【公告通知审批流程】。8 / 35第二步,添加字段分组第三步:字段设置第四步:设计流程步骤基本功能类似于工作的设计流程步骤类似。9 / 35公告通知申请表单定义如下:第五步:改造新建公告通知的保存模块,增加以下代码:include_once (inc/flow_engine/engine/TFlowEngine.php);$i_flowid = TFlowEngine:using_engine(/general/notify/show/read_notify.php); /获取流程 idif($i_flowid)$res = TFlowEngine:new_work($i_flowid);/新建工作if($resstatus)/设置数据$arr_datanotify_group.notify_id = $paramsNOTIFY_ID;$arr_datanotify_group.notify_auditer = $paramsNOTIFY_AUDITER;/设置参数$arr_parasNOTIFY_ID = $paramsNOTIFY_ID;/保存工作$res2 = TFlowEngine:save_work(false, 1, $i_flowid, $resdatasflow_run_infoRUN_ID,1, 1, $arr_data, $arr_paras, NULL, $resdatasflow_run_infoRUN_NAME, 0, );/转交下一步if ($res2status)$res3 = TFlowEngine:turn_work($i_flowid, $resdatasflow_run_infoRUN_ID, 1, 1);第六步:公告通知审批步骤增加触发器:10 / 35触发器公告通知审批同步主要代码如下:include_once(inc/flow_engine/engine/TFlowEngine.php);/包含业务流程平台接口文件/从业务流程平台读取参数$arr_para = TFlowEngine:get_para_data($RUN_ID);/从业务流程平台读取数据$arr_data = TFlowEngine:get_data($RUN_ID);/以下同步更新公告通知数据$notify_id$notify_leader_app= intval($arr_paraNOTIFY_ID);= $arr_datanotify_group.notify_auditer_app=_( 同 意 ) ? 1 :($arr_datanotify_group.notify_leader_app=_(不同意) ? 2 : 0);$notify_leader_reason= $arr_datanotify_group.notify_auditer_reason;$cur_date = date(Y-m-d, time();if($notify_id)if($notify_leader_app = 1)$query=updateNOTIFYsetPUBLISH=1,AUDITER=.$_SESSIONLOGIN_USER_ID.,AUDIT_DATE=$cur_dateNOTIFY_ID=$notify_id;exequery(TD:conn(), $query);elseif($notify_leader_app = 2)where$query=updateNOTIFYsetPUBLISH=3,AUDITER=.$_SESSIONLOGIN_USER_ID.,AUDIT_DATE=$cur_date,REASON=$notify_leader_reason where NOTIFY_ID=$notify_id;exequery(TD:conn(), $query);公告通知使用业务流程平台进行审批操作步骤如下:第一步:系统管理行政办公设置公告通知设置开启审批中心进行审批11 / 35第二步:行政办公公告通知管理 新建公告通知,并保存。第三部:部门审批人登录 OA,在业务流程平台我的工作待办工作中,可以看到此工作。待办工作界面:进入工作流办理界面:会直接将公告通知的内容直接调用到表单中,如下图所示:12 / 35然后转交流程,和工作流模块的普通流程是一样的,审批人在工作流模块进行审批,也可以在办车辆使用管理模块查看该申请。直到流程走完,由业务流程平台通过步骤触发器完成对公告通知模块数据的同步更新。第3章 业务流程平台 Restful 接口3.1名词解释REST(英文:Representational State Transfer,简称 REST)描述了一个架构样式的网络系统,比如 web 应用程序。在目前主流的三种 Web 服务交互方案中,REST 相比于 SOAP(Simple Object Access protocol,简单对象访问协议)以及 XML-RPC 更加简单明了,无论是对 URL 的处理还是对 Payload 的编码,REST都倾向于用更加简单轻量的方法设计和实现。值得注意的是 REST 并没有一个明确的标准,而更像是一种设计的风格。REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。13 / 35在服务器端,应用程序状态和功能可以分为各种资源。每个资源都使用 URI(Universal Resource Identifier) 得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、PUT、POST 和 DELETE。通达 OA2016 版 BPM 流程引擎接口采取 RESTful 原则进行设计和封装。3.2OAUTH2 认证在访问 BPM 接口之前,需要通过 OAUTH2 认证获得访问令牌。在令牌有效期内,可以通过令牌访问 BPM 接口。3.2.1 注册外部应用登陆通达 OA,然后依次访问【系统管理】【注册外部应用】,进入注册外部应用模块,如下图:本模块属于 2016 版新增功能,如果看不到此菜单请先到【角色与权限管理】模块分配权限。注册外部应用时需要提供应用名称、描述、应用地址、认证回调地址等信息,如下图:14 / 35外部应用注册成功之后,将生成 client_id 和 client_secret,如下图:3.2.2 获取访问令牌接口:POST http:/通达 OA 地址/oauth2/token参数:“grant_type”: “password”,“client_id”:client_id,“client_secret”: base64_encode(AES(client_secret,client_secret),“username”:username,“password”:password其 中 client_id 、 client_secret 为 通 过 2.1 章 节 注 册 获 得 , 传 输client_secret 要用 client_secret 作为密码进行 AES 加密并取 BASE64 编码,参数 username、password 未用,直接用默认值 username、password 即可。返回:如果授权成功,HTTP 状态码为 200,并返回如下 JSON:access_token:code,expires_in: sec,token_type: bearer,refresh_token:code令牌有效期默认为 20 分钟,即 expires_in 为 120sec。如果授权失败,HTTP 状态码不为 200,并返回如下 JSON:15 / 35error:invalid_client,error_description: The client credentials are invalid举例:$Server= http:/myoa;$Workspace = TD_OA;function pmRestLogin($clientId, $clientSecret, $username, $password) global $Server, $Workspace;$postParams = array(grant_typeclient_id= password,= $clientId,client_secret = base64_encode(AES($clientSecret,$clientSecret),usernamepassword= $username,= $password);$ch = curl_init($Server/$Workspace/oauth2/token);curl_setopt($ch, CURLOPT_TIMEOUT, 30);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $postParams);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$oToken = json_decode(curl_exec($ch);$httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);curl_close($ch);if ($httpStatus != 200) print Error in HTTP status code: $httpStatusn;return null; elseif (isset($oToken-error) print Error logging into $pmServer:n .Error:$oToken-errorn .Description: $oToken-error_descriptionn; else setcookie(access_token, $oToken-access_token, time() + 86400);setcookie(refresh_token, $oToken-refresh_token); /refresh token doesnt expiresetcookie(client_id,$clientId);setcookie(client_secret, $clientSecret);return $oToken;调用方法:pmRestLogin(OXGCLBXSPKTUIKYONBBULTEQZOWVNWGQ8156738284ba71287e16258002385851 ,username,password);返回如下:16 / 35,client_id:OXGCLBXSPKTUIKYONBBULTEQZOWVNWGQ,client_secret:8156738284ba71287e16258002385851,access_token:629d3d061c19a76d4ef728e8a2c9d89a4088cd9e,expires_in:120,token_type:bearer,scope:*,refresh_token:ebdb9e6dc81a7e56c44eaec945c7f56c5bd037443.2.3 重新获取访问令牌令牌有时效性,调用接口返回的 HTTP 状态码不为 200,并返回如下 JSON:error:invalid_client,error_description:Theclient credentials are invalid表明令牌已经失效,需要重新获取。接口:post http:/OA 地址/oauth2/token参数:“grand_type”:”refresh_token”,“client_id”:client_id,“client_secret”: base64_encode(AES(client_secret,client_secret),“refresh_token”:refresh_token结果:如果获得成功,HTTP 状态码为 200,并返回如下 JSON:access_token:code,expires_in: sec,token_type: bearer如果获得失败,HTTP 状态码不为 200,并返回如下 JSON:error:invalid_client,error_description: The client credentials are invalid3.3流程引擎接口3.3.1 获取业务模块绑定的流程 ID接口:GET http:/OA 地址/restapi/1_0/works/usingbpm17 / 35参数:url:url,/模块地址flow_prcs:flow_prcs/设计步骤号结果:如果调用成功,HTTP 状态码为 200,并返回业务绑定的流程 ID(流程 ID 为 0 时,表明未绑定流程)。如果调用失败,HTTP 状态码不为 200,并返回如下 JSON:error:40,error_description: 举例:$apiServer = ;/OA 地址$accessToken = isset($_COOKIEaccess_token) ? $_COOKIEaccess_tokengetAccessToken();/访问令牌$postParams = array(url=/general/vehicle/new.php ,flow_prcs=1);$ch = curl_init($apiServer . /restapi/1_0/works/usingbpm);curl_setopt($ch, CURLOPT_HTTPHEADER, array(Authorization: Bearer $accessToken);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, GET);curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postParams);$oResult = json_decode(curl_exec($ch);$statusCode = curl_getinfo($ch, CURLINFO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新能源电池隔板加工制造项目施工方案
- 土石方工程设备使用与管理方案
- 超高纯电子级气体生产建设项目建设工程方案
- xx市城乡供水安全保障一体化项目技术方案
- 冷冻法施工组织设计
- 中心城区地下管网改造项目节能评估报告
- 2025年新生入学考核题库及答案
- 老旧供水管网改造工程节能评估报告
- 跨区域口腔医院医生聘用及人才培养协议
- 离婚二次起诉书:共同债务清偿与财产分割协议
- 道教学院考试试题2025及答案
- 征迁岗位笔试题目及答案
- 共用道路纠纷协议书
- DB34T 5137-2025电化学储能液冷系统设计技术要求
- 食品免责协议书
- 25Hz相敏轨道电路系统配套器材一60课件
- 风力发电机组的建模与仿真技术研究
- DB44-T 1661-2021 河道管理范围内建设项目技术规程
- 驾考宝典三力测试考试试题及答案
- 中医护理实践中的伦理问题研究
- 骨科围手术期的护理流程
评论
0/150
提交评论