PRIMETON TECHNOLOGIES, LTD. 上 海 普 元 信 息 技 术 有 限 责 任 公 司 BPS6.0 Web 服 务 集 成 和 短 流 程 使 用 手 册 2009-9-1 第 1 页 共 16 页
目 录 1 Web 服 务 集 成... 3 1.1 Web 服 务 简 述... 3 1.2 在 BPS 中 使 用 Web 服 务 功 能... 3 1.2.1 使 用 Web 服 务 活 动 的 步 骤... 3 1.2.2 生 成 Java Stub 调 用 Web 服 务... 10 1.3 BPS 支 持 的 Web 服 务 的 WSDL 技 术 规 格... 14 2 短 流 程... 14 2.1 短 流 程 简 述... 14 2.2 如 何 在 BPS 中 使 用 短 流 程... 15 2.3 短 流 程 配 置 管 理... 15 第 2 页 共 16 页
1 Web 服 务 集 成 1.1 Web 服 务 简 述 Web 服 务 是 一 种 面 向 服 务 的 架 构 的 技 术, 通 过 标 准 的 Web 协 议 提 供 服 务, 目 的 是 保 证 不 同 平 台 的 应 用 服 务 可 以 互 操 作 根 据 W3C 的 定 义,Web 服 务 (Web service) 应 当 是 一 个 软 件 系 统, 用 以 支 持 网 络 间 不 同 机 器 的 互 动 操 作 网 络 服 务 通 常 是 许 多 应 用 程 序 接 口 (API) 所 组 成 的, 它 们 通 过 网 络, 例 如 国 际 互 联 网 (Internet) 的 远 程 服 务 器 端, 执 行 客 户 所 提 交 服 务 的 请 求 近 年 来,Web 服 务 在 企 业 间 的 集 成 和 企 业 内 的 应 用 集 成 中 起 着 越 来 越 重 要 的 作 用 1.2 在 BPS 中 使 用 Web 服 务 功 能 在 BPS6.0 SP2 中 增 加 了 对 Web 服 务 的 直 接 支 持 用 户 可 以 通 过 图 形 化 的 方 式 实 现 服 务 编 制, 轻 松 支 持 跨 系 统 的 WEB 服 务 调 用, 很 方 便 地 实 现 应 用 间 的 集 成 BPS 对 Web 服 务 提 供 两 种 支 持 第 一, 支 持 Web 服 务 活 动 ; 第 二 通 过 WSDL 生 成 Web 服 务 调 用 的 客 户 端 JAVA 代 码 1.2.1 使 用 Web 服 务 活 动 的 步 骤 1.2.1.1 导 入 WSDL 文 件 在 项 目 资 源 管 理 器 视 图 中 右 键 点 击 包 节 点 或 项 目 节 点, 选 择 导 入 WSDL 菜 单, 打 开 导 入 WSDL 文 件 向 导 : 第 3 页 共 16 页
选 择 要 导 入 的 WSDL 文 件 存 放 的 包 路 径, 输 入 WSDL 文 件 地 址, 地 址 可 以 是 本 地 文 件 路 径, 也 可 以 是 http 远 程 URL, 也 可 以 点 击 浏 览 按 钮 选 择 本 地 WSDL 文 件 (WSDL 地 址 为 本 地 文 件 路 径 的 情 况 ) 第 4 页 共 16 页
(WSDL 地 址 为 http URL 的 情 况 ) 点 击 完 成, 将 WSDL 文 件 资 源 ( 包 含 该 文 件 已 经 可 能 引 用 的 其 他 WSDL 文 件 和 XSD 文 件 ) 导 入 到 指 定 的 包 下 同 时, 目 标 WSDL 引 用 的 XSD 数 据 定 义 以 及 其 他 的 WSDL 也 会 被 导 入 到 相 同 的 包 下 展 开 WSDL 和 XSD 文 件 节 点, 可 以 看 到 文 件 中 定 义 的 类 型 服 务 port operation 等 元 素 的 结 构, 拖 拽 operation 节 点 到 流 程 编 辑 器 中 可 以 自 动 生 成 调 用 该 operation 的 webservcie 活 动 图 元 第 5 页 共 16 页
1.2.1.2 在 流 程 中 使 用 Web 服 务 图 元 创 建 一 个 新 的 业 务 流 程, 打 开 新 建 的 业 务 流 程 有 两 种 方 法 创 建 Web 服 务 活 动 : 方 法 一 : 拖 动 WSDL 中 的 操 作 到 流 程 编 辑 器 产 生 Web 服 务 图 元 如 下 图 所 示 : 第 6 页 共 16 页
方 法 二 : 将 选 用 板 上 的 Web 服 务 图 元 拖 入 业 务 流 程 编 辑 器 中 如 下 图 所 示 : 第 7 页 共 16 页
1.2.1.3 配 置 web 服 务 活 动 对 于 业 务 流 程 来 说 Web 服 务 活 动 实 质 还 是 个 自 动 活 动, 因 此 除 了 新 增 下 述 配 置 Tab 页 面 外, 其 余 配 置 项 均 和 自 动 活 动 配 置 方 式 一 致 WSDL 配 置 配 置 界 面 如 下 图 所 示 : WSDL: 通 过 浏 览 按 钮, 定 位 所 在 项 目 中 的 WSDL 文 件, 填 入 WSDL 输 入 框 用 于 调 用 时 读 取 并 加 载 WSDL 描 述 文 件 服 务 : 浏 览 并 确 定 WSDL 文 件 后, 在 服 务 下 拉 框 中 列 出 WSDL 文 件 中 的 所 有 服 务, 选 中 待 执 行 的 服 务 即 可 Port: 确 定 服 务 后, Port 下 拉 框 内 列 出 关 联 的 所 有 Port 接 口, 选 中 待 执 行 的 Port 即 可 Operation: 确 定 服 务 后, Operation 下 拉 框 内 列 出 关 联 的 所 有 Operation 方 法, 选 中 待 执 行 的 Operation 方 法 即 可 URL: 描 述 WSDL 服 务 发 布 路 径, 是 一 个 URL 路 径 URL 地 址 中 可 以 携 带 变 量, 相 关 规 则 如 下 : 第 8 页 共 16 页
变 量 格 式 为 ${ 变 量 }( 比 如 :${SERVICE_LOCATION1} /Service1 URL 地 址 中 的 变 量 为 应 用 对 应 的 user-config.xml 当 中 的 如 下 部 分 配 置 的 变 量 <module name="wslocation"> <group name="property"> <configvalue key=" SERVICE_LOCATION1">http://www.sample.org</configValue> </group> </module> 下 面 注 :user-config.xml 文 件 位 置 在 $BPS_HOME/working/$APPNAME/config 目 录 参 数 配 置 表 : 参 数 列 表 中 配 置 待 执 行 的 Operation 方 法 的 输 入 / 输 出 参 数 规 则 同 自 动 活 动 的 应 用 调 用 参 数 配 置 规 则 相 同 SOAP Header: 每 次 调 用 Web 服 务 时, 作 为 SOAP 协 议 的 Header 部 分 数 据 传 给 Web 服 务 服 务 端 SOAP Header 的 选 项 配 置 可 以 在 Eclipse 首 选 项 的 Primeton BPS->SOAP Header 管 理 中 进 行 附 件 配 置 : 每 次 调 用 Web 服 务 时, 可 携 带 相 关 附 件 传 输 给 Web 服 务 服 务 端, 附 件 一 定 是 文 件 所 输 入 的 值 应 该 是 附 件 所 在 的 文 件 路 径 文 件 类 型 涵 盖 了 绝 大 部 分 MIME 类 型 的 文 件 1.2.1.4 部 署 流 程 和 资 源 流 程 编 辑 完 毕 以 后, 就 可 以 部 署 到 流 程 引 擎 了, 包 括 WSDL 相 关 资 源 的 部 署 和 流 程 的 部 署 流 程 的 部 署 : 该 操 作 和 BPS6.0GA 相 同 可 以 直 接 在 Studio 中 提 交, 也 可 以 导 出 扩 展 名 为 ecd 的 部 署 包 然 后 通 过 BPS 管 理 监 控 部 署 WSDL 相 关 资 源 的 部 署 : 流 程 引 用 的 WSDL 和 XSD 相 关 资 源 文 件 的 部 署 方 式 和 class 相 同, 需 要 部 署 到 流 程 引 擎 的 WEB-INF/classes 目 录 下 面 目 前 对 WSDL 和 XSD 的 部 署 不 支 持 热 部 署, 如 果 对 现 有 资 源 有 修 改, 需 要 重 启 动 引 擎 应 用 第 9 页 共 16 页
1.2.2 生 成 Java Stub 调 用 Web 服 务 1.2.2.1 Java Stub 代 码 生 成 在 项 目 资 源 管 理 器 视 图 中 右 键 WSDL 文 件 节 点, 选 择 生 成 Java 客 户 端 代 码 菜 单, 打 开 生 成 Java 客 户 端 代 码 向 导 : 选 择 要 生 成 的 Java 客 户 端 代 码 默 认 存 放 的 包 路 径, 点 击 完 成 第 10 页 共 16 页
完 成 后 会 在 所 选 目 录 自 动 生 成 WSDL 对 应 的 java 客 户 端 代 码, 用 户 可 以 直 接 使 用 本 地 java API 的 方 式 进 行 调 用 生 成 代 码 如 下 图 所 示 第 11 页 共 16 页
如 果 生 成 代 码 后 编 译 出 错, 报 告 找 不 到 相 关 的 类, 请 检 查 项 目 是 否 导 入 了 代 码 生 成 依 赖 库, 代 码 生 成 依 赖 库 可 以 通 过 在 项 目 的 属 性 > java 构 建 路 径 中 的 添 加 库 按 钮 加 载, 库 类 型 名 称 为 BPS WebService CodeGen Support Libraries WSDL 引 用 的 复 杂 类 型 会 生 成 对 应 的 Java 类, 这 些 Java 类 的 包 名 符 合 http 路 径 和 Java 包 命 名 的 映 射 规 则 比 如, 如 果 某 复 杂 类 型 的 命 名 空 间 是 http://webxml.com.cn, 则 生 成 的 类 会 在 cn.com.webxml 下 面 如 果 生 成 的 代 码 所 在 的 目 录 具 有 相 同 的 Java 文 件, 则 会 自 动 覆 盖 已 有 文 件 第 12 页 共 16 页
1.2.2.2 Java Stub 的 使 用 JavaStub 代 码 生 成 会 对 每 一 个 对 应 的 PortType 生 成 对 应 的 接 口, 同 时 生 成 命 名 为 接 口 名 Stub 的 实 现 类 可 以 使 用 该 实 现 类 来 实 例 化 接 口, 然 后 调 用 对 应 的 方 法 系 统 同 时 为 每 个 方 法 的 调 用 产 生 了 输 入 和 输 出 的 包 装 类 以 下 代 码 为 使 用 天 气 预 报 服 务 的 方 法 : public static void main(string[] args) throws RemoteException { // 创 建 PortType 类 WeatherWebService stub = new WeatherWebServiceStub(); // 创 建 参 数 类, 设 置 参 数 GetWeatherbyCityName para = new GetWeatherbyCityName(); para.setthecityname(" 上 海 "); // 执 行 操 作 GetWeatherbyCityNameResponse ret = stub.getweatherbycityname(para); // 操 作 返 回 值 System.out.println(ret.getGetWeatherbyCityNameResult()); } 第 13 页 共 16 页
1.3 BPS 支 持 的 Web 服 务 的 WSDL 技 术 规 格 BPS 支 持 满 足 以 下 条 件 的 WSDL 支 持 WSDL1.1 版 本 支 持 WSDL:message 节 点 下 有 单 Part 多 Part 支 持 单 PortType 多 PortType 支 持 单 服 务 多 服 务 支 持 WSDL: 服 务 下 有 单 Port 多 Port 支 持 WSDL 引 入 另 一 个 WSDL, 如 : <WSDL:import location="abc.wsdl" namespace="http://www.abc.com/interface"/> 支 持 WSDL 文 件 中 的 WSDL:types 中 使 用 import 或 include 引 入 另 外 的 XSD 文 件, 如 : <XSD:import namespace="http://www.abc.com/v2_1" schemalocation="c.xsd"/> <XSD:include schemalocation="echannel.xsd"/> 支 持 被 引 用 的 WSDL 文 件 再 引 用 WSDL 或 XSD, 被 引 用 的 XSD 在 再 引 用 其 他 XSD 支 持 WSDL:portType 有 多 个 Operation 支 持 SOAP 1.1 和 SOAP 1.2 绑 定 支 持 rpc/encoded rpc/literal document/literal document/literal wrapped 四 种 样 式, 举 例 如 下 : <binding name="time 服 务 Soap" type="s0:time 服 务 Soap"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>...... </binding> 2 短 流 程 2.1 短 流 程 简 述 当 前 高 端 的 电 信 金 融 等 行 业 除 了 人 工 参 与 的 长 流 程 之 外, 还 有 无 需 人 工 参 与 的 短 流 程, 比 如 电 信 的 自 动 化 服 务 开 通 流 程 短 流 程 的 特 点 是 流 程 实 例 数 量 很 大, 甚 至 达 到 每 天 上 百 万 以 上 的 流 程 实 例, 基 本 无 需 等 待, 流 程 完 成, 对 流 程 引 擎 的 性 能 压 力 很 高 为 了 应 对 这 些 短 流 程 的 场 景,BPS 引 入 对 短 流 程 的 支 持 第 14 页 共 16 页
2.2 如 何 在 BPS 中 使 用 短 流 程 BPS 引 入 对 短 流 程 的 支 持, 使 用 方 法 很 简 单 只 需 要 在 流 程 定 义 中 配 置 相 关 属 性 即 可 上 图 可 见 长 流 程 复 选 框, 默 认 值 为 长 流 程, 复 选 框 去 掉 后 则 表 示 本 流 程 定 义 为 短 流 程 注 :BPS 中 短 流 程 不 能 包 含 人 工 活 动, 其 他 配 置 特 性 和 BPS 中 的 长 流 程 相 同 2.3 短 流 程 配 置 管 理 在 BPS 配 置 管 理 中 新 增 短 流 程 配 置 项 : 总 是 持 久 化 流 程 实 例 总 是 持 久 化 自 动 活 动 实 例 和 自 动 删 除 完 成 的 短 流 程 实 例 如 下 图 所 示 : 第 15 页 共 16 页
注 意 : 如 果 选 择 总 是 持 久 化 短 流 程 的 自 动 活 动 实 例, 则 总 是 持 久 化 短 流 程 的 流 程 实 例 也 要 一 并 选 中 各 选 项 含 义 如 下 : 总 是 持 久 化 流 程 实 例 : 如 果 选 择 了 该 项, 则 短 流 程 运 行 过 程 中 产 生 的 流 程 实 例 (WFProcessInst) 总 是 持 久 化 的 如 果 没 有 选 择, 则 流 程 引 擎 会 根 据 优 化 策 略 可 能 不 会 产 生 流 程 实 例 的 持 久 化 记 录, 以 达 到 较 好 的 运 行 性 能 总 是 持 久 化 活 动 实 例 : 如 果 选 择 了 该 项, 则 短 流 程 运 行 过 程 中 产 生 的 自 动 活 动 实 例 (WFActivityInst) 总 是 持 久 化 的 如 果 没 有 选 择, 则 流 程 引 擎 会 根 据 优 化 策 略 可 能 不 会 产 生 流 程 实 例 的 持 久 化 记 录, 以 达 到 较 好 的 运 行 性 能 自 动 删 除 完 成 的 短 流 程 实 例 : 如 果 选 择 了 该 项, 对 于 持 久 化 的 短 流 程 实 例 数 据 库 记 录, 在 流 程 运 行 完 毕 以 后 系 统 会 自 动 删 除, 从 而 使 得 流 程 实 例 库 中 总 是 保 持 较 少 量 的 数 据, 保 证 流 程 引 擎 的 性 能 不 随 数 据 量 的 增 加 而 过 分 降 低 如 果 没 有 选 择 该 项, 则 流 程 引 擎 不 会 自 动 删 除 运 行 完 毕 的 短 流 程 实 例 第 16 页 共 16 页