JP2011034392A - サービス連携装置、サービス連携方法及びサービス連携プログラム - Google Patents

サービス連携装置、サービス連携方法及びサービス連携プログラム Download PDF

Info

Publication number
JP2011034392A
JP2011034392A JP2009180664A JP2009180664A JP2011034392A JP 2011034392 A JP2011034392 A JP 2011034392A JP 2009180664 A JP2009180664 A JP 2009180664A JP 2009180664 A JP2009180664 A JP 2009180664A JP 2011034392 A JP2011034392 A JP 2011034392A
Authority
JP
Japan
Prior art keywords
service
task
message
container
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009180664A
Other languages
English (en)
Other versions
JP5371613B2 (ja
Inventor
Masashi Igarashi
政志 五十嵐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2009180664A priority Critical patent/JP5371613B2/ja
Publication of JP2011034392A publication Critical patent/JP2011034392A/ja
Application granted granted Critical
Publication of JP5371613B2 publication Critical patent/JP5371613B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】一連の処理をなすプロセスを構成するサービスであって、SOA等のメッセージ指向のサービスの開発において、メッセージの設計開発の負荷を小さくすることを目的とする。
【解決手段】処理を実行したサービスでは、処理の実行結果をメッセージにより他のサービスへ送信せず、記憶領域に記憶する。他のサービスへ送信するメッセージには、前記記憶領域の識別情報を含める。メッセージを受信した前記他のサービスは、メッセージに含まれる識別情報に基づき、前記記憶領域へアクセスして、サービスの実行結果を利用して処理を実行する。
【選択図】図1

Description

この発明は、例えば、SOA(Service Oriented Architecture)等におけるメッセージバスを通じたサービス間の連携技術に関する。
SOAとは、複数のサービスを組み合わせてシステムを構築する設計手法である。
サービスとは、意味のある単位の機能を持つ一まとまりのソフトウェアの集合であって、外部から標準化された手順によって呼び出すことができるものである。意味のあるとは、業務上、あるいは人間にとって何らかの意味があることを指す。なお、複数のサービスを組み合わせて構成された一連の処理をプロセスと呼ぶ。
SOAに基づくシステム構築では、ESB(Enterprise Service Bus)と呼ばれるミドルウェアを用いることが一般的である。
ESBとは、外部システムとサービスとの間の連携や、サービス間の連携を図るミドルウェアである。ESBでは、メッセージルータ(メッセージバス)を提供し、このメッセージルータを通じて、外部システムとサービスとの間や、サービス間でメッセージの交換を行い、外部システムとサービスとの間の連携や、サービス間の連携を図る。
つまり、ESBは、メッセージ指向のアプリケーション構築を可能にするミドルウェアということができる。
特開2008−204430号公報
Gregor Hohpe、Bobby Woolf著、「Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions」Addison−Wesley Pub出版、2003年10月10日発行、p.312−321 Ron Ten−Hove, Peter Walker著、「Java Business Integration(JBI)1.0」Sun Microsystems Inc.、2005年8月17日発行
従来のESBでは、サービス間でのデータ交換はメッセージを介してしか行うことができない。したがって、サービスを開発する場合には、必ずメッセージの設計が必要となる。メッセージの設計は、他のサービスとの関係を考慮して行わなければならない。特に、メッセージの設計は、プロセス全体を見渡して設計を行わなければならない場合もあり、メッセージの設計にかかる負荷が大きい。
この発明は、例えば、プロセスを構成するサービスを開発する場合におけるメッセージの設計開発の負荷を小さくすることを目的とする。
この発明に係るサービス連携装置は、例えば、
プロセスを構成する複数のサービスを連携して動作させるサービス連携装置であり、
前記プロセスが実行される場合に、前記複数のサービスの所定のサービスで生成される情報であって、前記所定のサービス以外の他のサービスで使用される情報を格納するための記憶領域を記憶装置に生成する記憶領域生成部と、
前記記憶領域生成部が生成した記憶領域の識別情報を含めたメッセージを、次に実行されるサービスへ送信して、前記次に実行されるサービスを起動させるメッセージ送信部と、
前記所定のサービスが実行された場合に前記所定のサービスから前記識別情報に基づき呼び出され、前記記憶領域にアクセスして、前記所定のサービスで生成した情報を前記記憶領域に格納するとともに、前記記憶領域に格納された情報を使用する前記他のサービスが実行された場合に前記他のサービスから前記識別情報に基づき呼び出され、前記記憶領域にアクセスして、前記所定のサービスで生成した情報を読み出す記憶装置操作部と
を備えることを特徴とする。
この発明に係るサービス連携装置では、記憶領域を介してサービス間でデータ交換するため、メッセージ開発の負荷を小さくすることができる。
ESBの基本的な仕様を説明するための図。 実施の形態1に係るESBサービス間自動連携装置100の構成図。 タスク基盤142の説明図。 変数基盤160の説明図。 実施の形態1に係るESBサービス間自動連携装置100において、外部システム200からメッセージを受信してから、タスク1〜4で構成されるプロセスがどのように実行されるかを示した図。 実施の形態2に係るESBサービス間自動連携装置100の構成図。 実施の形態2に係るESBサービス間自動連携装置100において、外部システム200からメッセージを受信してから、タスク1〜3で構成されるプロセスがどのように実行されるかを示した図。 実施の形態3に係るESBサービス間自動連携装置100の構成図。 実施の形態3に係るESBサービス間自動連携装置100において、外部システム200からメッセージを受信してから、タスク1〜4で構成されるプロセスがどのように実行されるかを示した図。 ESBサービス間自動連携装置100と及びサービス実行装置300のハードウェア構成の一例を示す図。
以下、図に基づきこの発明の実施の形態について説明する。
なお、以下の説明において、処理装置とは、後述するCPU911等であり、記憶装置とは、後述するRAM913等のことである。
まず、ESBの基本的な仕様と、その課題について説明する。
なお、ESBの基本的な仕様は、非特許文献2に記載されたJBI(Java Business Integration)で規定されている。
図1は、ESBの基本的な仕様を説明するための図である。
図1に示すように、ESBは、ESBコンテナ800、タスクコンポーネント810、メッセージルータ820、ルーティング定義830から構成される。
ESBコンテナ800は、ESB全体の制御を行うものであり、ESBにおけるベースプログラムである。つまり、ESBコンテナ800は、ESBにおけるOSのような役割を果たすものである。ESBにおける全ての構成要素はESBコンテナ800に配置される。
タスクコンポーネント810は、メッセージを送受信する機能と、サービスとを備える。つまり、タスクコンポーネント810は、メッセージルータ820を介してメッセージを受信し、受信したメッセージに基づきサービスを起動させる。そして、サービスで生成されたメッセージをメッセージルータ820を介して他のタスクコンポーネント810等へ送信する。図1では、タスク1コンポーネント、タスク2コンポーネント、タスク3コンポーネント、タスク4コンポーネントを備える。
メッセージルータ820は、メッセージのルーティングを行う。例えば、メッセージルータ820は、タスク2コンポーネント宛てとして送信されたメッセージの宛先を、タスク2コンポーネントの実際のアドレスに置き換えして、タスク2コンポーネントへ送信する。また、メッセージルータ820は、タスクコンポーネント810間のプロトコルの違いを吸収して、タスクコンポーネント810がプロトコルを意識することなく通信することを可能にする。
ルーティング定義830は、サービス間の接続方法(実行順序やプロトコル)を定義したものであり、これに基づきタスクコンポーネント810、メッセージルータ820によりメッセージの送受信が制御される。
従来のESBでは、タスクコンポーネント810は、メッセージを介してしかデータ交換できない。つまり、例えば、タスク1コンポーネントがタスク2コンポーネントへデータを渡すには、タスク1コンポーネントがタスク2コンポーネントへ送信するメッセージmsg_1_2に渡したいデータを含めて送信するしかない。
そのため、サービスを開発する場合、必ずメッセージを設計する必要がある。つまり、サービスを開発する場合、そのサービスで使用するメッセージスキーマの設計をするとともに、各メッセージスキーマに対して、そのメッセージを送受信できるメッセージ送信プログラム及びメッセージ受信プログラムを開発する必要がある。
また、次のタスクコンポーネント810で使用される情報だけでなく、後続のタスクコンポーネント810で使用される情報は全て含めなければならない。また、この他に、メッセージには、プロセス制御に必要な情報、プロセス全体で使用する情報等を含めなければならない。つまり、メッセージに含める情報は、プロセス全体を俯瞰的に見て決める必要がある。そのため、メッセージを設計することは、個々のサービス内容を局所的に把握して設計、開発を行う一般的な業務アプリケーション開発者には、非常に難しい。
例えば、図1であれば、4つのタスクコンポーネント810間で受け渡す3つのメッセージについて、メッセージ変数msg_1_2,msg_2_3,msg_3_4を定義し、4つのタスクコンポーネント810を俯瞰的に見て、各メッセージ変数msg_1_2,msg_2_3,msg_3_4に対して、WSDL(WebService Description Language)等を使用して、メッセージスキーマを定義する必要がある。
また、設計した各メッセージのフォーマットに対応して、メッセージを生成するメッセージ送信プログラムと、メッセージを解釈するメッセージ受信プログラムとを実装する必要がある。
つまり、n個(図1では4個)のタスクコンポーネント810がある場合には、(n−1)個(図1では3個)のメッセージを設計するだけでなく、(n−1)×2個(図1では6個)のメッセージ送受信プログラムを開発する必要がある。
また、プロセスを変更した場合、メッセージ設計とメッセージ送受信プログラムの修正とが必要となる。
特に、プロセス中の1つのサービスを変更した場合、そのサービスに対応するタスクコンポーネント810で送受信するメッセージと送受信プログラムだけでなく、その前のタスクコンポーネント810のメッセージ送信プログラム、後続のタスクコンポーネント810で送受信するメッセージとメッセージ送受信プログラムも修正しなければならない可能性がある。
例えば、図1においてタスク2コンポーネントを修正した場合、タスク2コンポーネントの中の要素だけでなく、メッセージmsg_3_4、メッセージ送信1プログラム、メッセージ受信3プログラム、メッセージ送信3プログラム、メッセージ受信4プログラムを修正しなければいけない可能性がある。
つまり、従来のESBでは、サービスの開発、修正に対するメッセージの設計、修正負荷が非常に高い。
次に、ESBにおいて、プロセスを制御する方法、すなわち、各サービスを業務フローに従った順序で実行する方法について説明する。
プロセスを制御する方法としては、非特許文献1のProcess Managerパターンがある。
Process Managerパターンでは、プロセスを構成するサービスとは別にプロセス実行サービスというサービスを設け、プロセス実行サービスが各サービスを業務フローに従った順序に起動させる。特許文献1には、Process Manager型の制御を行うためのプロセス実行サービスをESBに追加したシステムについての記載がある。
図1では、ProcessManager型のプロセス制御を行う場合のESBについて示している。そのため、図1では、上記構成に加え、ビジネスプロセス実行コンポーネント850と、ビジネスプロセス定義840とが設けられている。
ビジネスプロセス実行コンポーネント850は、プロセスの実行を制御するプロセス実行サービスである。つまり、ビジネスプロセス実行コンポーネント850は、プロセスを構成するタスクコンポーネント810とは別に設けられたタスクコンポーネント810である。
ビジネスプロセス定義840は、ビジネスプロセス実行コンポーネント850が使用するプロセスの定義情報である。ビジネスプロセス定義840は、プロセスの実行順序を定義したプロセス定義841、メッセージの変数を定義したメッセージ変数定義842、メッセージのスキーマを定義したメッセージスキーマ定義843を備える。
図1に示すESBにおいてプロセスが実行される場合の動作を説明する。なお、以下の説明において、(1)から(8)の番号は、図1のルーティング定義830における番号と対応している。
まず、ビジネスプロセス実行コンポーネント850は、外部システム等からプロセスの実行メッセージを受信する。そして、ビジネスプロセス実行コンポーネント850は、メッセージルータ820を介してメッセージをタスク1コンポーネントへ送信する(1)。タスク1コンポーネントでは、サービス1を実行して、ルーティング定義830に従いメッセージmsg_1_2をメッセージルータ820を介してビジネスプロセス実行コンポーネント850へ送信する(2)。
次に、ビジネスプロセス実行コンポーネント850は、メッセージルータ820を介してメッセージmsg_1_2をタスク2コンポーネントへ送信する(3)。タスク2コンポーネントでは、サービス2を実行して、ルーティング定義830に従いメッセージmsg_2_3をメッセージルータ820を介してビジネスプロセス実行コンポーネント850へ送信する(4)。
次に、ビジネスプロセス実行コンポーネント850は、メッセージルータ820を介してメッセージmsg_2_3をタスク3コンポーネントへ送信する(5)。タスク3コンポーネントでは、サービス3を実行して、ルーティング定義830に従いメッセージmsg_3_4をメッセージルータ820を介してビジネスプロセス実行コンポーネント850へ送信する(6)。
次に、ビジネスプロセス実行コンポーネント850は、メッセージルータ820を介してメッセージmsg_3_4をタスク4コンポーネントへ送信する(7)。タスク4コンポーネントでは、サービス4を実行して、ルーティング定義830に従い外部システム等へ送信するメッセージをメッセージルータ820を介してビジネスプロセス実行コンポーネント850へ送信する(8)。
そして、ビジネスプロセス実行コンポーネント850は、外部システム等へ送信するメッセージを外部システム等へ送信する。
以上のように、ProcessManager型のプロセス制御を行う場合、プロセスに含まれるタスクコンポーネント810がn個(図1では4個)ある場合、メッセージルータ820を介してメッセージが送受信される回数は2n回(図1では(1)から(8)の8回)となる。なお、外部システムとの通信もカウントするなら、メッセージルータ820を介してメッセージが送受信される回数は2回増え、2n+2回となるが、ここではカウントしていない。
つまり、ProcessManager型のプロセス制御では、ビジネスプロセス実行コンポーネント850を介してメッセージが送受信されるため、メッセージルータ820におけるメッセージの通信量が多くなる。つまり、メッセージルータ820にかかる負荷が大きい。
実施の形態1.
図2は、実施の形態1に係るESBサービス間自動連携装置100(サービス連携装置)の構成図である。
まず、実施の形態1に係るESBサービス間自動連携装置100の特徴を簡単に説明する。
ESBサービス間自動連携装置100では、プロセスインスタンス143と呼ぶ記憶領域に記憶した変数を介して、タスクコンポーネント140間でデータ交換可能である。そのため、他のタスクコンポーネント140へ送信するメッセージには、渡したいデータを含める必要はなく、変数を記憶したプロセスインスタンス143を特定可能な情報(及びプロセス制御に必要な情報、プロセス全体で使用する情報)のみを送信すればよい。したがって、各タスクコンポーネント140におけるメッセージのスキーマ及びメッセージの送受信プログラムは、共通化することが可能であり、メッセージ設計、開発の負荷を小さくすることができる。
また、ESBサービス間自動連携装置100では、各タスクコンポーネント140が、直接次に実行されるサービスを管理するタスクコンポーネント140へメッセージを送信する。したがって、メッセージルータ150におけるメッセージの通信量が少なくなる。
次に、実施の形態1に係るESBサービス間自動連携装置100について詳細に説明する。
図2に示すように、ESBサービス間自動連携装置100は、ESBコンテナ110、ESB定義エディタ120、ESB定義記憶部130を備える。
ESBコンテナ110は、処理装置により実行され、ESB全体の制御を行うベースプログラムである。ESBコンテナ110には、タスクコンポーネント140、メッセージルータ150、変数基盤160(記憶装置操作部)、ESB定義管理部170が配置される。メッセージルータ150は、従来と同様に、サービスが通信プロトコル等を意識せずに通信を行えるようにするためのメッセージバスである。
タスクコンポーネント140は、メッセージルータ820を介してメッセージを受信し、サービスを処理装置により実行する。図2では、タスク1,2,3の3つのタスクコンポーネント140を備える。また、各タスクコンポーネント140は、サービス実行部141と、タスク基盤142とを備える。
サービス実行部141は、割り当てられたサービスを処理装置により起動して実行する。つまり、タスク1のサービス実行部141であれば、割り当てられたサービス1を起動して実行する。同様に、タスク2のサービス実行部141であればサービス2を、タスク3のサービス実行部141であればサービス3を起動して実行する。
なお、サービス実行部141をサービスの実態と読み替えてもよい。つまり、タスク1であれば、サービス実行部141に代えサービス1を備え、タスク2であれば、サービス実行部141に代えサービス2を備え、タスク3であれば、サービス実行部141に代えサービス3を備えると読み替えてもよい。
タスク基盤142は、処理装置により実行され、サービス実行部141とメッセージルータ150とを連携する役割を果たす。なお、タスク基盤142は、後述するタスクパラメータ記憶部148が記憶する情報を除き、全てのタスクコンポーネント140で同一とすることができる。
図3は、タスク基盤142の説明図である。
図3に示すように、タスク基盤142は、インスタンス管理部144(記憶領域生成部)、共通メッセージ処理部145(メッセージ送信部)、サービス実行管理部146、タスクパラメータ解釈部147、タスクパラメータ記憶部148を備える。
インスタンス管理部144は、プロセスが実行される場合に、サービスで生成される情報を記憶するための変数を格納する記憶領域(プロセスインスタンス143)を記憶装置に生成(確保)するインスタンス初期化機能を有する。このプロセスインスタンス143に格納される変数には、サービスの内部でのみ使用される情報ではなく、情報を生成したサービス以外の他のサービスでも使用される情報が記憶される。つまり、このプロセスインスタンス143に格納される変数には、複数のサービス間で共有する情報が記憶される。すなわち、このプロセスインスタンス143に格納される変数には、従来、メッセージに含めてサービス間で送受信されていたサービスの実行結果が記憶される。また、このプロセスインスタンス143は、プロセスが実行される度に生成され、各プロセスインスタンス143には、インスタンス識別情報が割り当てられる。
また、インスタンス管理部144は、プロセスの実行が終了した場合等に、生成したプロセスインスタンス143を削除(解放)するインスタンス解放機能を有する。
共通メッセージ処理部145は、共通メッセージを用いて、他のタスクコンポーネント140と通信を行う。
共通メッセージ処理部145は、プロセス全体で使用する情報が格納される共通情報とプロセスインスタンス143のインスタンス識別情報とを含めた共通メッセージを生成する共通メッセージ生成機能を有する。また、共通メッセージ処理部145は、メッセージルータ150を介して受信した共通メッセージを解釈する共通メッセージ解釈機能と、メッセージルータ150を介して受信した共通メッセージを送受信する共通メッセージ通信機能とを有する。
サービス実行管理部146は、割り当てられたサービスの実行状態を管理する。つまり、サービス実行管理部146は、割り当てられたサービスが実行中であるか、実行が終了したか等を監視し、管理する。
タスクパラメータ解釈部147は、後述するタスクパラメータ記憶部148が記憶したタスクパラメータを解釈して、タスクパラメータに応じた処理を実行する。
タスクパラメータ記憶部148は、後述するESB定義管理部170により、プロセスの実行前に、タスクコンポーネント140に関するタスクパラメータ(サービス名、初期化する変数グループ、メッセージの宛先等)を格納される。
図4は、変数基盤160の説明図である。
変数基盤160は、処理装置により実行され、タスクコンポーネント140からプロセスインスタンス143に記憶した変数へのアクセスを可能とする。
図4に示すように、変数基盤160は、変数API161、変数マネージャ162、変数定義パラメータ記憶部163を備える。
変数API161は、サービス等から呼び出し可能なAPIである。
変数API161は、変数グループを初期化する機能や変数グループを削除する機能を有する。変数グループとは、複数の変数をまとめたもので、変数の領域確保の単位である。また、変数API161は、変数に格納された値を取得する変数取得機能や、変数に値を格納する変数更新機能を有する。また、後述する複合型の変数を用いる場合に使用される複合型指定機能を有する。
ここで、変数としては、文字列や整数といった単純型の他に、ツリー構造、ハッシュマップ構造、配列構造を組み合わせた複合型を扱う事が可能である。
変数API161は、変数取得機能や変数更新機能を用いる場合、変数型が単純型であれば、変数グループ名と変数名とを指定して変数を指定する。また、変数型が複合型であれば、変数グループと、複合型の内部の入れ子要素、配列要素、ハッシュ型の要素を直接指定する複合型指定子とを指定して変数を指定する。複合型指定子を解釈するのが複合型指定機能である。
変数マネージャ162は、変数API161から指示を受けて、プロセスインスタンス143に記憶された変数を操作する。
変数定義パラメータ記憶部163は、後述するESB定義管理部170により、プロセスの実行前に、変数に関する変数定義パラメータ(グループ名、変数の有効範囲(スコープ)、変数名、変数型、初期値等)を格納される。
ESB定義管理部170は、ESBコンテナ110が起動した時に、後述するESB定義記憶部130に記憶されたデータを読み込んで、タスク基盤142のタスクパラメータ記憶部148と、変数基盤160の変数定義パラメータ記憶部163とに格納する。
ESB定義エディタ120は、ESBコンテナ110に設定する定義情報を編集して、後述するESB定義記憶部130に記憶する。ESB定義エディタ120は、プロセス定義編集部121、変数定義編集部122、ESB定義配置部123を備える。
プロセス定義編集部121は、後述するプロセス定義記憶部131が記憶するプロセス定義を編集する機能であり、プロセスにおけるタスクコンポーネント140の呼び出し順序(サービスの実行順序)と、各タスクコンポーネント140のタスクパラメータに設定される値とを編集する。
変数定義編集部122は、後述する変数定義記憶部132が記憶する変数定義を編集する機能であり、プロセスインスタンス143に記憶する変数を編集する。
ESB定義配置部123は、プロセス定義編集部121と変数定義編集部122とが編集したデータをESB定義記憶部130に記憶させる。
ESB定義記憶部130は、ESB定義エディタ120が編集したプロセス定義を記憶装置に記憶するプロセス定義記憶部131と、変数定義を記憶装置に記憶する変数定義記憶部132とを備える。
次に、ESBサービス間自動連携装置100の動作について説明する。
図5は、外部システム200からメッセージを受信してから、タスク1〜3で構成されるプロセスがどのように実行されるかを示した図である。なお、以下の説明において、(s1)から(s10)の番号は、処理の流れを表し、図5における番号と対応している。
まず、前提として、ESBコンテナ110が起動した時に、ESB定義記憶部130に記憶された定義情報を、ESB定義管理部170が読み込み、タスクパラメータ記憶部148と変数定義パラメータ記憶部163とに設定される。
その結果、ここでは、タスク1のタスクパラメータ記憶部148には、メッセージの宛先としてタスク2が登録されている。タスク2のタスクパラメータ記憶部148には、メッセージの宛先としてタスク3が登録されている。タスク3のタスクパラメータ記憶部148には、メッセージの宛先としてプロセスの実行を指示した装置(ここでは、外部システム200となる)が登録されている。また、プロセスの実行を指示する外部システム200等からのメッセージの宛先として、タスク1がメッセージルータ150に設定されている。
さらに、タスク1のタスクパラメータ記憶部148には、初期化する変数グループとして、group1が設定されている。
また、さらに、変数定義パラメータ記憶部163には、変数1と変数2とが設定されている。
(s1)
外部システム200からメッセージルータ150へ外部メッセージ1が入力される。入力された外部メッセージ1は、メッセージルータ150により、タスク1へ送信される。
(s2)
タスク1のインスタンス管理部144は、プロセスインスタンス143を生成する。また、インスタンス管理部144は、生成したプロセスインスタンス143にインスタンス識別情報を付与する。
また、タスクパラメータ解釈部147は、タスクパラメータ記憶部148に初期化する変数グループとしてgroup1が設定されているため、変数API161を呼び出し、変数マネージャ162を介して生成したプロセスインスタンス143にgroup1の領域を確保する。そして、確保したgroup1の領域に、変数グループgroup1の定義に従って、変数1=“aaa”と、変数2=“1”とを設定(初期化)する。
なお、タスクパラメータ解釈部147が変数API161を呼び出す際、生成したプロセスインスタンス143のインスタンス識別情報を引数として与える。これにより、変数API161及び変数マネージャ162では、プロセスインスタンス143を特定することができる。
(s3)
タスク1のサービス実行部141は、(s2)で生成したプロセスインスタンス143のインスタンス識別情報と外部メッセージ1とを引数として、サービス1を起動して実行する。サービス1は、変数API161を呼び出し、(s2)でプロセスインスタンス143に設定された変数を読み出し、処理が実行される。つまり、サービス1は、初期化された情報を参照して処理を実行する。また、サービス1は、変数API161を呼び出し、サービス1で生成した情報を、プロセスインスタンス143に設定された変数へ格納する。
なお、変数API161を呼び出す際、(s2)で生成したプロセスインスタンス143のインスタンス識別情報を引数として与える。
(s4)
タスク1のサービス実行管理部146により、サービス1が終了したことが確認されると、タスク1の共通メッセージ処理部145により共通メッセージ1が生成される。そして、共通メッセージ処理部145は、タスクパラメータ記憶部148に設定された宛先であるタスク2を宛先として設定して、共通メッセージ1をメッセージルータ150へ送信する。
なお、共通メッセージ1には、(s2)で生成したプロセスインスタンス143のインスタンス識別情報が含まれる。
(s5)
共通メッセージ1は、メッセージルータ150によりタスク2へルーティングされ、タスク2へ送信される。すると、タスク2の共通メッセージ処理部145は、共通メッセージ1を解釈して、共通メッセージ1に含まれたインスタンス識別情報を取得する。
(s6)
タスク2のサービス実行部141は、(s5)で取得したプロセスインスタンス143のインスタンス識別情報を引数として、サービス2を起動して実行する。サービス2は、変数API161を呼び出し、サービス1でプロセスインスタンス143に設定された変数を読み出し、処理が実行される。つまり、サービス2は、サービス1で生成された情報を参照して処理を実行する。また、サービス2は、変数API161を呼び出し、サービス2で生成した情報を、プロセスインスタンス143に設定された変数へ格納する。
なお、変数API161を呼び出す際、(s5)で取得したプロセスインスタンス143のインスタンス識別情報を引数として与える。
(s7)
タスク2のサービス実行管理部146により、サービス2が終了したことが確認されると、タスク2の共通メッセージ処理部145により共通メッセージ2が生成される。そして、共通メッセージ処理部145は、タスクパラメータ記憶部148に設定された宛先であるタスク3を宛先として設定して、共通メッセージ2をメッセージルータ150へ送信する。
なお、共通メッセージ1には、(s5)で取得したプロセスインスタンス143のインスタンス識別情報が含まれる。
(s8)
共通メッセージ2は、メッセージルータ150によりタスク3へルーティングされ、タスク3へ送信される。すると、タスク3の共通メッセージ処理部145は、共通メッセージ2を解釈して、共通メッセージ2に含まれたインスタンス識別情報を取得する。
(s9)
タスク3のサービス実行部141は、(s8)で取得したプロセスインスタンス143のインスタンス識別情報を引数として与えて、サービス3を起動して実行する。サービス3では、変数API161を呼び出し、サービス1,2でプロセスインスタンス143に設定された変数を読み出し、処理が実行される。つまり、サービス3では、サービス1,2で生成された情報を参照して処理を実行する。
なお、変数API161を呼び出す際、(s8)で取得したプロセスインスタンス143のインスタンス識別情報を引数として与える。
(s10)
タスク3のサービス実行管理部146により、サービス3が終了したことが確認されると、タスク3の共通メッセージ処理部145により、サービス3の結果等を含んだ外部メッセージ2が生成される。そして、共通メッセージ処理部145は、タスクパラメータ記憶部148に設定された宛先である外部システム200を宛先として設定して、外部メッセージ2をメッセージルータ150へ送信する。
なお、インスタンス管理部144は、(s2)で生成したプロセスインスタンス143と、変数グループgroup1を削除(解放)する。
そして、外部メッセージ2は、メッセージルータ150を介して外部システム200へ送信される。
以上のように、ESBサービス間自動連携装置100では、プロセスインスタンス143と呼ぶ記憶領域に記憶した変数を介して、タスクコンポーネント140間でデータ交換を行い、タスクコンポーネント140間で送受信するメッセージは、共通メッセージを用いる。これにより、各サービスで固有のメッセージ設計を行うことなく、サービス間でデータ交換が可能となる。したがって、メッセージ設計の負荷が小さくなる。
また、予めタスクコンポーネント140毎にプロセス定義に基づく宛先情報を設定することで、タスクコンポーネント140が直接次のタスクコンポーネント140を指定することが可能となる。そのため、メッセージルータ150におけるメッセージ通信は、タスクコンポーネント140間だけの通信となる。つまり、メッセージルータ150でメッセージを送受信する回数は(n−1)回となる。したがって、メッセージルータ150におけるメッセージの通信量が少なくなる。
なお、以上の説明では、ESBサービス間自動連携装置100を1つの装置として説明した。しかし、ESBサービス間自動連携装置100は複数の装置から構成されていてもよい。
例えば、サービス実行部141が実行するサービスは、他の装置(サービス実行装置300と呼ぶ)が備えていてもよい。つまり、サービス実行部141は、サービス実行装置300が備えたサービスの起動を行うとしてもよい。
実施の形態2.
実施の形態1では、1つのESBコンテナ110において実行されるサービスにより構成されたプロセスを扱うESBサービス間自動連携装置100について説明した。
実施の形態2では、あるESBコンテナ110において実行されるサービスと、前記あるESBコンテナ110とは異なるESBコンテナ110において実行されるサービスとにより構成されたプロセスを扱うESBサービス間自動連携装置100について説明する。つまり、実施の形態2では、複数のESBコンテナ110を跨るプロセスを扱うESBサービス間自動連携装置100について説明する。
なお、実施の形態2に係るESBサービス間自動連携装置100について、実施の形態1に係るESBサービス間自動連携装置100と異なる部分のみ説明する。
ここで、一般に、ESBコンテナ110は1つのコンピュータにおいて、1つだけ実行される。つまり、複数のESBコンテナ110を跨ぐプロセスとは、複数のコンピュータ(ESBサービス間自動連携装置100)を跨ぐプロセスであると言い換えてもよい。すなわち、この実施の形態において、ESBサービス間自動連携装置100は、ESBコンテナ110毎にESBサービス間自動連携装置100を備えるESBサービス間自動連携システムであると考えてもよい。
図6は、実施の形態2に係るESBサービス間自動連携装置100の構成図である。
図6では、コンテナ1とコンテナ2との2つのESBコンテナ110を跨るプロセスを扱うESBサービス間自動連携装置100を示す。
また、ここでは、図6のプロセス定義記憶部131に記憶された情報が示すように、まずコンテナ1のタスク1が実行され、次にコンテナ2のタスク2とタスク3とが実行され、そしてコンテナ1のタスク4が実行されるプロセスについて説明する。つまり、ここでは、タスク1が終了した後に、コンテナ1がコンテナ2をリモートコンテナとして呼び出しタスク2とタスク3とを実行させて、その実行結果を取得し、タスク4を実行する例について説明する。
実施の形態2に係るESBサービス間自動連携装置100のESBコンテナ110には、コンテナ間タスク自動挿入部171、コンテナ間通信タスク180が配置される。
コンテナ間通信タスク180は、処理装置により実行され、ESBコンテナ110間を連携させて動作させる。
コンテナ間通信タスク180は、リモートコンテナCALL送信タスク181、リモートコンテナCALL受信タスク182、リモートコンテナRETURN送信タスク183、リモートコンテナRETURN受信タスク184を備える。
リモートコンテナCALL送信タスク181は、他のESBコンテナ110に配置されたタスクコンポーネント140を呼び出す場合に実行されるコンテナ間変換取得サービスを備える。
リモートコンテナCALL受信タスク182は、リモートコンテナCALL送信タスク181から呼び出される場合に実行されるリモートコンテナ初期化サービスを備える。
リモートコンテナRETURN送信タスク183は、呼び出し元のESBコンテナ110へ処理を返す場合に実行されるリモートコンテナ終了サービスを備える。
リモートコンテナRETURN受信タスク184は、リモートコンテナRETURN送信タスク183から処理が返される場合に実行されるコンテナ間変数展開サービスを備える。
ここで、コンテナ間変換取得サービスとリモートコンテナ終了サービスとが装置間連携情報送信サービスの一例であり、リモートコンテナ初期化サービスとコンテナ間変数展開サービスとが装置間連携情報受信サービスの一例である。
図6では、後述するESBコンテナ設定部124により、コンテナ1側には、リモートコンテナCALL送信タスク181とリモートコンテナRETURN受信タスク184とが設定され、コンテナ2側には、リモートコンテナCALL受信タスク182とリモートコンテナRETURN送信タスク183とが設定されている。
コンテナ間タスク自動挿入部171は、ESB定義管理部170により起動され、プロセスの実行前に、コンテナ間通信タスク180に関するタスクパラメータをコンテナ間通信タスク180のタスクパラメータ記憶部185に格納する。
特に、コンテナ間タスク自動挿入部171は、コンテナ間通信タスク180を設定することにより、タスクコンポーネント140における共通メッセージの宛先を変更する。図6の例であれば、元々は、タスク1における共通メッセージの宛先はタスク2であり、タスク2における共通メッセージの宛先はタスク3であり、タスク3における共通メッセージの宛先はタスク4である。しかし、コンテナ間通信タスク180を設定することにより、タスク1における共通メッセージの宛先をリモートコンテナCALL送信タスク181とし、リモートコンテナCALL送信タスク181からリモートコンテナCALL受信タスク182へメッセージ(ESB間連携CALLメッセージ)を送信し、リモートコンテナCALL受信タスク182からタスク2へ共通メッセージを送信するように変更する。また、タスク3における共通メッセージの宛先をリモートコンテナRETURN送信タスク183とし、リモートコンテナRETURN送信タスク183からリモートコンテナRETURN受信タスク184へメッセージ(ESB間連携RETURNメッセージ)を送信し、リモートコンテナRETURN受信タスク184からタスク4へ共通メッセージを送信するように変更する。
また、実施の形態2に係るESB定義エディタ120は、ESBコンテナ設定部124(サービス追加部)を備える。
ESBコンテナ設定部124は、必要に応じて、ESBコンテナ110にコンテナ間通信タスク180を配置する。例えば、ESBコンテナ設定部124は、プロセス定義編集部121に設定されたプロセス定義に応じて、ESBコンテナ110にコンテナ間通信タスク180を設定する。
つまり、他のESBコンテナ110に配置されたタスクコンポーネント140を呼び出す側のESBコンテナ110には、リモートコンテナCALL送信タスク181とリモートコンテナRETURN受信タスク184とを設定し、呼び出される側のESBコンテナ110には、リモートコンテナCALL受信タスク182とリモートコンテナRETURN送信タスク183とを設定する。
その結果、上述したように、図6では、後述するESBコンテナ設定部124により、コンテナ1側には、リモートコンテナCALL送信タスク181とリモートコンテナRETURN受信タスク184とが設定され、コンテナ2側には、リモートコンテナCALL受信タスク182とリモートコンテナRETURN送信タスク183とが設定されている。
また、実施の形態2に係る変数基盤160は、コンテナ間変数同期部164を備える。
コンテナ間変数同期部164は、コンテナ間変換取得サービス、リモートコンテナ初期化サービス、リモートコンテナ終了サービス、コンテナ間変数展開サービスから呼び出され、変数の有効範囲としてコンテナ間を指定された変数を操作する。
実施の形態2に係る変数定義編集部122は、変数の有効範囲として、特定のコンテナだけで有効なコンテナ内と、複数のコンテナを跨って有効なコンテナ間とを選択的に設定する。
次に、ESBサービス間自動連携装置100の動作について説明する。動作の説明において、コンテナ間通信タスク180の機能についても説明する。
図7は、外部システム200からメッセージを受信してから、上述したタスク1〜4で構成されるプロセスがどのように実行されるかを示した図である。なお、以下の説明において、(t1)から(t26)の番号は、処理の流れを表し、図7における番号と対応している。
まず、前提として、コンテナ1とコンテナ2とのESBコンテナ110が起動した時に、ESBコンテナ設定部124により、コンテナ1側のコンテナ間通信タスク180にリモートコンテナCALL送信タスク181とリモートコンテナRETURN受信タスク184とが設定され、コンテナ2側のコンテナ間通信タスク180にリモートコンテナCALL受信タスク182とリモートコンテナRETURN送信タスク183とが設定される。
また、ESB定義記憶部130に記憶された定義情報を、ESB定義管理部170が読み込み、タスクパラメータ記憶部148と変数定義パラメータ記憶部163とに設定される。さらに、コンテナ間タスク自動挿入部171により、タスクパラメータ記憶部148の情報が変更されるとともに、タスクパラメータ記憶部185に情報が設定される。
その結果、ここでは、タスク1のタスクパラメータ記憶部148には、メッセージの宛先としてリモートコンテナCALL送信タスク181が登録されている。リモートコンテナCALL送信タスク181のタスクパラメータ記憶部185には、メッセージの宛先としてリモートコンテナCALL受信タスク182が登録されている。リモートコンテナCALL受信タスク182のタスクパラメータ記憶部185には、メッセージの宛先としてタスク2が登録されている。タスク2のタスクパラメータ記憶部148には、メッセージの宛先としてタスク3が登録されている。タスク3のタスクパラメータ記憶部148には、メッセージの宛先としてリモートコンテナRETURN送信タスク183が登録されている。リモートコンテナRETURN送信タスク183のタスクパラメータ記憶部185には、メッセージの宛先としてリモートコンテナRETURN受信タスク184が登録されている。リモートコンテナRETURN受信タスク184のタスクパラメータ記憶部185には、メッセージの宛先としてタスク4が登録されている。また、プロセスの実行を指示する外部システム200等からのメッセージの宛先として、タスク1がメッセージルータ150に設定されている。
さらに、タスク1のタスクパラメータ記憶部148には、初期化する変数グループとして、group1とgroup2とが設定され、タスク2のタスクパラメータ記憶部148には、初期化する変数グループとして、group3とが設定されている。なお、変数グループgroup1は、変数の有効範囲としてコンテナ間が指定されている。変数グループgroup2,3は、変数の有効範囲としてコンテナ内が指定されている。
(t1)−(t3)
外部メッセージ1がタスク1へ送信され、コンテナ1の記憶装置にプロセスインスタンス143が生成される。プロセスインスタンス143には、group1とgroup2との領域が確保される。そして、サービス1が実行される。サービス1が終了すると、インスタンス識別情報が含まれた共通メッセージがリモートコンテナCALL送信タスク181を宛先として送信される。
(t4)
共通メッセージがリモートコンテナCALL送信タスク181へ送信され、共通メッセージを解釈して、共通メッセージに含まれたインスタンス識別情報を取得する。
(t5)
リモートコンテナCALL送信タスク181では、(t4)で取得したプロセスインスタンス143のインスタンス識別情報を引数として、コンテナ間変数取得サービスを起動して実行する。コンテナ間変数取得サービスは、コンテナ間変数同期部164を呼び出し、変数の有効範囲がタスク間と指定された変数グループgroup1の変数データを読み出す。そして、コンテナ間変数取得サービスは、読み出した変数グループgroup1の変数データを含めたESB間連携CALLメッセージを生成する。
(t6)
リモートコンテナCALL送信タスク181では、コンテナ2のリモートコンテナCALL受信タスク182を宛先として、ESB間連携CALLメッセージをメッセージルータ1へ送信する。
(t7)
ESB間連携CALLメッセージはコンテナ2のESB間連携キュー1に記憶される。ESB間連携CALLメッセージの処理順序が回ってくると、ESB間連携CALLメッセージは、メッセージルータ2でルーティングされ、リモートコンテナCALL受信タスク182へ送信される。
(t8)
リモートコンテナCALL受信タスク182では、ESB間連携CALLメッセージに含まれる変数データを取得する。
(t9)
リモートコンテナCALL受信タスク182では、(t8)で取得した変数データを引数として、リモートコンテナ初期化サービスを起動して実行する。リモートコンテナ初期化サービスは、コンテナ2の記憶装置にプロセスインスタンス143を生成し、インスタンス識別情報を付与する。そして、リモートコンテナ初期化サービスは、コンテナ間変数同期部164を呼び出し、引数として与えられた変数データを記憶する領域を、生成したプロセスインスタンス143に確保して、変数データを格納する。つまり、変数グループgroup1を格納する領域を確保して、変数グループgroup1のデータを格納する。
(t10)
リモートコンテナCALL受信タスク182では、(t9)で付与したインスタンス識別情報を含めた共通メッセージを生成して、タスク2を宛先としてメッセージルータ2へ送信する。
(t11)−(t16)
共通メッセージがタスク2へ送信され、共通メッセージからインスタンス情報が取得される。取得されたインスタンス情報に基づき、インスタンス管理部144によりプロセスインスタンス143に変数グループgroup3を格納する領域が確保され、初期化される。そして、共通メッセージから取得したインスタンス識別情報を引数として、サービス2が実行される。サービス2は、(t9)で生成したプロセスインスタンス143に記憶された変数を参照して、処理を実行する。サービス2が終了すると、インスタンス識別情報が含まれた共通メッセージがタスク3を宛先として送信される。
共通メッセージがタスク3へ送信され、共通メッセージからインスタンス情報が取得される。そして、共通メッセージから取得したインスタンス識別情報を引数として、サービス3が実行される。サービス3は、プロセスインスタンス143に記憶された変数を参照して、処理を実行する。サービス3が終了すると、インスタンス識別情報が含まれた共通メッセージがリモートコンテナRETURN送信タスク183を宛先として送信される。
(t17)
共通メッセージがリモートコンテナRETURN送信タスク183へ送信され、共通メッセージを解釈して、共通メッセージに含まれたインスタンス識別情報を取得する。
(t18)
リモートコンテナRETURN送信タスク183では、(t17)で取得したプロセスインスタンス143のインスタンス識別情報を引数として、リモートコンテナ終了サービスを起動して実行する。リモートコンテナ終了サービスは、コンテナ間変数同期部164を呼び出し、変数の有効範囲がタスク間と指定された変数グループgroup1の変数データを読み出す。そして、リモートコンテナ終了サービスは、読み出した変数グループgroup1の変数データを含めたESB間連携RETURNメッセージを生成する。
また、リモートコンテナ終了サービスは、(t9)で生成したプロセスインスタンス143と、変数グループgroup1,3を削除する。
(t19)
リモートコンテナRETURN送信タスク183では、コンテナ1のリモートコンテナRETURN受信タスク184を宛先として、ESB間連携RETURNメッセージをメッセージルータ2へ送信する。
(t20)
ESB間連携RETURNメッセージはコンテナ1のESB間連携キュー2に記憶される。ESB間連携RETURNメッセージの処理順序が回ってくると、ESB間連携RETURNメッセージは、メッセージルータ1でルーティングされ、リモートコンテナRETURN受信タスク184へ送信される。
(t21)
リモートコンテナRETURN受信タスク184では、ESB間連携CALLメッセージに含まれる変数データを取得する。
(t22)
リモートコンテナRETURN受信タスク184では、(t21)で取得した変数データを引数として、コンテナ間変数展開サービスを起動して実行する。コンテナ間変数展開サービスは、コンテナ間変数同期部164を呼び出し、引数として与えられた変数データをコンテナ1のプロセスインスタンス143に格納する。つまり、変数グループgroup1の変数の値を更新する。
(t23)
リモートコンテナRETURN受信タスク184では、(t1)で付与したインスタンス識別情報を含めた共通メッセージを生成して、タスク4を宛先としてメッセージルータ1へ送信する。
(t24)−(t26)
共通メッセージがタスク4へ送信され、共通メッセージからインスタンス情報が取得される。そして、共通メッセージから取得したインスタンス識別情報を引数として、サービス4が実行される。サービス4は、(t1)で生成したプロセスインスタンス143に記憶された変数を参照して、処理を実行する。サービス3が終了すると、外部メッセージ2が外部システム200を宛先として送信される。なお、プロセスインスタンス143と、変数グループgroup1,2は削除される。
以上のように、ESBコンテナ110を跨ぐプロセスを扱う場合、ESBコンテナ設定部124がコンテナ間通信タスク180を自動的に設定するとともに、コンテナ間タスク自動挿入部171が共通メッセージの宛先を自動的に変更する。これにより、変数の有効範囲がコンテナ間に指定されている変数を、他のESBコンテナ110においても使用可能となる。そのため、ESBコンテナ110を跨ぐプロセスを扱う場合であっても、各サービスで固有のメッセージ設計を行うことなく、サービス間でデータ交換が可能となり、メッセージ設計の負荷が小さくなる。
実施の形態3
実施の形態2では、複数のESBコンテナ110を跨るプロセスを扱うESBサービス間自動連携装置100について説明した。特に、実施の形態2では、同一のリモートコンテナを1度だけ呼び出す場合のESBサービス間自動連携装置100について説明した。
実施の形態3では、同一のリモートコンテナを複数回呼び出す場合のESBサービス間自動連携装置100について説明する。
なお、実施の形態3に係るESBサービス間自動連携装置100について、実施の形態2に係るESBサービス間自動連携装置100と異なる部分のみ説明する。
図8は、実施の形態3に係るESBサービス間自動連携装置100の構成図である。
図8では、コンテナ1とコンテナ2との2つのESBコンテナ110を跨るプロセスを扱うESBサービス間自動連携装置100を示す。特に、図8では、プロセス定義記憶部131が記憶したプロセス定義が示すように、コンテナ1がコンテナ2をリモートコンテナとして2度呼び出す場合について説明する。
実施の形態3に係るESBサービス間自動連携装置100のリモートコンテナCALL受信タスク182は、リモートコンテナ保留変数取得サービスを備える。
また、実施の形態3に係るESBサービス間自動連携装置100のリモートコンテナRETURN送信タスク183は、さらに、リモートコンテナ変数保留サービスを備える。
実施の形態3に係るプロセス定義編集部121は、タスクコンポーネント140毎に、処理が終了した後、変数の有効範囲がタスク内とされた変数グループを削除するか否かを指定する。
次に、ESBサービス間自動連携装置100の動作について説明する。
図9は、外部システム200からメッセージを受信してから、タスク1〜4で構成されるプロセスがどのように実行されるかを示した図である。なお、以下の説明において、(u1)から(u45)の番号は、処理の流れを表し、図9における番号と対応している。
まず、前提として、図7に基づき実施の形態2で説明した場合と同様に設定される。但し、ここでは、タスク2の終了時には、変数グループgroup3の削除をしない設定とし、タスク4の終了時には、変数グループgroup3の削除をする設定とする。
(u1)−(u14)
実施の形態2と同様に、タスク1、リモートコンテナCALL送信タスク181、リモートコンテナCALL受信タスク182、タスク2の順に処理が実行される。
なお、タスクパラメータとして、タスク2の終了時には変数グループgroup3の削除をしない設定になっているため、(u12)において、タスクパラメータ解釈部147は、変数API161を呼び出して、プロセスインスタンス143に記憶された変数グループgroup3に変数保留フラグを設定する。
(u15)−(u17)
共通メッセージがリモートコンテナRETURN送信タスク183へ送信され、読み出した変数グループgroup1の変数データを含めたESB間連携RETURNメッセージが生成される。そして、コンテナ1のリモートコンテナRETURN受信タスク184を宛先として、ESB間連携RETURNメッセージがメッセージルータ2へ送信される。
この際、リモートコンテナ終了サービスは、変数グループgroup3に変数保留フラグが設定されているため、変数グループgroup3の削除を行わない。
(u18)−(u32)
リモートコンテナRETURN受信タスク184、タスク3、リモートコンテナCALL送信タスク181、リモートコンテナCALL受信タスク182の順に処理が実行される。
(u33)−(u35)
共通メッセージがタスク4に送信され、サービス4が実行される。サービス4は、プロセスインスタンス143に記憶された変数を参照して、処理を実行する。ここで、プロセスインスタンス143には、サービス2で生成された値が変数グループgroup3の変数に格納されたまま残っている。したがって、サービス4では、変数グループgroup3の変数を参照することができる。
サービス4が終了すると、リモートコンテナRETURN送信タスク183を宛先として、共通メッセージが送信される。
(u36)−(u38)
共通メッセージがリモートコンテナRETURN送信タスク183へ送信され、読み出した変数グループgroup1の変数データを含めたESB間連携RETURNメッセージが生成される。そして、コンテナ1のリモートコンテナRETURN受信タスク184を宛先として、ESB間連携RETURNメッセージがメッセージルータ2へ送信される。
この際、リモートコンテナ終了サービスは、変数グループgroup3に変数保留フラグが設定されていないため、変数グループgroup3の削除を行う。
(u39)−(u45)
リモートコンテナRETURN受信タスク184、タスク5の順に処理が実行される。
以上のように、変数の有効範囲がコンテナ内を指定された変数グループについて、削除するタイミングを指定可能とすることにより、複数回呼び出されるリモートコンテナにおいて、前の呼び出しで生成した情報を次の呼び出しの時に参照することが可能となる。つまり、このような場合であっても、プロセスインスタンス143を介してデータ交換することができる。
以上をまとめると、以上の実施の形態に係るESBサービス間自動連携装置100は、以下の手段を備えたESBサービス間の自動連携装置である。
(a)ESBの実行基盤であるESBコンテナ上で、一連のサービスを連携させるプロセスとして実行する際に、サービスとメッセージルータの間に配置して、サービスの実行を管理し、共通メッセージを使ってサービス同士を連携可能にする事により、サービス開発者がメッセージ(メッセージフォーマットや、メッセージ送受信タイミング)を意識せずにサービスを開発可能にするタスク基盤、
(b)ESBコンテナでサービスをタスクとして連携させる順番や条件判断等の連携のフローを定義したプロセス定義、および、変数基盤が使用する変数定義からなる、ESB定義を、サービス開発者が設定する事が可能なESB定義エディタ、
(c)ESBコンテナ起動時に、ESB定義を読み込み、タスク基盤のタスクパラメータ、変数基盤の変数定義パラメータに設定し、ESB定義を生成し、ESBコンテナに配置する、ESB定義管理機能、
(d)サービスの中から直接使用できる変数API、
(e)変数APIからの要求により、タスク基盤がプロセスの実行単位の情報を保持するプロセスインスタンス上で、変数定義パラメータを元に、変数の管理(生成・変更・削除・取得)が可能な変数マネージャ、
(f)変数APIと変数マネージャを備える事により、サービスでアプリケーションとして連携させたい情報を、メッセージによらず、プロセスインスタンスにより分離された変数によりデータ交換できる事を特徴とした変数基盤。
また、ESBサービス間自動連携装置100は、ESBサービス間の自動連携装置に対して以下の手段を備える事により、ESB間に跨るサービス間でも自動連携を可能にする装置である。
(a)ESB定義エディタに対して、複数のESBコンテナに跨るプロセス記述可能にするために、タスクごとにどのESBコンテナで実行するかを指定するESBコンテナ設定機能を備え、複数のコンテナに跨るコンテナ間のスコープを設定可能な変数定義編集機能を備えた、ESB定義エディタ、
(b)ESBコンテナ起動時に、ESB定義管理機能から呼び出されて、プロセス内のコンテナを跨るタスク遷移が必要な箇所に対して、コンテナ間でのデータ送受信を行うコンテナ間通信タスクを自動挿入する、コンテナ間タスク自動挿入機能、
(c)変数基盤において、コンテナ間通信に伴い、スコープがコンテナ間に指定されている変数を連携先のコンテナとの間で同期させる、コンテナ間変数同期機能、
(d)元のコンテナからリモートコンテナへの境界のタスク遷移において、コンテナ間通信を行う際の呼び出し元のコンテナに配置され、コンテナ間変数同期機能から、コンテナ間スコープの変数を取得するコンテナ間変数取得サービスを備え、連携用のESB間連携CALLメッセージにより、相手コンテナに送信のための通信を行う、リモートコンテナCALL送信タスク、
(e)元のコンテナからリモートコンテナへの境界のタスク遷移において、コンテナ間通信を行う際の呼び出し先のリモートコンテナに配置され、リモートコンテナ上のプロセスインスタンスを初期化して、リモートコンテナCALL送信タスクから送られたESB間連携CALLメッセージを受信して、コンテナ間スコープの変数データを取り出し、リモートコンテナ上のプロセスインスタンスを初期化して、コンテナ間変数同期機能に伝えるリモートコンテナ初期化サービスを備え、リモートコンテナ上に配置されたタスクで、コンテナ間スコープのタスク変数を使用できるようにするリモートコンテナCALL受信タスク、
(f)リモートコンテナから元のコンテナに戻る境界のタスク遷移において、コンテナ間通信を行う際のリモートコンテナに配置され、コンテナ間変数同期機能から、コンテナ間スコープの変数を取得して、連携用のESB間連携RETURNメッセージを生成し、リモートコンテナ上のプロセスインスタンスを削除するリモートコンテナ終了サービスを備え、連携用のESB間連携CALLメッセージにより、相手コンテナに送信のための通信を行う、リモートコンテナRETURN送信タスク、
(g)リモートコンテナから元のコンテナに戻る境界のタスク遷移において、コンテナ間通信を行う際の元のコンテナに配置され、リモートコンテナRETURN送信タスクから送られたESB間連携RETURNメッセージを受信して、コンテナ間スコープの変数データを取り出し、コンテナ間変数同期機能に伝えるコンテナ間変数展開サービスを備え、リモートコンテナ上で変更されたコンテナ間スコープの変数の修正を反映してその後のタスクで使用可能にする、リモートコンテナRETURN受信タスク。
また、ESBサービス間自動連携装置100は、ESBサービス間の自動連携装置に対して以下の手段を備えた装置である。
(a)リモートコンテナRETRUN送信タスクにおいて、元のコンテナに戻る際にコンテナ内スコープの変数を削除せず保留する事により、再びリモートコンテナが呼び出された際に、以前のリモートコンテナ上で実行されたタスクによる変数変更の結果を取得できるようにする、リモートコンテナ変数保留サービス、
(b)リモートコンテナCALL受信タスクにおいて、リモートコンテナ変数保留サービスにより保留されているコンテナ内スコープの変数を取得する、リモートコンテナ保留変数取得サービス。
次に、以上の実施の形態におけるESBサービス間自動連携装置100及びサービス実行装置300のハードウェア構成について説明する。
図10は、ESBサービス間自動連携装置100及びサービス実行装置300のハードウェア構成の一例を示す図である。
図10に示すように、ESBサービス間自動連携装置100及びサービス実行装置300は、プログラムを実行するCPU911(中央処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信ボード915、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置920(固定ディスク装置)の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。磁気ディスク装置920は、所定の固定ディスクインタフェースを介して接続される。
ROM913、磁気ディスク装置920は、不揮発性メモリの一例である。RAM914は、揮発性メモリの一例である。ROM913とRAM914と磁気ディスク装置920とは、メモリ(記憶装置)の一例である。
磁気ディスク装置920又はROM913などには、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
プログラム群923には、上記の説明において「ESBコンテナ110」、「ESB定義エディタ120」、「ESB定義記憶部130」、「タスクコンポーネント140」、「メッセージルータ150」、「変数基盤160」、「ESB定義管理部170」、「コンテナ間通信タスク180」、「サービス」等として説明した機能を実行するソフトウェアやプログラムやその他のプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、上記の説明において「タスクパラメータ」、「変数定義パラメータ」、「共通メッセージ」等の情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶される。「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPU911の動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPU911の動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
なお、上記の説明におけるフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、その他光ディスク等の記録媒体やICチップに記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体や電波によりオンライン伝送される。
また、上記の説明において「ESBコンテナ110」、「ESB定義エディタ120」、「ESB定義記憶部130」、「タスクコンポーネント140」、「メッセージルータ150」、「変数基盤160」、「ESB定義管理部170」、「コンテナ間通信タスク180」、「サービス」等として説明したものは、「回路」、「装置」、「機器」、「手段」、「機能」として実現されてもよい。すなわち、「ESBコンテナ110」、「ESB定義エディタ120」、「ESB定義記憶部130」、「タスクコンポーネント140」、「メッセージルータ150」、「変数基盤160」、「ESB定義管理部170」、「コンテナ間通信タスク180」、「サービス」等として説明したものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、ROM913等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。
100 ESBサービス間自動連携装置、110 ESBコンテナ、120 ESB定義エディタ、121 プロセス定義編集部、122 変数定義編集部、123 ESB定義配置部、124 ESBコンテナ設定部、130 ESB定義記憶部、131 プロセス定義記憶部、132 変数定義記憶部、140 タスクコンポーネント、141 サービス実行部、142 タスク基盤、143 プロセスインスタンス、144 インスタンス管理部、145 共通メッセージ処理部、146 サービス実行管理部、147 タスクパラメータ解釈部、148 タスクパラメータ記憶部、150 メッセージルータ、160 変数基盤、161 変数API、162 変数マネージャ、163 変数定義パラメータ記憶部、164 コンテナ間変数同期部、170 ESB定義管理部、171 コンテナ間タスク自動挿入部、180 コンテナ間通信タスク、181 リモートコンテナCALL送信タスク、182 リモートコンテナCALL受信タスク、183 リモートコンテナRETURN送信タスク、184 リモートコンテナRETURN受信タスク、185 タスクパラメータ記憶部、200 外部システム、800 ESBコンテナ、810 タスクコンポーネント、820 メッセージルータ、830 ルーティング定義、840 ビジネスプロセス定義、841 プロセス定義、842 メッセージ変数定義、843 メッセージスキーマ定義、850 ビジネスプロセス実行コンポーネント。

Claims (6)

  1. プロセスを構成する複数のサービスを連携して動作させるサービス連携装置であり、
    前記プロセスが実行される場合に、前記複数のサービスの所定のサービスで生成される情報であって、前記所定のサービス以外の他のサービスで使用される情報を格納するための記憶領域を記憶装置に生成する記憶領域生成部と、
    前記記憶領域生成部が生成した記憶領域の識別情報を含めたメッセージを、次に実行されるサービスへ送信して、前記次に実行されるサービスを起動させるメッセージ送信部と、
    前記所定のサービスが実行された場合に前記所定のサービスから前記識別情報に基づき呼び出され、前記記憶領域にアクセスして、前記所定のサービスで生成した情報を前記記憶領域に格納するとともに、前記記憶領域に格納された情報を使用する前記他のサービスが実行された場合に前記他のサービスから前記識別情報に基づき呼び出され、前記記憶領域にアクセスして、前記所定のサービスで生成した情報を読み出す記憶装置操作部と
    を備えることを特徴とするサービス連携装置。
  2. 前記サービス連携装置は、自己が管理するサービスと、他のサービス連携装置が管理するサービスとで構成されるプロセスについて、前記他のサービス連携装置とともにサービスを連携して動作させ、
    前記サービス連携装置は、さらに、
    自己が管理するサービスの後に前記他のサービス連携装置が管理するサービスが実行される場合、前記プロセスを構成するサービスに加え、前記記憶領域に格納された情報のうち、前記他のサービス連携装置が管理するサービスで使用される情報を取得して、前記他のサービス連携装置へ取得した情報をメッセージに含めて送信する装置間連携情報送信サービスを追加するサービス追加部を備え、
    前記メッセージ送信部は、次に実行されるサービスが前記他のサービス連携装置が管理するサービスである場合、前記装置間連携情報送信サービスへ前記メッセージを送信する
    ことを特徴とする請求項1に記載のサービス連携装置。
  3. 前記サービス追加部は、自己が管理するサービスの前に前記他のサービス連携装置が管理するサービスが実行される場合、前記プロセスを構成するサービスに加え、前記装置間連携情報送信サービスからメッセージが送信された場合に起動して、前記装置間連携情報送信サービスから送信された情報を格納するための記憶領域を自己の記憶装置に生成するとともに、生成した記憶領域に送信された情報を格納して、生成した記憶領域の識別情報を含めたメッセージを次に実行されるサービスへ送信して、前記次に実行されるサービスを起動させる装置間連携情報受信サービスを追加する
    ことを特徴とする請求項2に記載のサービス連携装置。
  4. 前記装置間連携情報送信サービスは、前記他のサービス連携装置へ情報を送信する場合に、予め指定された情報を除き、前記記憶領域に格納された情報を削除する
    ことを特徴とする請求項2又は3に記載のサービス連携装置。
  5. プロセスを構成する複数のサービスを連携して動作させるサービス連携方法であり、
    前記プロセスが実行される場合に、前記複数のサービスの所定のサービスで生成される情報であって、前記所定のサービス以外の他のサービスで使用される情報を格納するための記憶領域を記憶装置に生成する記憶領域生成ステップと、
    前記記憶領域生成ステップで生成した記憶領域の識別情報を含めたメッセージを、次に実行されるサービスへ送信して、前記次に実行されるサービスを起動させるメッセージ送信ステップと、
    前記所定のサービスが実行された場合に前記所定のサービスから前記識別情報に基づき呼び出され、前記記憶領域にアクセスして、前記所定のサービスで生成した情報を前記記憶領域に格納するとともに、前記記憶領域に格納された情報を使用する前記他のサービスが実行された場合に前記他のサービスから前記識別情報に基づき呼び出され、前記記憶領域にアクセスして、前記所定のサービスで生成した情報を読み出す記憶装置操作ステップと
    を備えることを特徴とするサービス連携方法。
  6. プロセスを構成する複数のサービスを連携して動作させるサービス連携プログラムであり、
    前記プロセスが実行される場合に、前記複数のサービスの所定のサービスで生成される情報であって、前記所定のサービス以外の他のサービスで使用される情報を格納するための記憶領域を記憶装置に生成する記憶領域生成処理と、
    前記記憶領域生成処理で生成した記憶領域の識別情報を含めたメッセージを、次に実行されるサービスへ送信して、前記次に実行されるサービスを起動させるメッセージ送信処理と、
    前記所定のサービスが実行された場合に前記所定のサービスから前記識別情報に基づき呼び出され、前記記憶領域にアクセスして、前記所定のサービスで生成した情報を前記記憶領域に格納するとともに、前記記憶領域に格納された情報を使用する前記他のサービスが実行された場合に前記他のサービスから前記識別情報に基づき呼び出され、前記記憶領域にアクセスして、前記所定のサービスで生成した情報を読み出す記憶装置操作処理と
    をコンピュータに実行させることを特徴とするサービス連携プログラム。
JP2009180664A 2009-08-03 2009-08-03 サービス連携装置 Active JP5371613B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009180664A JP5371613B2 (ja) 2009-08-03 2009-08-03 サービス連携装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009180664A JP5371613B2 (ja) 2009-08-03 2009-08-03 サービス連携装置

Publications (2)

Publication Number Publication Date
JP2011034392A true JP2011034392A (ja) 2011-02-17
JP5371613B2 JP5371613B2 (ja) 2013-12-18

Family

ID=43763393

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009180664A Active JP5371613B2 (ja) 2009-08-03 2009-08-03 サービス連携装置

Country Status (1)

Country Link
JP (1) JP5371613B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013183151A1 (ja) * 2012-06-07 2013-12-12 株式会社 東芝 バス接続プログラム及び装置
EP2860653A4 (en) * 2012-06-07 2016-01-27 Toshiba Kk SECURITY ADAPTER PROGRAM AND DEVICE
JP2020071729A (ja) * 2018-10-31 2020-05-07 富士通株式会社 処理フレームワーク連携装置、処理フレームワーク連携方法および処理フレームワーク連携プログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07262024A (ja) * 1994-03-18 1995-10-13 Hitachi Ltd データ引き継ぎ方法
JP2001005652A (ja) * 1999-06-24 2001-01-12 Hitachi Ltd プログラム間バインド方法
JP2001265614A (ja) * 2000-03-23 2001-09-28 Nippon Telegr & Teleph Corp <Ntt> 動的連携情報引継ぎ方法,連携処理システムおよびそのプログラム記録媒体
JP2008204430A (ja) * 2007-01-25 2008-09-04 Hitachi Ltd ビジネスプロセス再構成方法、そのプログラム及び計算機

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07262024A (ja) * 1994-03-18 1995-10-13 Hitachi Ltd データ引き継ぎ方法
JP2001005652A (ja) * 1999-06-24 2001-01-12 Hitachi Ltd プログラム間バインド方法
JP2001265614A (ja) * 2000-03-23 2001-09-28 Nippon Telegr & Teleph Corp <Ntt> 動的連携情報引継ぎ方法,連携処理システムおよびそのプログラム記録媒体
JP2008204430A (ja) * 2007-01-25 2008-09-04 Hitachi Ltd ビジネスプロセス再構成方法、そのプログラム及び計算機

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013183151A1 (ja) * 2012-06-07 2013-12-12 株式会社 東芝 バス接続プログラム及び装置
JP5537668B2 (ja) * 2012-06-07 2014-07-02 株式会社東芝 バス接続プログラム及び装置
EP2860653A4 (en) * 2012-06-07 2016-01-27 Toshiba Kk SECURITY ADAPTER PROGRAM AND DEVICE
JP2020071729A (ja) * 2018-10-31 2020-05-07 富士通株式会社 処理フレームワーク連携装置、処理フレームワーク連携方法および処理フレームワーク連携プログラム
JP7087921B2 (ja) 2018-10-31 2022-06-21 富士通株式会社 処理フレームワーク連携装置、処理フレームワーク連携方法および処理フレームワーク連携プログラム

Also Published As

Publication number Publication date
JP5371613B2 (ja) 2013-12-18

Similar Documents

Publication Publication Date Title
CN112035228B (zh) 一种资源调度方法及装置
WO2018161799A1 (zh) 一种云应用部署方法和系统
US8843938B2 (en) Methods, systems, and computer program products for asynchronous resumption of a dataflow
JP2007122650A (ja) サービス実装支援プログラムおよびサービス実装支援方法
CN108804238B (zh) 一种基于远程过程调用的软总线通信方法
US10817284B2 (en) Melding of mediation flow service component architecture (SCA) components
US9003433B2 (en) Off-premise and codeless process-centric business mashup to integrate BPEL based processes and web 2.0 widgets
CN111930525A (zh) Gpu资源使用方法、电子设备及计算机可读介质
WO2023185054A1 (zh) 联盟链中部署链码的方法和系统
US20060236308A1 (en) Configurable functionality chaining
CN112764902A (zh) 任务调度方法及系统
JP5371613B2 (ja) サービス連携装置
US8938522B2 (en) Tiered XML services in a content management system
Indrasiri Microservice in Practice-Key Architectural Concepts of an MSA
CN105592130B (zh) 一种服务部署方法、服务管理方法及装置
JP2010027007A (ja) 処理装置、要求装置、及びそれらの処理方法
US7584302B1 (en) Business integration component for containers
WO2023185055A1 (zh) 联盟链中部署链码的方法和系统
WO2016095373A1 (zh) 业务处理方法及装置
Laitkorpi et al. A uml-based approach for abstracting application interfaces to rest-like services
JP5084355B2 (ja) フロー処理実行装置、フロー処理実行方法及びプログラム
CN115580655B (zh) 任务调度方法、装置、电子设备及存储介质
Vettor et al. EDITION v1. 2
Osman Microservices development cookbook: design and build independently deployable, modular services
JP2007299319A (ja) 情報処理装置及びプロセス間通信方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130612

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130618

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130722

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130820

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130917

R150 Certificate of patent or registration of utility model

Ref document number: 5371613

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250