Java開発者に贈る SOA/BPEL開発の最新動向 日本オラクル株式会社 システム事業推進本部 テクノロジ・エバンジェリスト 佐藤 直生 [email protected] 1 お願い • 後ほど、デモンストレーションを行うの で、前方にお座りください! 2 スピーカー紹介 • 日本オラクルのJ2EE/SOAのテクノロジ・ エバンジェリストとして活動 • Oracle Application Server (OC4J、TopLink …) • Oracle JDeveloper • Oracle BPEL Process Manager、Oracle ESB … • 執筆、監訳、講演、プロジェクト支援などの活動を行う • 稚内北星学園大学の客員助教授として、社会人向け IT教育にも携わる • blog: http://d.hatena.ne.jp/satonaoki/ • mail: [email protected] 3 セッション概要 • BPELやJBIといったSOAを実現するための テクノロジの動向を、Java開発者の観点から 考えます • さらに、今すぐ使える無償のSOA開発ツール 「Oracle JDeveloper 10g」を用いた、Web サービスやBPELプロセスの開発についても ご紹介します 4 アンケート • 挙手をお願いします! 5 Agenda • SOAとそれを支えるテクノロジの動向 • • • • SOAとは? Webサービス BPMとBPEL ESBとJBI • Oracle Fusion Middleware • • • • Oracle Fusion Architecture OC4J / OracleAS Web Services Oracle BPEL Process Manager Oracle JDeveloper • デモンストレーション 6 現在の課題 • • • • 業務要件の変更 新技術の登場 増大する複雑さ 変更に対応できるアプリ設計 7 SOA – 成功のためのブループリント 統合 オーケスト レーション 開発 セキュア化 変更 管理 モニタリング 8 SOA(サービス指向アーキテクチャ)の定義 サービス指向アーキテクチャ (SOA) は、 相互作用するソフトウェア・エージェント間の 疎結合の達成を目的とする、 アーキテクチャのスタイルです。 サービスは、サービス・コンシューマの ための最終結果を達成するために、 サービス・プロバイダが行う作業の単位です。 Dr. Hao He, W3C Web Services Architecture Working Group 9 SOAの特徴 • サービスが自己記述的な インタフェースを持つ • メッセージが明確に定義 されている • サービスが発見可能である • サービスの記述と相互作用 にプラットフォーム非依存の 標準 (XML) が使われる • サービスが任意のプラット フォームで提供可能 組み合わせ 可能 相互運用 可能 SOA 再利用 可能 疎結合 10 SOAの目的 • 疎結合の「サービス」を組み合わせることで、柔軟 に低コストでアプリケーションを構築 • 統合可能な新規アプリケーションを開発 • 既存アプリケーションからアプリケーションを構築 Oracle EBS カスタムの 受注管理アプリ 新規の Webアプリ 標準インタフェース 標準インタフェース 標準インタフェース 新規のサプライ チェーン管理アプリ (ビジネス プロセス / 複合アプリ) 標準インタフェース Siebel CRM 標準インタフェース メインフレームの 人事アプリ 標準インタフェース .NETの 在庫管理アプリ 11 SOAの「サービス」と Webサービス • SOAにおける「サービス」は、必ずしも (SOAPを 使う) Webサービスである必要はない • 疎結合を実現するためのインタフェースとして、 WSDLは極めて重要 • Webサービス ⊂ SOAの「サービス」 12 インテグレーションの進展 テクノロジ サービス 指向 y y y プロセス 統合 データ 統合 • • • y y y コンポジット・アプリケーション インテグレーションに対する SOAアプローチ 幅広い標準技術の採用 EAI + BPM (ビジネス・プロセス管理) インテグレーション・パターン 一部標準が採用されつつも、 まだまだプロプライエタリ EAI (エンタープライズ・アプリケーション統合) MOM (メッセージ指向ミドルウェア) プロプライエタリ (ベンダ固有) 時間 13 Agenda • SOAとそれを支えるテクノロジの動向 • • • • SOAとは? Webサービス BPMとBPEL ESBとJBI • Oracle Fusion Middleware • • • • Oracle Fusion Architecture OC4J / OracleAS Web Services Oracle BPEL Process Manager Oracle JDeveloper • デモンストレーション 14 SOA – サービスの開発 統合 オーケスト レーション サービスの 開発 セキュア化 変更 管理 モニタリング 15 Webサービス標準の進展 アドレシング ポリシー コンテキスト トランザクション コレオグラフィ 管理 標準ベースの 相互運用性 SOAP UDDI WSDL WS-I Basic Profile 1.1 セキュリティ 信頼性 オーケストレーション 16 基本的なWebサービス標準 (2000-2003年頃) クライアント コレオグラフィ オーケストレーション 管理 信頼性 トラン ザクション イベント セキュリティ ポリシー アドレシング SOAP、WSDL、UDDI 17 基本的なWebサービス実装 サービス記述を示す UDDI レジストリ WSDL サービスを登録 サービスを 発見 Webサービス Webサービス クライアント クライアント (J2EE、.NET、 (J2EE、.NET、 PL/SQL…) PL/SQL…) サービスを記述 SOAP XMLメッセージで呼び出す Webサービス Webサービス (J2EE、PL/SQL、 (J2EE、PL/SQL、 .NET、C/C++、 .NET、C/C++、 レガシー…) レガシー…) 18 J2EE 1.4 – JavaにおけるWebサービス標準 API 説明 JAXP Java API for XML Parsing、XMLパーサ/XSLTトランスフォーマ JAXB Java API for XML Data Binding、O/Xマッピング JAX-RPC Java API for XML Remote Procedure Call、Webサービス SAAJ SOAP API for Attachments in Java、SOAP JAXR Java API for XML Registries、UDDIなどのレジストリ EJB 2.1 ステートレスSession Beanのエンドポイント・モデル JSR-109 Webサービスのデプロイメント・モデル Java EE 5 • JAX-WS (Java API for XML Web Services 2.0) • JAX-RPC 1.1の後継 • EJB 3.0 • 複雑なEJB 2.1を改良し、アノテーションを活用してEoD (開発の 容易さ) を実現 • EJBをPOJO / POJI (普通のJavaクラスやJavaインタフェース) として 作成 • 「Java Persistence API」でPOJOのO/Rマッピングを標準化 • Web Services Metadata 1.1 • アノテーションでWebサービスを定義 20 EJB 3.0のWebサービス @Remote public interface Hello { String hello(String name); } @Stateless(name="Hello") @WebService(name = "MyWebService1", serviceName = "MyWebService1", targetNamespace = "http://project1/") @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) public class HelloBean implements Hello { @WebResult(name = "result", targetNamespace = "http://project1/") @WebMethod(operationName = "hello", action = "") public String hello( @WebParam(name = "name", mode = WebParam.Mode.IN, targetNamespace = "http://project1/", header = false) String name) { return "こんにちは、" + name + "さん"; } } 21 Agenda • SOAとそれを支えるテクノロジの動向 • • • • SOAとは? Webサービス BPMとBPEL ESBとJBI • Oracle Fusion Middleware • • • • Oracle Fusion Architecture OC4J / OracleAS Web Services Oracle BPEL Process Manager Oracle JDeveloper • デモンストレーション 22 SOA – サービスのオーケストレーション 統合 サービスの オーケスト レーション 開発 セキュア化 変更 管理 モニタリング 23 Webサービス標準(2004-2005年頃) クライアント – Remote Portlets (WSRP) コレオグラフィ オーケストレーション 管理 信頼性 トラン ザクション イベント セキュリティ ポリシー アドレシング SOAP、WSDL、UDDI 24 サービスのオーケストレーション 与信 受注 A D A P T E R WSDL ローン会社A A D A P T E R BPEL 注文処理 ローン会社B A D A P T E R サービス・バス (ESB) W S D L アプリケーション・サーバ 25 ビジネス・プロセスの課題 • サービス間の非同期 • 相互作用時のデータ の操作/変換 通信の調整 • サービス間のメッセージ • 長時にわたるビジネス・ 交換の相関 トランザクションのサ ポート • 並列処理の実装 • 一貫した例外処理の • … 提供 • … 26 BPEL (Business Process Execution Language) 個別のサービスを組み立て、エンド・トゥ・エンドのプロセス・フローを 構築するためのXMLベースのマークアップ言語 • • • OASISで標準策定中 (WS-BPEL 2.0) 成熟したビジネス・プロセス 定義言語 Sales DB start Duplicate Number! • WSFLとXLANGに由来 • Billing 業界での幅広い支持 • Oracle、IBM、MS、BEA、 SAP… • • ベンダ・ロックインを回避 再利用と相互運用性 Router end 27 BPELによるオーケストレーション Webサービス ポータル Javaサービス ? J2EEアプリ データベース ストアドプロシージャ ERP (SAP、Oracle EBS…) BPEL Webアプリ UI ユーザ・タスク (ワークフロー) 28 BPELプロセスの例 <variable> <process> BPEL Flow 10:00am start Credit Rating <faultHandlers> 信用評価を 取得 <invoke> <flow> <partnerLink> 例外処理 ローン申請を送信 ローン申請を送信 United Loan <invoke> Star Loan <receive> <partnerLink> ローン提案を受信 ローン提案を受信 <partnerLink> </flow> <switch> </process> ?金利の低いローンを選択 end 03:00pm 29 BPELプロセス(1) 実行のチェーン <sequence> クライアント Start <receive> GetAccount <invoke> 販売管理システム mapping ListIncidents <invoke> クライアント End <reply> 顧客サポート システム </sequence> 30 BPELプロセス(2) 非同期 クライアント Initiate <receive> ProcessOrder <invoke> …. OnOrderComplete <receive> クライアント オンライン ストア End <invoke> 31 BPELプロセス(3) 並行処理 Initiate <receive> <flow> パートナーA GetQuote GetQuote <invoke> <invoke> パートナーB </flow> End <invoke> 32 BPELプロセス(4) 例外管理と補償 クライアント Start <receive> Release Flight <invoke> Book Flight <invoke> 旅行サービス Cancel Hotel <invoke> Reserve Hotel <invoke> ホテル・サービス クライアント End <reply> 33 BPELプロセス(5) プロセス自体も 1つのサービス クライ アント Initiate <receive> ProcessOrder Java Webアプリ BPEL C# … <invoke> …. OnOrderComplete <receive> End <invoke> 34 Agenda • SOAとそれを支えるテクノロジの動向 • • • • SOAとは? Webサービス BPMとBPEL ESBとJBI • Oracle Fusion Middleware • • • • Oracle Fusion Architecture OC4J / OracleAS Web Services Oracle BPEL Process Manager Oracle JDeveloper • デモンストレーション 35 SOA – 統合 統合 オーケスト レーション サービスの 開発 セキュア化 変更 管理 モニタリング 36 ESB – 仮想的なサービス・バス サービス・コンシューマ / イベント・パブリッシャ ESB - サービス配信バス サービスの 管理 ルーティ ングなど の構成 サービス・インタフェース サービス実装 37 ESBの主な機能 モニタリング /構成管理 モニタリング/構成管理 接続 アダプタ イベント メタデータ セキュリティ サービス管理 加工 変換 値マッピング 相互参照 ビジネス・ルール 分散 ルーティング プロトコル・バス メッセージング ゲートウェイ 相互運用性 38 ESBにおけるルーティング 39 BPEL & ESBのユース・ケース J2EE Service provisioning systems Local Service Activation Manager 通信業界のプロビジョニング Approval Rules Application Server Sales/Customer Service Interfaces New Plan Selection User Interface ESB Exception Handling and Rollback/Re-try BPEL Process Manager Billing Services Payment Services Credit Card Services ESBが、アダプタと変換サービスをBPELから分離 BPELは、オーケストレーションに集中 40 JBIとは? fx サービス・エンジン (SE) BPEL XQuery JMX ルール インストール モニタリング ライフサイクル管理 JBI • メタデータ (WSDL) • アドレシング (論理ネーミング) • プラグ・アンド・プレイBC バインディング コンポーネント (BC) サービス SOAP HTTP Amazon JC2A SAP イン・メモリ COM • 最適化されたトランスポートと データ・フォーマット • 同期/非同期相互作用 C# 41 JBIにおけるプラグ・アンド・プレイ サービス・エンジン (BPELなど) 正規化 メッセージ (NM) JMX インストール モニタリング ライフサイクル管理 正規化メッセージ ルータ (NMR) サービスAのWSDL バインディング コンポーネント (BC) 抽象 インタフェース ネイティブ メッセージ サービスA Concrete Binding 具象Binding Concrete バインディング 42 BPELとJBI: 補完的な概念 BPEL JBI ビジネス・プロセスと その実行に着目 ビジネス上の セマンティクスには 着目しない サービス自体をホスト サービスをホストし、 せず、メッセージの サービス間の 仲介もしない メッセージを仲介 43 Agenda • SOAとそれを支えるテクノロジの動向 • • • • SOAとは? Webサービス BPMとBPEL ESBとJBI • Oracle Fusion Middleware • • • • Oracle Fusion Architecture OC4J / OracleAS Web Services Oracle BPEL Process Manager Oracle JDeveloper • デモンストレーション 44 統合されたポータル ビジネス インテリ ジェンス (BI) アクティビティ モニタリング (BAM) Oracle Fusion Architecture (OFA) ビジネス プロセス オーケストレーション プロセス モデル BPELエンジン BPELエンジン Fusion サービス バス マルチ プロトコル ルーティング メッセージ変換 サービスとイベントの仲介 Fusion サービス レジストリ アプリケーション統合サービス プロセス統合サービス データ / メタデータ サービス Oracle Apps カスタム アプリ ISV アプリ 9 モデル駆動 (Model driven) 9 SOA (サービス指向) / EDA (イベント駆動) 対応 (Service & Event enabled) 9 標準準拠 (Standards-based) 9 情報中心 (Information Centric) 9 グリッド対応 (Grid Ready) グリッド コンピューティング クラスタリング プロビジョニング データ管理 アイデンティティ管理 セキュリティ 構成 ディレクトリ Webキャッシュ 45 46 J2EE 1.4完全準拠のJ2EEコンテナ Oracle Containers for J2EE (OC4J) ¾J2EE標準API群をサポート 9サーブレット、JSP、EJB、JTA … Web クライ アント ¾J2SE 1.4に加え、JDK 5.0もサポート ¾EJB 3.0を業界に先駆けてサポート ¾JSF 1.1をサポート 9リッチなUIを提供するJSFコンポーネント 「ADF Faces」も提供 HTTP Oracle HTTP Server AJP JNDI AJP 9O/Rマッピング・フレームワーク「Oracle TopLink」をベースにした実装 OC4J Web コンテナ JMS JDBC J2CA JTA ¾JDBCデータソースと接続プーリング ORMI ¾高度なJMS実装を提供 9インメモリ、ファイル、DBベースの永続化 ¾ID管理と連携可能なJAAS実装 ¾Oracle Identity Management によるユーザ管理や認証/認可 EJB クライアント ORMI ¾Oracle RACと連携した、効率的な 接続管理 EJB コンテナ JAXRPC … Java VM 47 J2EE 1.4完全準拠のJ2EEコンテナ Oracle Containers for J2EE (OC4J) ¾カスタムJ2EEアプリケーションのみならず、 Oracle Fusion Middlewareの他の コンポーネントの実行環境としても利用 優れたパフォーマンス Multiple Node TOPS アプリケーション実行環境 6000 4000 2000 0 Oracle BEA IBM SPECjAppServer2002 ¾業界標準J2EEベンチマーク SPECjAppServerで実証済み 高い可用性と拡張性 ¾OC4JがOHS (Oracle HTTP Server) 、 プロセス監視機能 OPMN (Oracle Process Manager and Notification Server) と連携 ¾すべての層にわたるクラスタリング/ スケール・アウトが可能 クライ アント ロード バランサ HTTP サーバ層 J2EE コンテナ層 DB層 OHS OC4J Oracle RAC 48 Webサービス実行環境 OracleAS Web Services Webサービス SOAP クライアント (J2EE、.NET、 1.1/1.2 BPEL、ポータル、 PL/SQLなど) WS-I BP 1.1準拠 クライアントが WSDL サービスを検索 SOAP リクエスト ハンドラ POJO (Javaクラス) PL/SQL、SQL、DML メッセージ監査 (HTTP、 JMS) JMS トピック / キュー CORBA コンテント・ベース ロギング カスタム・プロバイダ サービス管理 Webコンテナ ハンドラ トランザクション EJBコンテナ WS-Reliability プロバイダが サービスを公開 WSDL Session Bean WS-Security メッセージング Oracle Service Registry セキュリティ データ・アクセス サード パーティ アダプタ JMS リソース アダプタ J2CA アダプタ プーリング OC4J Webサービス関連仕様のサポート 高度な機能 ¾JAX-RPC 1.1、 SOAP 1.1/1.2、 WSDL 1.1、UDDI 3.0、 WS-Security 1.0、WS-Reliability 1.0など ¾EJBやJavaクラスのみならず、多様な リソースをWebサービス化可能 ¾Oracle JDeveloperによる容易な Webサービスやクライアントの開発 49 BPEL準拠のBPM実行基盤 Oracle BPEL Process Manager ネイティブBPEL実行環境 ¾BPEL4WS 1.1に完全準拠 ¾BPELをそのまま実行するネイティブ実装 ¾他社APサーバ上での利用もサポート ¾J2CA準拠のアダプタを介し、多様な システム/リソースを統合可能 ¾ヒューマン・ワークフローのサポート ¾ルール・エンジン連携 (Oracle、iLog) ¾高い信頼性 (プロセス状態をDBに格納) ¾高いスケーラビリティ (中間層、DB層でスケール・アウト可能) SOAライフサイクルをサポート ¾JDeveloperによるサービス開発 ¾BPEL Designerによるプロセス開発 ¾BPELコンソールによる運用管理 Oracle BPEL Process Manager BPEL Designer ワークフロー ルール BPELエンジン BPEL コンソール XSLT マッパー アダプタ ファクトリ 変換 相関 バインディング キューイング Oracle DB EBS DB ファイル … J2EEアプリケーション・サーバ (OracleAS、 WebLogic、JBoss …) 50 BPEL準拠のBPM実行基盤 Oracle BPEL Process Manager BPEL Designer ¾BPELプロセスの設計・開発ツール ¾GUIで簡単に業務フローを定義可能 ¾ビジネス・プロセスの可視化が可能 BPELコンソール ¾BPELサーバの運用管理ツール ¾プロセスのテスト実行や、実行された プロセスの管理/モニタリングが可能 プロセスの 状態を格納 信頼性の高い実行環境 ¾DBにプロセスの状態を格納することで、 BPELサーバに障害が発生してもプロセスを 継続可能 ¾中間層/DB層 (RAC) でのスケール・ アウトによる、高可用性とスケーラビリティ BPELプロセスが 連携する各システム BPELサーバ BPEL リポジトリ 51 Oracle ESB (Enterprise Service Bus) サービス・バス (ESB) ¾SOAを補完するEDA (イベント駆動 アーキテクチャ) をサポート ¾多様なシステム/サービス間のメッセージ 交換をサポートするサービス・バス SAP BPEL PM Oracle BAM WSDL 9Webサービス、JMS、J2CA準拠のアダプタ ¾データ変換 (XSLT)、相互参照、 ドメイン値マッピングが可能 ¾コンテント・ベース・ルーティング (CBR) SOAP / HTTP/ Reliable SOAP JMS - OEMS (Oracle)、MQSeries、Tibco ローカル、イン・メモリ 容易な設計/開発と運用管理 ¾ESB Designer 9ESBの設計/開発のためのJDeveloper ベースのGUIツール ¾ESBコンソール 9運用管理やモニタリングのためのGUIツール レガシー システム J2EE .NET 52 Oracle ESB (Enterprise Service Bus) ESB Designer ¾アダプタ・ウィザード (J2CAアダプタの構成) ¾XSLTマッパー (データ変換) ¾ドメイン値マップ・エディタ ¾相互参照エディタ ¾コンテント・ベース・ルーティングの設定 ESBコンソール ¾ESB実行環境の運用管理ツール ¾イベント/メッセージのモニタリング BPEL Process Manager連携 ¾ESBで、他システムとのメッセージ交換、 単純なルーティングを実行 ¾BPEL PMで、複雑なプロセス (例外処理、 並列処理など) やワークフローを実行 53 SOA統合開発環境 (IDE) Oracle JDeveloper Java/J2EE開発のためのIDE Webサービス/SOA開発 ¾JDK 5.0、J2EE 1.4、JSF 1.1、 EJB 3.0などをサポートした無償IDE ¾EoDを実現する生産性の高いJ2EE フレームワーク「Oracle ADF」を提供 ¾開発ライフサイクルすべてをサポート ¾XML開発 (XML Schemaエディタ、XSLT (モデリング、ソース管理、プロファイリングなど) マッパ、XQuery、XPath、JAXB開発など) ¾Webサービス開発 (JAX-RPC、JSR-181、 クライアント開発、UDDIブラウザなど) ¾BPELプロセス開発 (ビジュアルBPEL開発、 アダプタ・ウィザード、ワークフロー開発など) 54 Oracle JDeveloper Webサービス開発を支援する機能 Webサービスとクライアントの開発 ¾ボトム・アップ開発 (既存のJavaクラス、EJB、 PL/SQLなどをWebサービス化) ¾トップ・ダウン開発 (WSDLから実装を生成) ¾クライアント開発 (WSDLからスタブを生成) ¾JAX-RPC 1.1、WS for J2EE 1.1、 JSR-181 (アノテーションによる開発) 、WSIF、 WS-Security、WS-Reliability … 生産性を高める各種機能 ¾ビジュアルWSDLエディタ (複雑なWSDLを可視化) ¾UDDIブラウザ (レジストリからの検索、 レジストリへの公開) ¾HTTPアナライザ (SOAPメッセージをキャプチャ) 55 Oracle JDeveloper BPEL開発機能 (Oracle BPEL Designer) ビジュアルBPELプロセス開発 ¾ドラッグ&ドロップでBPELプロセスを開発 ¾プロセスの可視化/モデリング ¾BPELサーバへのワンクリック・デプロイ ¾サード・パーティBPMNモデリング・ツール との連携も可能 BPEL開発を支援する各種機能 ¾XML Schemaエディタ (XML要素を定義) ¾XSLTマッパ (XML変数間の変換を定義) ¾アダプタ・ウィザード (Webサービス以外の リソース/システムとの連携をサポート) ¾ヒューマン・ワークフロー・ウィザード ¾WSILブラウザ / UDDIブラウザ (既存サービスの検索) 56 Agenda • SOAとそれを支えるテクノロジの動向 • • • • SOAとは? Webサービス BPMとBPEL ESBとJBI • Oracle Fusion Middleware • • • • Oracle Fusion Architecture OC4J / OracleAS Web Services Oracle BPEL Process Manager Oracle JDeveloper • デモンストレーション 57 デモンストレーション 1. POJOを作成し、JAX-RPC Webサービスとして公開 2. BPELプロセスを作成し、 Webサービスを呼び出す 3. JSFで、BPELプロセスを起動するWebページを作成 JSF Webアプリ BPEL プロセス JAX-RPC Webサービス 58 まとめ • SOAに関連するテクノロジの動向についてご紹 介してきました • ですが、SOAの本質は、テクノロジではなく、ITア ーキテクチャのコンセプトです • 標準仕様の動きをウォッチしつつも、それを待っ ていてはいつまで経っても始められません。 • オラクルが提供するSOA開発/実行環境で、SOA の第一歩を踏み出してみましょう! 59
© Copyright 2024 Paperzz