JP3712984B2 - 業務進捗制御装置及びその方法と、業務進捗制御プログラム及びそのプログラムを記録した記録媒体 - Google Patents

業務進捗制御装置及びその方法と、業務進捗制御プログラム及びそのプログラムを記録した記録媒体 Download PDF

Info

Publication number
JP3712984B2
JP3712984B2 JP2002039780A JP2002039780A JP3712984B2 JP 3712984 B2 JP3712984 B2 JP 3712984B2 JP 2002039780 A JP2002039780 A JP 2002039780A JP 2002039780 A JP2002039780 A JP 2002039780A JP 3712984 B2 JP3712984 B2 JP 3712984B2
Authority
JP
Japan
Prior art keywords
business
unit
progress control
rule
cancel
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.)
Expired - Lifetime
Application number
JP2002039780A
Other languages
English (en)
Other versions
JP2003242313A (ja
Inventor
健 増田
忠司 小谷
慎吾 宮川
数馬 石川
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2002039780A priority Critical patent/JP3712984B2/ja
Publication of JP2003242313A publication Critical patent/JP2003242313A/ja
Application granted granted Critical
Publication of JP3712984B2 publication Critical patent/JP3712984B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

【0001】
【発明の属する技術分野】
複数の単位業務の組み合わせによって構成される複合業務の進捗を制御する業務進捗制御装置及びその方法と、その業務進捗制御方法の実現に用いられる業務進捗制御プログラム及びそのプログラムを記録した記録媒体とに関する。
【0002】
【従来の技術】
(1)分散トランザクションサービス
クライアントサーバ型システム環境や分散オブジェクト指向型システム環境においては、従来から分散トランザクションサービスを提供する標準APIが存在する。
【0003】
例えば、X/Open(X/Open Company Limited) で制定するXAインターフェイス、あるいはOMG(Object Management Group)で制定するOTS/Resource Interface (Object Transaction Service)、あるいはISO(International Organization for Standardization)で制定するOSI−TP(Transaction Processing)などである。
【0004】
分散トランザクションサービスを利用する際は、それに参加するサブシステムを前記標準APIに適合させる必要がある。このため、サブシステムがレガシィシステムである等の理由により直接改造ができない場合は、アダプタを作成しなければならない。
【0005】
ここで、異なる開発経緯のサブシステムを複数統合して1つのトランザクションを処理する場合、各サブシステムにおける業務処理や取消操作の粒度が異なるために、前記アダプタが使えない場合がある。
【0006】
例えば、ひとつの伝票に対する処理が完了するまでに数日かかるような業務ドメインの場合、その伝票に対して実行される単位業務ごとに、完結したトランザクションとして扱うのが一般的である。すなわち、1つのトランザクションとして扱う処理の粒度を小さく抑える設計とするのが一般的である。
【0007】
さらに、取消操作については、それに対応する単位業務と同じ粒度で定義されるとは限らない。例えば、Aという単位業務と、Aに続いて行われるBという単位業務とが存在した場合、Aの取消操作A’と、Bの取消操作B’とが、前記単位業務と1対1に対応しない場合がある。つまりBを取り消す場合は、B’を実行するが、その後、A’を実行しなくても、Aを実行する前の状態まで一気に戻す形の設計が考えられる。
【0008】
これは、AとBとの間の状態は一時的なものであり、取消操作としては、常にAの前の状態まで戻すほうがその業務ドメインで一般化している場合に行われる。すなわち、取消操作の粒度を業務ドメインの事情にあわせて設計する場合がしばしば発生する。
【0009】
他の業務ドメインのシステムについても、前記と同様に、そのドメインに適した処理粒度で設計される。
【0010】
このような場合、各業務ドメインで既に稼動しているシステムを複数連携させて、より大域的な業務処理を実行するシステムに統合しようとしても、サブシステム相互の処理粒度の違い、ならびにサブシステムと統合システムとの間の処理粒度の違い、あるいは単位業務とそれに対応する取消操作の粒度の違い、等をアダプタによって吸収することは困難である。
【0011】
一方、トランザクションに参加するサブシステムに対して、コミット操作あるいはロールバック操作を行う場合は、全てに対して一律にどちらか一方の操作を指定する。これはトランザクションのアトミック性を維持することで、システム上のデータの一貫性を保証する考え方である。
【0012】
しかし、前記の大域的な業務処理においては、一貫性が保証できる形で途中の状態へロールバックさせたい場合がある。分散トランザクションサービスでは、このような要求に対応できない。途中の状態へのロールバック処理を、分散トランザクションを複数組み合せて実現しようとすると、複雑なプログラムコードが必要となるため、開発・改造に大きなコストがかかってしまう。
【0013】
(2)ワークフローエンジン
複合業務の進捗を管理制御するミドルウェアとして、ワークフローエンジンが広く用いられている。
【0014】
ワークフローエンジンは、複合業務の構成要素である単位業務について、その処理の実装がどのようなプロセスで構成されているか、どのようなマシン上で稼動しているか、どのようなソフトウェアアーキテクチャ上で実装されているかに関係なく、業務の進捗状態を制御管理できる。近年では、ワークフローエンジンのフロー記述形式が標準化されており、ベンダ依存性も解消される見通しとなっている。
【0015】
しかし、業務進捗状態を戻す処理が必要な場合、ワークフロー記述では分散トランザクションのようにロールバックの概念がないため、取消の操作も通常の操作と同じように記述しなければならない。
【0016】
一部の市販ワークフローパッケージには、ワークフロー記述を補助するものとして、ルール記述をワークフロー上のノードと関連付けて与えておくと、当該ノードに進捗が到達した場合に、当該ルールとのマッチングを行うことで、柔軟な進捗状態管理制御機能を提供するものが存在する。
【0017】
この機能を利用すると、複雑な進捗過程を簡潔なワークフローとして記述することができるが、ルールの適用は進捗状態が当該ノードに停留している場合にのみ行われるので、ロールバック処理の記述には使うことができない。なぜならば、ロールバック処理は、本質的に複数の進捗状態に跨る処理であり、前記のように特定の進捗状態だけで有効な、いわばローカルなスコープに限定されたルールの適用では、実現できないからである。
【0018】
また、ワークフローパッケージを、ロールバック処理が実現できるように拡張することも考えられるが、特定の業務ドメインに限定された仕様となってしまうために現実的ではない。さらに、ドメインを限定しないようにするために、外部の記述を読み込むようにすることも考えられるが、当該ワークフローエンジンの独自仕様に依存したワークフロー記述となることで、前記標準記述形式との互換性が失われてしまう。
【0019】
(3)ルールエンジン
複合業務の進捗を管理制御するミドルウェアとして、ワークフローエンジン以外に、ルール形式で記述したスクリプトを解釈実行するルールエンジンが存在する。
【0020】
ルールにもとづく処理は、複雑な条件判断が多数必要な場合に、ワークフローよりも簡潔に動作を記述できるという利点がある。
【0021】
しかし、ルールの実行部に記述できる処理は、内部変数への値の設定もしくは内部オブジェクトへのメッセージ送信のみであるため、単独で複雑な動作を実現することはできず、内部オブジェクトの実装部分とどのように組み合せるかが重要になる。
【0022】
ルールエンジンとして市販されているミドルウェアが既に存在し、これらはビジネスロジックの記述に適合するよう、ルール間の優先順位制御、ルール間の排他制御、前提ルールの導入、などを行っている。
【0023】
しかし、判定の結果として起動される処理は、前記同様、単純なメッセージ送信のみである。したがって、複合業務の進捗について順方向への制御は柔軟に行えるが、トランザクションにおけるロールバック処理のような逆方向への制御は実現が困難である。
【0024】
【発明が解決しようとする課題】
(1)実装上の制約の問題
分散トランザクションは、異なる業務ドメインで既に稼動しているシステムを複数連携させる場合、業務ドメインごとの最適設計で生じた処理粒度の違いを吸収することが困難である。
【0025】
(2)進捗状態管理制御の柔軟性の問題
分散トランザクションは、トランザクションに参加する複数の処理対象に対する操作を非分割にすることで、業務状態の一貫性を保証するだけなので、複合業務における途中の進捗状態までロールバックする等といったような柔軟な管理制御を行うことはできない。
【0026】
(3)ワークフロー記述の大規模複雑化の問題
ワークフローエンジンは、取消の操作も通常の操作と同じように記述するため、進捗管理制御の自由度は高い。
【0027】
そのかわり、分散トランザクションサービスのロールバック処理のように、常に内部状態の一貫性を維持するための自動的な機能は提供されないので、システムが常に一貫性を維持するよう、メイン処理とロールバック処理の整合性を取ってワークフローを記述しなければならない。
【0028】
一般に、実行時例外はワークフロー上のあらゆる個所で発生する可能性があるため、ロールバック処理を記述するためには多くの判断分岐が必要となり、ワークフロー記述そのものが大規模かつ複雑化してしまう。その結果、開発、デバッグ、改造に稼動がかかりすぎるため、時間的、経済的コストが増大する、あるいは設計仕様やテスト内容にもれが生じやすくなるため、プログラムの品質が低下するなどの問題がある。
【0029】
(4)記述形式の問題
ワークフローエンジンに対し、ロールバック処理が可能なように拡張することも考えられる。
【0030】
しかし、この場合には、特定の業務ドメインへの限定を避けるため、外部記憶装置上のカスタマイズ用記述データに基づいて動作を変えられるようにする必要がある。
【0031】
このカスタマイズ用記述として、ワークフロー記述の形式を変更して対応すると、ワークフロー記述の標準形式との互換性が失われ、当該ワークフローエンジン以外への記述の移植ができなくなるという問題がある。
【0032】
このような従来技術の持つ問題を解決するために、本発明は、次のようなシステムの提供を目的とする。
【0033】
(イ)実装上の制約に関する目的
本発明は、業務ドメインごとの最適設計により処理粒度の違いが生じた場合、既存のサブシステムに改造を加えずに、かつ複雑なプログラムコードを必要としない方法で、これらの違いを吸収し、一貫性を維持したロールバック処理が可能な業務進捗制御装置を提供することを目的とする。
【0034】
(ロ)進捗状態管理制御の柔軟性に関する目的
本発明は、複数の単位業務が束集合的依存関係を構成するような複雑な複合業務において、途中の段階までのロールバック処理が可能な業務進捗制御装置を提供することを目的とする。
【0035】
(ハ)ワークフロー記述の大規模複雑化に関する目的
本発明は、前記記載の柔軟なロールバック処理を、ワークフロー形式で記述する場合に比較して、簡潔かつ管理しやすい形式で記述できる業務進捗制御装置を提供することを目的とする。
【0036】
(ニ)記述形式に関する目的
本発明は、既存のワークフローエンジンに他のミドルウェアとの接続性を損なう改造や、ワークフロー記述の標準形式との互換性を失う拡張を行うことなく、ロールバック処理の実行方法ならびにロールバック処理の記述形式によって動作する業務進捗制御装置を提供することを目的とする。
【0037】
【課題を解決するための手段】
この目的を達成するために、本発明の業務進捗制御装置は、複数の単位業務の組み合わせによって構成される複合業務の進捗を制御するという構成を採るときにあって、(1)単位業務の識別子をキーにして、その単位業務に先行して完了すべき他の単位業務の情報、その単位業務に対応する取消操作の情報およびその取消操作が包含する他の取消操作の情報をルールの形で保存するルール保存手段と、(2)単位業務及びその取消操作の間の関係を示すネットワークデータを保存するネットワークデータ保存手段と、(3)単位業務の処理を進めるときに、ルール保存手段に保存されるルールに従って、ネットワークデータ保存手段に保存されるネットワークデータを更新する更新手段と、(4)単位業務の進捗状態を元に戻す必要があるときに、ネットワークデータ保存手段に保存されるネットワークデータに従って、それに必要となる取消操作を検索する検索手段と、(5)検索手段の検索した取消操作の実行を指示する指示手段とを備えるように構成する。
【0038】
このように構成される本発明の業務進捗制御装置では、ルール保存手段は、単位業務に先行して完了すべき他の単位業務の情報や、単位業務に対応する取消操作の情報や、その取消操作が包含する他の取消操作の情報について記述するルールを保存する。
【0039】
このルール保存手段に保存されるルールを受けて、更新手段は、単位業務の処理を進めるときに、その単位業務の識別子をキーにしてその保存されるルールを検索し、その検索したルールに従って、ネットワークデータ保存手段に保存されるネットワークデータを更新する。
【0040】
このようにして更新されるネットワークデータは、例えば、各単位業務を起点として、その単位業務の取消操作と、その取消操作が包含する取消操作と、その包含される取消操作に対応付けられる単位業務と、さらに、その対応付けられる単位業務を起点として同様にリンクしていく取消操作・単位業務というように、単位業務及びその取消操作の間の関係(依存関係や包含関係)を示すものとなっている。
【0041】
このネットワークデータを受けて、検索手段は、単位業務の進捗状態を元に戻す必要があるときには、進捗状態を戻す単位業務として指定される単位業務を起点にしてネットワークデータを辿ることで、そのロールバックに必要となる取消操作を検索する。このとき、包含先となる取消操作については、包含元となる取消操作を行えば取り消したことになることを考慮しつつ取消操作を検索する。
【0042】
この検索された取消操作を受けて、指示手段は、その検索された取消操作の実行を指示することで、単位業務の進捗状態を元に戻す(ロールバックする)ように処理する。
【0043】
この構成を採るときに、単位業務の間に依存関係はないものの、別の理由で単位業務をグループ化して、それらを一括してロールバックしたいというような要求の出ることがある。
【0044】
このときには、そのグループ化を実現するためのダミーの単位業務や取消操作(依存関係にない単位業務をグループ化するために定義される業務処理を行わないダミーの単位業務や、そのダミーの単位業務に対応付けられるダミーの取消操作)が用意されることになるので、ルール保存手段は、そのダミーの単位業務や取消操作について記述するルールを用意することになる。
【0045】
但し、このとき、更新手段は、ダミーの単位業務や取消操作についても正規の単位業務や取消操作と何ら変わることなく、単位業務の識別子をキーにしてその保存されるルールを検索し、その検索したルールに従って、ネットワークデータ保存手段に保存されるネットワークデータを更新することになる。
【0046】
このように構成される本発明の業務進捗制御装置によれば、複数のサブシステムを統合して1つの統合された業務システムを構築する場合にあって、▲1▼サブシステム相互に処理粒度の違い(サブシステムAとサブシステムBとで単位業務の大きさや数が異なるといったような処理粒度の違い)があっても、▲2▼また、単位業務とそれに対応する取消操作の処理粒度の違い(単位業務と取消操作が1対1に対応したりしなかったりといったような処理粒度の違い)があっても、▲3▼また、サブシステムと統合された業務システムとの間の処理粒度の違い(処理時間が異なるといったような処理粒度の違い)があっても、その違いを吸収できることから、統合された業務システム上で一貫性を維持したロールバックが可能になる。
【0047】
また、ルール形式の動作記述に従って、処理を行った単位業務及びその取消操作の間の依存関係や包含関係を記憶管理して、それに基づいてロールバックを行うことから、複雑なプログラムコードを必要とせずにロールバックが可能になり、また、ワークフロー記述などにロールバック処理を記述しなくてもロールバックが可能になり、また、ワークフロー記述などを変更しなくてもロールバックが可能になる。
【0048】
本発明の業務進捗制御装置の動作については、半導体メモリなどのような適当な記録媒体に記録して提供可能な本発明の業務進捗制御プログラムをインストールすることにより実現されることになる。
【0049】
この本発明の業務進捗制御プログラムは、上述のルール保存手段からルールを読み出す処理と、単位業務の処理を進めるときに、その読み出したルールに従って、上述のネットワークデータ保存手段に保存されるネットワークデータを更新する処理と、単位業務の進捗状態を元に戻す必要があるときに、上述のネットワークデータ保存手段に保存されるネットワークデータに従って、それに必要となる取消操作を検索する処理と、その検索した取消操作の実行を指示する処理とをコンピュータに実行させるための処理を行うことで、複数の単位業務の組み合わせによって構成される複合業務の進捗を制御する処理を行う。
【0050】
このように構成される本発明の業務進捗制御プログラムについては、独立したミドルウェアに集約することで実現することが考えられる。
【0051】
すなわち、単位業務の進行を制御するミドルウェアとして用意される外部プログラム(例えば市販のワークフローエンジン)とは別の形のミドルウェアとして、本発明の業務進捗制御プログラムを実現することが考えられる。
【0052】
ミドルウェアとして実現する場合には、本発明の業務進捗制御プログラムは、単位業務の進行を制御する外部プログラムから単位業務の処理依頼を受け取るとともに、その処理依頼を受けた単位業務の実行を指示し、さらに、その外部プログラムから単位業務の進捗状態を元に戻す処理依頼を受け取るように処理することになる。ここで、進捗状態を元に戻す処理依頼については、外部プログラムが発行する他に、単位業務の実行に失敗するときに、自動的に発行されることになる。
【0053】
この構成に従う場合には、ミドルウェアが互いに独立なプロセスとして動作するとともに、メモリ空間を共有しないことから、ミドルウェア間の連携を実現する構成を構築する必要がある。
【0054】
一方、例えば、同一のワークフロー記述を別々のユーザが使用することがあり、このような場合(処理は同じだがインスタンスが異なる)には、それらのユーザの固有のネットワークデータがネットワークデータ保存手段に保存されることで、それらを区別していく必要がある。
【0055】
このような事情を考慮して、本発明の業務進捗制御プログラムは、ミドルウェアで構成されるときに、外部プログラムから処理依頼を受けた1つ又は複数の単位業務に対して、その実行毎に割り振られるユニークな識別子であるインスタンスな識別子を生成し、ネットワークデータ保存手段に保存されるネットワークデータの該当する単位業務にそれを記録するとともに、外部プログラムに対してそれを通知する処理を行う。
【0056】
このインスタンス識別子の通知を受け取ると、外部プログラムは、必要に応じてインスタンス識別子を指定して単位業務の処理依頼を発行したり、必要に応じてインスタンス識別子を指定して単位業務の進捗状態を元に戻す処理依頼を発行することで、インスタンスの違いを考慮した形で処理依頼を発行できるようになる。
【0057】
さらに、本発明の業務進捗制御プログラムは、親子関係を有するインスタンス識別子を生成する処理を行う。
【0058】
例えば、ある単位業務グループを実行後、ワークフローが分岐し、それぞれのフローにおいて、同一の複数の単位業務が実行されることがあり、そのような場合には、どちら側のフローのインスタンスであるのかを区別していく必要がある。また、例えば、入れ子のワークフローにおいても、同一の複数の単位業務が実行されることがあり、そのような場合には、フローのどの箇所のインスタンスであるのかを区別していく必要がある。
【0059】
このような事情を考慮して、本発明の業務進捗制御プログラムは、親に相当する単位業務グループ(1つ又は複数の単位業務で構成される)に対して、子に相当する単位業務グループ(1つ又は複数の単位業務で構成される)があれば、前者のインスタンス識別子を親として持つインスタンス識別子を後者に割り当てることで、外部プログラムが親子関係を有するインスタンス識別子を使って処理依頼を行えるようにする。
【0060】
そして、その親子関係を持つインスタンス識別子の生成機能に合わせて、本発明の業務進捗制御プログラムは、インスタンス識別子を指定して、親子関係にあるインスタンス識別子の検索要求を発行し、その検索結果を受け取る処理を行ったり、2つのインスタンス識別子を指定して、包含関係にあるのか否かの判定要求を発行し、その判定結果を受け取る処理を行う。
【0061】
例えば、ワークフローが分岐しているような場合にあって、分岐後の単位業務グループ(子に相当する)内で処理を取り消す必要が起こると、分岐前の単位業務グループ(親に相当)内で処理を取り消す必要が起こる場合がある。
【0062】
そのような場合に、本発明の業務進捗制御プログラムは、このような親子関係を有するインスタンス識別子の機能を持つことで、分岐後の単位業務グループのインスタンス識別子から、分岐前の単位業務グループのインスタンス識別子を直ちに特定できるようになり、そのような取り消しのためのネットワークデータを作成できるようになることで、そのような取り消しを簡単に行うことができるようになる。
【0063】
また、例えば、ワークフローの記述が入れ子となっているような場合にあって、入れ子の内側の単位業務グループ(子に相当する)内で処理を取り消す必要が起こると、入れ子の外側の単位業務グループ(親に相当)内で処理を取り消す必要が起こる場合がある。
【0064】
そのような場合に、本発明の業務進捗制御プログラムは、このような親子関係を有するインスタンス識別子の機能を持つことで、入れ子の内側の単位業務グループのインスタンス識別子から、入れ子の外側のインスタンス識別子を直ちに特定できるようになり、そのような取り消しのためのネットワークデータを作成できるようになることで、そのような取り消しを簡単に行うことができるようになる。
【0065】
そして、このような機能を持つことで、本発明の業務進捗制御プログラムは、他のミドルウェアとの連携時に、探索の範囲を指定させることができるようになる。
【0066】
本明細書では、サブシステムの連携を行う統合システムの実装において、市販のミドルウェアパッケージが広く利用されていることから、本発明の業務進捗制御プログラムを実現するソフトウェア部品の具体例としてミドルウェアを挙げている。
【0067】
しかしながら、本発明は複合業務を提供するシステムに広く適用可能なものであり、実装形態は前記に限定されるものではない。例えば、単一のプロセス上で動作し、異なる業務内容のコンポーネントを組み込むことが可能で、それらの連携によって実現される複合業務を柔軟に定義可能な、複合業務システムフレームワークなどが考えられる。このように実施形態を広く考えた場合、前記ソフトウェア部品の具体的呼称としては、ミドルウェア、コンポーネント、モジュール、ライブラリ、等が含まれる。
【0068】
また、既存のミドルウェア製品の具体例としては、複数のサブシステムに接続して業務処理依頼を送信するリクエストブローカ、あるいはサブシステムへの業務処理依頼の順序を制御するワークフローエンジン、あるいはワークフローエンジンから発行される処理依頼イベントならびにリクエストブローカを通して返却されるサブシステムの処理結果シグナルなどの様々なシステム内通信を仲介するメッセージバス、等が挙げられる。
【0069】
【発明の実施の形態】
本発明の実施形態について、まず、ルール記述に基づくロールバック処理について説明する。その後、このロールバック処理の機能を、ステイタスマネージャと呼ぶ独立したミドルウェアに集約する際に必要となるミドルウェア間連携動作について説明する。
【0070】
図1は、本発明の実施の形態について、全体構成を示した図である。
【0071】
図中、10000は、本発明を具備する業務進捗管理制御システムである。
【0072】
001は、ロールバック処理を実行するステイタスマネージャである。002は、ステイタスマネージャ001と他の処理部のシステム内通信を仲介するメッセージバスである。003は、メッセージバス002に接続し、単位業務処理の順序制御を行うワークフローエンジンである。
【0073】
004は、メッセージバス002に接続し、単位業務処理を実行する単位業務処理システムである。005は、ロールバック処理に必要なルール記述を保存したルール記述外部記憶装置である。006は、ワークフローエンジン003が単位業務処理の順序制御を行うために必要なワークフロー記述を保存したワークフロー記述外部記憶装置である。
【0074】
ここで、単位業務処理システム004が業務進捗管理制御システム10000の外部構成要素となっているが、業務進捗管理制御システム10000の内部に含まれる処理部として構成されている場合でも、本質的な相違は生じない。
【0075】
また、業務進捗管理制御システム10000の内部構成要素として、ステイタスマネージャ001、メッセージバス002、ワークフローエンジン003の3つのミドルウェアを組み合せる形態を示しているが、これらの3つの構成要素をシステム内に直接埋め込まれた処理部として実装した場合でも、本質的な相違は生じない。
【0076】
また、業務進捗管理制御システム10000の内部構成要素として、メッセージバス002とワークフローエンジン003が存在するが、メッセージバス002に相当する構成要素を使用せずに、直接内部構成要素同士が通信する形態をとった場合や、ワークフローエンジン003に相当する構成要素を使用せずに、直接単位業務処理の順序をハードコーディングする形態をとった場合でも、本質的な相違は生じない。
【0077】
引き続いて、図1のステイタスマネージャ001の構成要素について説明する。
【0078】
007は、ルール記述外部記憶装置005からルール記述をプログラム上に読み込むルール蓄積部である。008は、複合業務インスタンスごとにメモリ領域を確保し、複合業務の進捗状態に関するデータを保持する進捗状態記憶部である。009は、ルール蓄積部007と進捗状態記憶部008とを参照し、ルール記述によるロールバック処理を実行するルール解釈実行部である。
【0079】
引き続いて、図1のワークフローエンジン003の構成要素について説明する。
【0080】
010は、ワークフロー記述外部記憶装置006からワークフロー記述をプログラム上に読み込むワークフロー蓄積部である。011は、ワークフローインスタンスごとにメモリ領域を確保し、実行順序制御に必要なデータを保持するワークフロープロセスワーキングメモリである。012は、ワークフロー蓄積部010とワークフロープロセスワーキングメモリ011とを参照し、ワークフロー記述による実行順序制御を行うワークフロー解釈実行部である。
【0081】
次に、図2に、ルール蓄積部007に展開されたルール記述のデータ構造を示す。
【0082】
0201は、1つの依頼ルール要素を表すデータ構造である。この依頼ルール要素0201は、0202に示す業務識別子(依頼業務の識別子で1つの単位業務識別子)と、0203に示す前提業務集合と、0204に示す取消操作集合とから構成される。
【0083】
前提業務集合0203は、0205に示す1つ又は複数の前提業務識別子から構成される。取消操作集合0204は、0206に示す1つ又は複数の取消操作識別子から構成される。
【0084】
一方、0207は、1つの取消ルール要素を表すデータ構造である。この取消ルール要素0207は、0208に示す業務識別子と、0209に示す包含業務集合0209とから構成される。包含業務集合0209は、0210に示す1つ又は複数の包含業務識別子から構成される。
【0085】
ルール蓄積部007では、複数の依頼ルール要素0201や取消ルール要素0207がルールの優先順位にもとづいて保持されている。
【0086】
次に、図3に、進捗状態記憶部008に展開された進捗状態のデータ構造と、ルール解釈実行部009に展開された作業用のデータ構造を示す。
【0087】
進捗状態記憶部008の内部には、単位業務依頼同士の依存関係を表したネットワーク構造のデータとして進捗状態が表現されている。
【0088】
0301は、1つの単位業務依頼に対応した依頼履歴ノードである。0306は、1つの単位業務依頼に対応した取消操作ノードである。
【0089】
依頼履歴ノード0301は、取消操作ノード0306を参照する逆操作ポインタ配列0305にポインタを0個以上保持する。取消操作ノード0306は、依頼履歴ノード0301を参照する順操作ポインタ配列0310にポインタを1個以上保持する。
【0090】
依頼履歴ノード0301は、0304に示す依存操作ポインタ配列を保持し、他の依頼履歴ノード0301を0個以上参照する。また、取消操作ノード0306は、0309に示す包含操作ポインタ配列を保持し、他の取消操作ノード0306を0個以上参照する。
【0091】
ルール解釈実行部009の作業用データには、0311に示す待機ノードリストと、0312に示す処理済ノードリストが存在する。
【0092】
待機ノードリスト0311と処理済ノードリスト0312は、ともに、依頼履歴ノード0301へのポインタと取消操作ノード0306へのポインタが混在したリストである。
【0093】
次に、図4に、ルール解釈実行部009の動作を表したフローチャートを示す。
【0094】
このフローチャートのステップS0402では、実際に単位業務依頼が実行されるか、ユーザから複合処理の中断要求が送信されるまで、イベント待ちの状態を維持し続ける。イベント待ちの状態を抜けた場合、ステップS0403で、単位業務依頼か中断要求かにより分岐を行う。
【0095】
イベント待ちの状態を抜けた理由が中断要求の場合には、ステップS0407で、中断要求で指定されたロールバック地点に該当する依頼履歴ノード0301を待機ノードリスト0311に登録した後、ステップS0408で、一括ロールバック処理を実行し、その後再度ステップS0402に戻る。
【0096】
一方、イベント待ちの状態を抜けた理由が単位業務依頼であった場合には、ステップS0404で、進捗状態記憶部008の更新処理を実行した後、ステップS0405で、依頼された単位業務を実行する。
【0097】
その実行結果が異常終了だった場合には、ステップS0409で、異常終了した依頼履歴ノード0301を待機ノードリスト0311に登録した後、ステップS0408で、一括ロールバック処理を実行する。一方、その実行結果が正常終了だった場合には、再びステップS0402に戻る。
【0098】
次に、図5に、ルール解釈実行部009による進捗状態記憶部008の更新処理の動作を詳細に表したフローチャート(図4のフローチャートのS0404の詳細なフローチャート)を示す。
【0099】
このフローでは、後に一括ロールバック処理を実行する際に必要となる、単位業務間の依存関係、単位業務と取消操作の対応関係、取消操作間の包含関係を、進捗状態記憶部008中のネットワーク構造データを操作することで、記憶、更新している。動作の説明は、「実施例」の欄にて後述する。
【0100】
次に、図6に、ルール解釈実行部009による一括ロールバック処理の動作を詳細に表したフローチャート(図4のフローチャートのS0408の詳細なフローチャート)を示す。
【0101】
このフローでは、進捗状態記憶部008中のネットワーク構造データを参照することで、ロールバックに必要かつ十分な取消操作のリストを計算し、それらを実行する。動作の説明は、「実施例」の欄にて後述する。
【0102】
引き続いて、前記ロールバック処理の機能を、ステイタスマネージャ001と呼ぶ独立したミドルウェアに集約する際に必要となるミドルウェア間連携動作について説明する。
【0103】
図7に、本発明のミドルウェア間連携動作を実現するための構成とデータ構造を示す。
【0104】
ミドルウェアは、独立したプロセスで動作するとともに、メモリ空間も別々のものになっている。これから、ミドルウェア間連携動作を実現するための仕組みが必要となる。この仕組みとして、本発明では、業務をインスタンスレベルで識別するためのインスタンス識別子を使ってミドルウェア間連携動作を実現するという構成を採っている。
【0105】
0701は、ステイタスマネージャ001の中に設けた識別子生成部である。識別子生成部0701には、インスタンス識別子の新規生成ならびに親インスタンス識別子の取得の外部オペレーションが用意される。ここで、このインスタンス識別子は、1つの単位業務に対して生成されることもあるし、複数の単位業務のグループに対して生成されることもある。
【0106】
0702は、ミドルウェア間の通信メッセージの中で他のデータと一緒に渡されるインスタンス識別子である。
【0107】
インスタンス識別子0702は、ミドルウェア間における通信メッセージ0703のデータの一部として受け渡しが可能で、コピー操作、同値判定、包含判定の3つの手段が提供された抽象データ型であればどのように実装しても良い。
【0108】
これには、オブジェクトとして実装する場合、あるいは文字列や整数の配列などプログラミング言語に依存しない可変長の基本型データとそれに対する関数として実装する場合、あるいは整数などの基本型と当該基本型を引数とする識別子生成部0701の外部オペレーションとして実装する場合などが含まれる。
【0109】
識別子生成部0701の中には、自身が生成したインスタンス識別子のオリジナルが保持される。識別子生成部0701の外部オペレーションによって、インスタンス識別子の新規生成依頼があった場合、前記オリジナルと重複しないようユニークなインスタンス識別子が作成され、返却される。
【0110】
また、インスタンス識別子の生成を依頼する際に、引数として他のインスタンス識別子を1つ指定できる。このような生成依頼があった場合、引数として渡されたインスタンス識別子を親として持つインスタンス識別子が作成され、そのコピーが返却される。
【0111】
これによって、インスタンス識別子は相互にツリー状の親子関係が定義される。識別子生成部0701の外部オペレーションによって、親インスタンス識別子の取得依頼があった場合、前記親子関係にもとづいて親となるインスタンス識別子が返却される。また、インスタンス識別子Aの子孫がインスタンス識別子Bだった場合、「BはAに含まれる」という意味の包含判定に対して、真が返される。
【0112】
さらに、0704は、ステイタスマネージャ001の中に設けた単位業務実行部である。単位業務実行部0704には、0705に示す実行内容テーブルが保持される。
【0113】
実行内容テーブル0705は、単位業務識別子あるいは取消操作識別子と、実行コードとの組から構成されている。単位業務実行部0704には、単位業務識別子や取消操作識別子と必要な業務データとを渡すと、実行内容テーブル0705にもとづき、該当する実行コードを処理する外部オペレーションが処理を実行する。
【0114】
以上、図7に示した構成を利用することで、各ミドルウェアに分散する様々なデータの対応を実装に依存しない形態でとることができる。これによってミドルウェア間連携動作を行う。動作の説明は、「実施例」の欄にて後述する。
【0115】
【実施例】
本発明の実施例について、通信設備選定システムに適用した場合を具体例にして説明する。
【0116】
まず、実施例の通信設備選定業務について業務内容を説明する。
【0117】
通信設備選定業務は、3つの部分業務ドメインから構成されている。1つは通信事業者の所外通信ケーブル設備のデータベースにおいて、通信事業者の収容局ビルから消費者の住居近辺の接続点までの間に既に敷設されているケーブルを対象として、選定、工事予約、施工結果投入などの業務を行う業務ドメインである。ここでは、これを所外設備業務ドメインと呼ぶ。
【0118】
また、もう1つは、通信事業者の所内通信ケーブル設備のデータベースにおいて、所外ケーブルへの接続端子盤から交換機周辺までの間に既に敷設されている所内ケーブルを対象として、選定、工事予約、施工結果投入の業務を行う業務ドメインである。ここでは、これを所内設備業務ドメインと呼ぶ。
【0119】
また、もう1つは、交換機側スロットの位置、スロットに差し込む端末装置を対象として、選定、施工結果投入の業務を行う業務ドメインである。ここでは、これを端末設備業務ドメインと呼ぶ。
【0120】
各業務ドメインにおける1つ1つの業務を、ここでは非分割な操作という観点で、単位業務と呼ぶことにする。
【0121】
図8に、所外設備業務ドメインの単位業務間依存関係を図示し、図9に、所内設備業務ドメインの単位業務間依存関係を図示し、図10に、端末設備業務ドメインの単位業務間依存関係を図示する。
【0122】
この図8ないし図10において、矢印の元の業務が終了しているときのみ、矢印の先の業務を実行できることを意味している。そして、各業務ドメインの一連の単位業務系列がどこまで実行されたかを、進捗状態と呼ぶことにする。
【0123】
途中の段階における進捗状態では、操作対象となる設備データベース上の状態データが一時的に変更される。これは例えば、工事予約を行った設備は、他の業務遂行者によって設備を選定対象とされないようにするためである。
【0124】
したがって、途中の進捗状態で業務をとりやめる場合は、データベース上の状態データを最初の状態に戻す必要がある。これを取消操作と呼ぶことにする。各業務ドメインの単位業務間の依存性や取消操作は、その業務ドメインの中で扱いやすい様にモデル化されている場合が多く、一般に統一されていない。
【0125】
通信設備選定業務は、このような3つの部分業務ドメインの多様な単位業務の組み合わせで実現される。ここで、通信設備選定業務の結果として得られる設備データはトポロジー的に接続し、かつ提供可能サービスが注文内容に合致するように、全体的な整合性が要求される。
【0126】
このため、例えば設備の新設を行う場合は、各部分業務ドメインの作業は選定完了状態で一時停止し、全体的な整合性が満足される設備の組み合わせが確保できたときのみ、工事予約等の次の進捗状態に進むことになる。つまり、各単位業務は部分業務ドメインを跨る形での依存関係を持つということであり、ここでは、このような単位業務群全体を指して複合業務と呼ぶ。
【0127】
以下では、実施例として、設備新設の場合の複合業務を示す。
【0128】
図11ないし図16に、ルール蓄積部007に蓄積される設備新設に関連する単位業務のルール記述(図2に示すデータ構造を持つ)を図示し、図17に、設備新設を実行する場合のワークフロー記述を図示する。
【0129】
ここで、図11に示すルール記述は、所外設備業務ドメインの依頼ルールのルール記述(図8に示す単位業務間依存関係から定義される)を示し、図12に示すルール記述は、所外設備業務ドメインの取消ルールのルール記述(図8に示す単位業務間依存関係から定義される)を示している。
【0130】
また、図13に示すルール記述は、所内設備業務ドメインの依頼ルールのルール記述(図9に示す単位業務間依存関係から定義される)を示し、図14に示すルール記述は、所内設備業務ドメインの取消ルールのルール記述(図9に示す単位業務間依存関係から定義される)を示している。
【0131】
また、図15に示すルール記述は、端末設備業務ドメインの依頼ルールのルール記述(図10に示す単位業務間依存関係から定義される)を示し、図16に示すルール記述は、端末設備業務ドメインの取消ルールのルール記述(図10に示す単位業務間依存関係から定義される)を示している。
【0132】
図11に示す依頼ルールR1102について具体的に説明するならば、この依頼ルールR1102は、図8の所外工事予約0802に対応付けられる「所外工事予約」を業務識別子とし、図8の所外設備選定0801に対応付けられる「所外設備選定」を前提業務集合とし、図8の所外予約取消0806に対応付けられる「所外予約取消」を取消操作集合とするルールである。
【0133】
また、図12に示す取消ルールR1202について具体的に説明するならば、この取消ルールR1202は、図8の所外予約取消0806に対応付けられる「所外予約取消」を業務識別子(取消操作の業務識別子)とし、図8の所外選定取消0805に対応付けられる「所外選定取消」を包含業務集合(包含される取消操作の業務集合)とするルールである。
【0134】
ここで、包含業務集合とは、取消ルールR1202で説明するならば、所外予約取消0806を行うと、所外選定取消0805については取り消しを行ったことになる、という意味で包含業務集合と呼んでいる。
【0135】
次に、図17に示すワークフローの実行がエラーや中断を発生せずに、全ての業務が正常に完了した場合について説明する。
【0136】
まず、ワークフローの開始S1701では、ルール解釈実行部009も図4の開始S0401の状態にあり、直後にS0402が実行され、ルール解釈実行部009は、中断要求もしくは単位業務依頼の入力を待つ状態となる。
【0137】
ワークフローの所外設備選定S1702が実行されると、ルール解釈実行部009は、S0403の条件判断を行い、イベント待ちの状態を抜けた理由が単位業務依頼であることで、S0404に進む。このS0404で行う進捗状態記憶部更新処理の詳細については後述する。
【0138】
次に、S0405で、当該処理プログラムに実際に単位業務の依頼を行い、処理を実行する。S0406で、前記処理の実行結果を判断し、正常に終了した場合は、再びS0402で待機する。このように、ワークフロー記述のステップが進むに従い、ルール解釈実行部009における前記動作サイクルを繰り返す。
【0139】
ここで、ワークフローのS1705における選定結果についての承認判定で、「承認しない」(No)になった場合を説明する。
【0140】
この状態における進捗状態記憶部008のデータ構造は、図18に示すものである。
【0141】
この場合、図4における処理は、S0402を抜け、S0403の条件判断で「中断要求」(Yes)に進み、S0407で、待機ノードリスト0311に当該依頼履歴ノードが登録される。引き続いて、S0408の一括ロールバック処理で業務進捗状態が元に戻され、再びS0402で待機する。
【0142】
また、ワークフローの所外工事予約S1707における業務エラーにより、ロールバック処理が実行された場合を説明する。
【0143】
この状態における進捗状態記憶部008のデータ構造は、図19に示すものである。
【0144】
この場合、図4における処理は、S0405から返ってきた後、S0406の条件判断で「異常終了」(No)に進み、S0409で、待機ノードリスト0311に当該依頼履歴ノードが登録される。引き続いて、S0408の一括ロールバック処理で業務進捗状態が元に戻され、再びS0402で待機する。
【0145】
図18ないし図21は、図17のワークフロー記述にもとづき進捗状態記憶部008を更新した場合のスナップショットである。
【0146】
ここで、図18はワークフローのS1705におけるスナップショットであり、図19はワークフローのS1707におけるスナップショットであり、図20はワークフローのS1710におけるスナップショットであり、図21はワークフローのS1717におけるスナップショットである。
【0147】
次に、図5に示す進捗状態記憶部008の更新処理のフローチャートについて説明する。
【0148】
この図5に示す進捗状態記憶部更新処理は、図4のS0404を詳細に示したものである。このS0404を実行する際は、S0402で入力された業務識別子がワークフローから通知されるものとする。
【0149】
ここでは、図17の所外工事予約S1707における進捗状態記憶部更新処理について説明する。このときのスナップショットは図19に示すものである。
【0150】
まず、図5の最初のステップS0501で、ルール蓄積部007の中の依頼ルール集合を検索し、ワークフローから通知された業務識別子と同じ業務識別子を持つ依頼ルールを取得する。
【0151】
この場合には、所外工事予約S1707の業務識別子がワークフローから通知されることになるので、「所外工事予約」を業務識別子に持つ依頼ルールR1102を取得することになる。
【0152】
このとき、もし該当する依頼ルールが存在しない場合は、S0502の判断分岐で、S0509のシステムエラー処理へと進む。一方、該当する依頼ルールが複数存在する場合は、ルール蓄積部007における依頼ルールの優先順位に基づき、1つが決定される。
【0153】
S0503では、得られたルールの内容を参照し、業務識別子に対応する依頼履歴ノードを新規に作成する。依頼ルールR1102の場合には、ワークフローの所外工事予約S1707に対応付けられるノードN1804(図19に示す)を新規に作成する。
【0154】
引き続いてS0504では、得られたルールの内容を参照し、ルールの指定する前提業務識別子に対応する依頼履歴ノードからのポインタを作成する。依頼ルールR1102の場合には、ワークフローの所外設備選定S1702が前提業務識別子になるので、その前提業務識別子に対応するノードN1801から新規に作成したノードN1804に向けてポインタを作成し、ノードN1801の依存操作ポインタ配列0304に格納する。
【0155】
引き続いてS0505では、得られたルールの内容を参照し、ルールの指定する取消操作識別子に対応する取消操作ノードを新規に作成し、双方向のポインタを作成する。依頼ルールR1102の場合には、ルールの指定する取消操作識別子に対応する所外予約取消のノードN1813を新規に作成する。ポインタは、まずノードN1813からノードN1804に向けて作成し、ノードN1813の順操作ポインタ配列0310に格納する。同様に、ノードN1804からノードN1813に向けて作成し、ノードN1804の逆操作ポインタ配列0305に格納する。
【0156】
引き続いてS0506では、ルール蓄積部007の中の取消ルール集合を検索し、新規に作成したノードN1813の取消操作識別子と同じ取消操作識別子を業務識別子として持つ取消ルールを取得する。依頼ルールR1102の場合には、「所外予約取消」が取消操作識別子となっているので、図12の取消ルール集合を検索することで、この「所外予約取消」を業務識別子として持つ取消ルールR1202を新たに取得する。
【0157】
このとき、もし該当する取消ルールが存在しない場合は、S0507の判断分岐で、S0510のシステムエラー処理へと進む。一方、該当する取消ルールが複数存在する場合は、ルール蓄積部007における取消ルールの優先順位に基づき、1つが決定される。
【0158】
引き続いてS0508では、得られたルールの内容を参照し、ルールの指定する包含業務識別子に対応する取消操作ノードに向けて、ポインタを作成する。取消ルールR1202の場合には、「所外選定取消」が包含業務識別子となるので、ノードN1813から、その所外選定取消のノードN1810に向けてポインタを作成し、ノードN1813の包含操作ポインタ配列0309に格納する。
【0159】
以上のステップを実行することによって、進捗状態記憶部008を更新する。なお、S0504、S0508では、複数の業務識別子があれば、それに対応する複数のノードへのポインタをはる。また、S0505では、既に該当する業務識別子の取消操作ノードが存在すれば、新規にノードを作成しないで、図20に示すように当該ノードを使用する。
【0160】
次に、図6に示す一括ロールバック処理のフローチャートについて説明する。
【0161】
この図6に示す一括ロールバック処理は、図4のS0408を詳細に示したものである。このS0408を実行する際は、S0407の処理に従って、中断要求で指定された依頼履歴ノードが待機ノードリスト0311に登録されているか、あるいは、S0409の処理に従って、異常終了した依頼履歴ノードが待機ノードリスト0311に登録されている。
【0162】
この待機ノードリスト0311は、図3に示すように、ルール解釈実行部009の作業用データで、処理済ノードリスト0312とともに使用する。
【0163】
ここでは、図17のワークフローの所内工事予約S1710でシステム例外が生じ、ロールバック処理を実行する場合について説明する。このときのスナップショットは図20に示すものである。待機ノードリスト0311には、ワークフローの所内工事予約S1710に対応付けられるノードN1806が登録される。
【0164】
まず、図6の最初のステップS0601で、待機ノードリスト0311中の依頼履歴ノードの依存操作ポインタ配列0304をたどることで、取消の必要がある依頼履歴ノードを全て検索して、それらを待機ノードリスト0311に追加する。S1710に対応付けられるノードN1806の依存操作ポインタ配列0304は何もポイントしていないので、この段階では追加処理は行わないことになる。
【0165】
S0602で、待機ノードリスト0311中の依頼履歴ノードの逆操作ポインタ配列0305をたどることで、取消操作ノードを検索して、それらを待機ノードリスト0311に追加する。S1710の場合、逆操作ポインタ0305をたどることでノードN1814を検索できるので、このノードN1814を待機ノードリスト0311に追加することになる。
【0166】
S0603で、待機ノードリスト0311中の取消操作ノードの包含操作ポインタ配列0309をたどることで、取消操作ノードを検索して、それらを待機ノードリスト0311に追加する。S1710の場合、包含操作ポインタ配列0309をたどることでノードN1812を検索できるので、このノードN1812を待機ノードリスト0311に追加することになる。
【0167】
S0604で、待機ノードリスト0311中の取消操作ノードの順操作ポインタ配列0310をたどることで、依頼履歴ノードを検索して、それらを待機ノードリスト0311に追加する。S1710の場合、順操作ポインタ配列0310をたどることでノードN1803を検索できるので、このノードN1803を待機ノードリスト0311に追加することになる。
【0168】
ここで、S0601〜S0604の追加処理を行うにあたって、既に待機ノードリスト0311中に存在するものについては重複の無いように処理する。
【0169】
S0605で、待機ノードリスト0311の要素数がS0601の時点と比べて増加したかどうかにより判断分岐を行う。ここでは、増加した(Yes)のでS0601に戻る。
【0170】
引き続いてS0601〜S0605を再度実行する。この過程では待機ノードリスト0311の要素数は増大しないので、S0605で、増加しない(No)方へ進む。
【0171】
S0606で、待機ノードリスト0311中の依頼履歴ノードを全て処理済ノードリスト0312に追加する。S1710の場合、ノードN1806とノードN1803が追加される。依頼履歴ノードは取消操作ではないので、処理済ノードリスト0312に追加するのである。
【0172】
S0607で、待機ノードリスト0311中の取消操作ノードの包含操作ポインタ配列0309をたどって、それにより検索された取消操作ノードを全て処理済ノードリスト0312に追加する。S1710の場合、ノードN1812が追加される。包含される取消操作ノードについては、包含する取消操作ノードについて取消処理を行えば、自動的に取り消しを行ったことになるので、取消処理を行うことなく処理済ノードリスト0312に追加するのである。
【0173】
S0608で、待機ノードリスト0311中の取消操作ノードの内、処理済ノードリスト0312中に存在しない全てのノード(取消操作ノードである)について、対応する取消処理を実行する。S1710の場合、ノードN1814について取消処理を実行する。実行済みの取消操作ノードは処理済ノードリスト0312に追加される。
【0174】
S0609で、前記取消処理のエラーを判定し、エラー発生(Yes)の場合はS0612のシステムエラー処理へ移行する。全て正常に終了した場合は(No)に進む。
【0175】
S0610で、処理済ノードリスト0312の全てのノードを進捗状態記憶部008から削除する。
【0176】
S0611で、待機ノードリスト0311と処理済ノードリスト0312を空にする。
【0177】
以上のステップにより、必要最小限の取消処理が実行される。
【0178】
以上の方法によると、ワークフロー記述にロールバック処理を記述しなくても、業務種別ごとのルール記述と依頼履歴の依存関係にもとづいて自動的にロールバック処理が実行されるため、記述の大規模複雑化の傾向を抑えることができる。これは本発明で解決しようとする課題の1つである。
【0179】
上述した例では、ノードN1814について取消処理を実行しており、これにより、包含関係にあるノードN1812についても取消処理を実行したことになる。従って、図17のワークフロー上のS1710とS1704について取り消しを行ったことになる。
【0180】
図17のワークフロー記述上に、S1704とS1710のみを選んで再度実行するフローが定義されていれば、ロールバック後の再実行について特に問題は起こらない。
【0181】
一方、S1704とS1710のみを選んで再度実行するフローが定義されていない場合には、最初からワークフローを実行しなおすことが必要であり、ノードN1812だけではなく、ノードN1810やノードN1811やノードN1813の取消処理も実行しなければならない。
【0182】
このように、依頼処理の依存関係はないものの、別の理由で依頼処理群をグループ化し、それらを一体としてロールバックさせたい場合がある。
【0183】
このときは、ワークフローのS1701の直後で、ダミーノードとして依頼履歴ノードと取消操作ノードを作成するステップを追加する。そして、グループ化したいノードを作成するときに、そのダミーノードとの間のポインタを依存操作ポインタ配列0304や包含操作ポインタ配列0309に格納し、相互に関連付ける。
【0184】
図22に、このダミーノードを追加したスナップショットの一例を図示する。このダミーノードの追加にあたり、ダミーノードの依頼処理識別子を、ルール集合のR1101、R1201、R1301、R1401、R1501、R1601の依存業務集合または包含業務集合に追加すればよく、特別な機能拡張は不要である。
【0185】
ここで、図22に示すような形でダミーノードを追加すると、全てのノードを取り消すことができるようになるが、このダミーノードの追加の形態については、ワークフローの記述に合わせる形で追加することになる。
【0186】
以上の方法によると、ルール記述に業務の種類ごとの依存関係を、ワークフロー記述にグループ化させたい業務インスタンスの範囲を指定するというように、分離して記述できるので、柔軟なロールバック処理が可能となる。これは本発明で解決しようとする課題の1つである。
【0187】
次に、ミドルウェア間連携動作の実施例を説明する。
【0188】
ワークフローエンジン003から単位業務の実行が依頼された場合、ステイタスマネージャ001は、インスタンス識別子を新規生成し、そのコピーを進捗状態記憶部008とワークフロープロセスワーキングメモリ011にそれぞれ記憶する。
【0189】
図17のワークフロー記述の場合、S1702、S1703、S1704が順に実行されると、単位業務依頼のメッセージはステイタスマネージャ001に送信され、それぞれインスタンス識別子が生成されて、ノードN1801、ノードN1802、ノードN1803のインスタンス識別子0308にコピーが格納されるとともに、当該業務が図7に示す単位業務実行部0704で実行される。
【0190】
当該業務の実行結果が得られたらば、そのデータとともにワークフローエンジン003に当該インスタンス識別子のコピーを返却する。
【0191】
S1705のステップで中断が指示された場合は、ロールバックする地点をステイタスマネージャ001に伝える必要がある。そこで、ワークフロー記述においてS1702での結果データとして受け取ったインスタンス識別子を引数として、S0402の状態にあるステイタスマネージャ001に中断要求を入力する。すると、ステイタスマネージャ001内の単位業務実行部0704により必要な取消操作が実行される。
【0192】
以上の方法によると、進捗状態記憶部008に記憶されたネットワークデータ上の依存関係や包含関係を、ルール解釈実行部009が参照することにより、単位業務実行部0704で実行される単位業務や取消操作の処理粒度の違いは自動的に吸収される。
【0193】
また、ネットワークデータへの記憶・更新操作に必要な動作記述は、ルール蓄積部007にルール形式で取り込まれ実行されるので、複雑なプログラムコードを必要としない。すなわち、従来の分散トランザクションサービスのアダプタでは困難であったことが、実現されている。これは本発明で解決しようとする課題の1つである。
【0194】
一方、ステイタスマネージャ001の側では、インスタンス識別子の包含判定を行うことで、ノードの探索範囲を管理できる。すなわち、インスタンス識別子の親子関係に応じて、あるノードの下に他の複数のノードをグループ化することにより、探索対象をツリー状に構造化できる。
【0195】
複数の親を持つインスタンス識別子について探索する場合は、まず当該インスタンス識別子の先祖にあたるインスタンス識別子の系列を、図7に示した識別子生成部0701の「親識別子の取得依頼」を必要回数使用することで取得する。得られた識別子系列の任意の部分系列をキーとして、任意のレベルのノードグループを取得できる。
【0196】
これは、図2に示す依頼ルール要素0201に適合するノードを探索する場合に、基点となるノードに近いレベルのノードグループから、段階的に範囲を広げながら探索することを可能にする。
【0197】
探索範囲が構造化されておらず、常に全て探索対象となってしまうと、条件に合致するノードが複数存在する場合が容易に発生する。例えば、ワークフロー記述の側に、同じ業務識別子のステップが複数組み込まれている場合が考えられる。
【0198】
この場合は、同じ業務識別子のノードが同じ探索範囲に属さないようにグループをつくり、そのグループに対応するインスタンス識別子をあらかじめ生成しておいて、問題のステップでインスタンス識別子を生成する際、当該識別子を親として、識別子生成部0701のオペレーションを呼び出すことで解決できる。
【0199】
また例えば、ワークフローエンジン003が並列処理で実行されている場合などに対応するためには、各ワークフロー記述のプロセスに対応してインスタンス識別子を生成しておき、それを親として指定して識別子生成部0701の生成オペレーションを呼び出すことで解決できる。
【0200】
以上の方法によると、ワークフロー記述形式の変更やワークフローエンジン003の改造を行うことなく、ステイタスマネージャ001との連携動作が可能となる。これは本発明で解決しようとする課題の1つである。
【0201】
このようにして、本発明のステイタスマネージャ009は、ミドルウェア間連携動作を実現するために、親に相当する単位業務グループ(1つ又は複数の単位業務で構成される)に対して、子に相当する単位業務グループ(1つ又は複数の単位業務で構成される)があれば、前者のインスタンス識別子を親として持つインスタンス識別子を後者に割り当てることで、ワークフローエンジン003が親子関係を有するインスタンス識別子を使って処理依頼を行えるように処理するのである。
【0202】
そして、本発明のステイタスマネージャ009は、その親子関係を持つインスタンス識別子の生成機能に合わせて、インスタンス識別子を指定して、親子関係にあるインスタンス識別子の検索要求を発行し、その検索結果を受け取る処理を行ったり、2つのインスタンス識別子を指定して、包含関係にあるのか否かの判定要求を発行し、その判定結果を受け取る処理を行うのである。
【0203】
例えば、ワークフローが分岐しているような場合にあって、分岐後の単位業務グループ(子に相当する)内で処理を取り消す必要が起こると、分岐前の単位業務グループ(親に相当)内で処理を取り消す必要が起こる場合がある。
【0204】
そのような場合に、図23や図24から分かるように、本発明のステイタスマネージャ009は、このような親子関係を有するインスタンス識別子の機能を持つことで、分岐後の単位業務グループのインスタンス識別子から、分岐前の単位業務グループのインスタンス識別子を直ちに特定できるようになり、そのような取り消しのためのネットワークデータを作成できるようになることで、そのような取り消しを簡単に行うことができるようになる。
【0205】
ここで、図23は、単位業務グループに対して親子関係を有する1つのインスタンス識別子を生成するという構成を採る場合の一例であり、図24は、1つの単位業務に対して親子関係を有する1つのインスタンス識別子を生成するという構成を採る場合の一例である。
【0206】
以上説明したように、本発明では、単位業務や取消操作など、現在の業務状態に関連する処理間の依存性、対応関係、包含関係を進捗状態記憶部008にネットワークデータとして保持し、そのネットワークデータの作成・更新を行うための動作記述をルール蓄積部007にルールとして取り込み、ルール解釈実行部009がこの2つの処理部とその他の処理部との仲介を行ってロールバック処理の管理制御を行うのである。
【0207】
そして、このロールバック機能をソフトウェア部品化し業務内容に依存しない構成とするために、ソフトウェア部品間で業務依頼イベント、業務処理結果シグナル、業務処理中断要求のタイミングで連携動作を行い、その際の交換データに、識別子生成部0701でユニークに生成された親子関係が定義される識別子を含むことで、複数の処理スコープを扱えるようにするのである。
【0208】
【発明の効果】
以上説明したように、本発明によると、既存のサブシステム間での処理粒度の違いが吸収できるため、統合システム上で一貫性を維持したロールバックが可能となる。また、ルール形式の動作記述によって処理間の依存関係・包含関係を記憶管理するため、従来のような複雑なプログラムコードを必要とせず、ロールバック処理の開発・改造が容易になる。
【0209】
また、ルール記述に業務種類ごとの依存関係を指定し、ワークフロー記述に業務インスタンスごとのグループ化対象を指定するというように、異なるカテゴリの情報を分離して記述できるので、柔軟なロールバック処理が可能となる。これによって、分散トランザクションでは不可能であった、複合業務における途中の進捗状態までロールバックする等の柔軟な管理制御を行うことが可能になる。
【0210】
また、ワークフロー記述にロールバック処理を記述しなくても、業務種別ごとのルール記述と依頼履歴の依存関係にもとづいて自動的にロールバック処理が実行されるため、記述の大規模複雑化の傾向を抑えることができる。これによって開発、デバッグ、改造の稼動が小さくなり、時間的、経済的コストを縮小できるなどの効果がある。
【0211】
また、設計やテストの際に検討項目の整理が容易で見落としが生じにくくなるため、プログラムの品質が向上するなどの効果がある。また、ワークフロー記述形式の変更やワークフローエンジンの改造を行うことなく、ステイタスマネージャとの連携動作が可能となる。これによってワークフロー記述の形式を変更する必要がなくなるため、ワークフロー記述の標準形式との互換性が維持でき、当該ワークフローエンジン以外への記述の移植が容易になるなどの効果がある。
【図面の簡単な説明】
【図1】本発明の一実施形態例である。
【図2】ルール蓄積部の一実施形態例である。
【図3】進捗状態記憶部の一実施形態例である。
【図4】ルール解釈実行部の実行するフローチャートの一実施形態例である。
【図5】ルール解釈実行部の実行するフローチャートの一実施形態例である。
【図6】ルール解釈実行部の実行するフローチャートの一実施形態例である。
【図7】本発明のミドルウェア間連携動作を実現するための一実施形態例である。
【図8】所外設備業務ドメインの単位業務間依存関係の説明図である。
【図9】所内設備業務ドメインの単位業務間依存関係の説明図である。
【図10】端末装置業務ドメインの単位業務間依存関係の説明図である。
【図11】所外設備業務ドメインのルール記述の説明図である。
【図12】所外設備業務ドメインのルール記述の説明図である。
【図13】所内設備業務ドメインのルール記述の説明図である。
【図14】所内設備業務ドメインのルール記述の説明図である。
【図15】端末装置業務ドメインのルール記述の説明図である。
【図16】端末装置業務ドメインのルール記述の説明図である。
【図17】設備新設業務ワークフロー記述の説明図である。
【図18】進捗状態記憶部のスナップショットの説明図である。
【図19】進捗状態記憶部のスナップショットの説明図である。
【図20】進捗状態記憶部のスナップショットの説明図である。
【図21】進捗状態記憶部のスナップショットの説明図である。
【図22】進捗状態記憶部のスナップショットの説明図である。
【図23】インスタンス識別子を使った処理の一例である。
【図24】インスタンス識別子を使った処理の一例である。
【符号の説明】
10000 業務進捗管理制御システム
001 ステイタスマネージャ
002 メッセージバス
003 ワークフローエンジン
004 単位業務処理システム
005 ルール記述外部記憶装置
006 ワークフロー記述外部記憶装置
007 ルール蓄積部
008 進捗状態記憶部
009 ルール解釈実行部
010 ワークフロー蓄積部
011 ワークフロープロセスワーキングメモリ
012 ワークフロー解釈実行部

Claims (13)

  1. 複数の単位業務の組み合わせによって構成される複合業務の進捗を制御する業務進捗制御装置であって、
    単位業務の識別子をキーにして、その単位業務に先行して完了すべき他の単位業務の情報、その単位業務に対応する取消操作の情報およびその取消操作が包含する他の取消操作の情報をルールの形で保存する手段と、
    単位業務及びその取消操作の間の関係を示すネットワークデータを保存する手段と、
    単位業務の処理を進めるときに、上記ルールに従って、上記ネットワークデータを更新する手段と、
    単位業務の進捗状態を元に戻す必要があるときに、上記ネットワークデータに従って、それに必要となる取消操作を検索する手段と、
    上記検索した取消操作の実行を指示する手段とを備えることを、
    特徴とする業務進捗制御装置。
  2. 請求項記載の業務進捗制御装置において、
    依存関係にない単位業務をグループ化するために定義される業務処理を行わないダミーの単位業務と、そのダミーの単位業務に対応付けられるダミーの取消操作とが用意される場合には、上記ルールとして、そのダミーについて記述するものが用意されることを、
    特徴とする業務進捗制御装置。
  3. 複数の単位業務の組み合わせによって構成される複合業務の進捗を制御する業務進捗制御方法であって、
    単位業務の識別子をキーにして、その単位業務に先行して完了すべき他の単位業務の情報、その単位業務に対応する取消操作の情報およびその取消操作が包含する他の取消操作の情報をルールの形で保存する手段から、該ルールを読み出す過程と、
    単位業務の処理を進めるときに、上記ルールに従って、単位業務及びその取消操作の間の関係を示すネットワークデータを更新する過程と、
    単位業務の進捗状態を元に戻す必要があるときに、上記ネットワークデータに従って、それに必要となる取消操作を検索する過程と、
    上記検索した取消操作の実行を指示する過程とを備えることを、
    特徴とする業務進捗制御方法。
  4. 請求項記載の業務進捗制御方法において、
    依存関係にない単位業務をグループ化するために定義される業務処理を行わないダミーの単位業務と、そのダミーの単位業務に対応付けられるダミーの取消操作とが用意される場合には、上記ルールとして、そのダミーについて記述するものが用意されることを、
    特徴とする業務進捗制御方法。
  5. 複数の単位業務の組み合わせによって構成される複合業務の進捗を制御する処理を行う業務進捗制御プログラムであって、
    単位業務の識別子をキーにして、その単位業務に先行して完了すべき他の単位業務の情報、その単位業務に対応する取消操作の情報およびその取消操作が包含する他の取消操作の情報をルールの形で保存する手段から、該ルールを読み出す処理と、
    単位業務の処理を進めるときに、上記ルールに従って、単位業務及びその取消操作の間の関係を示すネットワークデータを更新する処理と、
    単位業務の進捗状態を元に戻す必要があるときに、上記ネットワークデータに従って、それに必要となる取消操作を検索する処理と、
    上記検索した取消操作の実行を指示する処理とをコンピュータに実行させるための業務進捗制御プログラム。
  6. 複数の単位業務の組み合わせによって構成される複合業務の進捗を制御する処理を行う業務進捗制御プログラムであって、
    単位業務の識別子をキーにして、その単位業務に先行して完了すべき他の単位業務の情報、その単位業務に対応する取消操作の情報およびその取消操作が包含する他の取消操作の情報をルールの形で保存する手段から、該ルールを読み出す処理と、
    単位業務の進行を制御する外部プログラムから単位業務の処理依頼を受け取るときに、上記ルールに従って、単位業務及びその取消操作の間の関係を示すネットワークデータを更新するとともに、その処理依頼を受けた単位業務の実行を指示する処理と、
    上記外部プログラムから単位業務の進捗状態を元に戻す処理依頼を受け取るときに、上記ネットワークデータに従って、それに必要となる取消操作を検索する処理と、
    上記検索した取消操作の実行を指示する処理とをコンピュータに実行させるための業務進捗制御プログラム。
  7. 請求項記載の業務進捗制御プログラムにおいて、
    単位業務の実行に失敗するときに、上記ネットワークデータに従って、単位業務の進捗状態を元に戻すのに必要となる取消操作を検索する処理をコンピュータに実行させるための業務進捗制御プログラム。
  8. 請求項又は記載の業務進捗制御プログラムにおいて、
    上記外部プログラムから処理依頼を受けた1つ又は複数の単位業務に対して、その実行毎に割り振られるユニークな識別子であるインスタンスな識別子を生成し、上記ネットワークデータの該当する単位業務にそれを記録するとともに、上記外部プログラムに対してそれを通知する処理をコンピュータに実行させるための業務進捗制御プログラム。
  9. 請求項記載の業務進捗制御プログラムにおいて、
    さらに、親となるインスタンス識別子が指定される1つ又は複数の単位業務に対して、そのインスタンス識別子を親として持つインスタンス識別子を生成する処理をコンピュータに実行させるための業務進捗制御プログラム。
  10. 請求項記載の業務進捗制御プログラムにおいて、
    インスタンス識別子を指定して、親子関係にあるインスタンス識別子の検索要求を発行し、その検索結果を受け取る処理をコンピュータに実行させるための業務進捗制御プログラム。
  11. 請求項記載の業務進捗制御プログラムにおいて、
    2つのインスタンス識別子を指定して、包含関係にあるのか否かの判定要求を発行し、その判定結果を受け取る処理をコンピュータに実行させるための業務進捗制御プログラム。
  12. 請求項ないし11のいずれか1項に記載の業務進捗制御プログラムにおいて、
    依存関係にない単位業務をグループ化するために定義される業務処理を行わないダミーの単位業務と、そのダミーの単位業務に対応付けられるダミーの取消操作とが用意される場合には、上記ルールとして、そのダミーについて記述するものが用意されることを、
    特徴とする業務進捗制御プログラム。
  13. 請求項ないし12のいずれか1項に記載の業務進捗制御プログラムを記録した記録媒体。
JP2002039780A 2002-02-18 2002-02-18 業務進捗制御装置及びその方法と、業務進捗制御プログラム及びそのプログラムを記録した記録媒体 Expired - Lifetime JP3712984B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002039780A JP3712984B2 (ja) 2002-02-18 2002-02-18 業務進捗制御装置及びその方法と、業務進捗制御プログラム及びそのプログラムを記録した記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002039780A JP3712984B2 (ja) 2002-02-18 2002-02-18 業務進捗制御装置及びその方法と、業務進捗制御プログラム及びそのプログラムを記録した記録媒体

Publications (2)

Publication Number Publication Date
JP2003242313A JP2003242313A (ja) 2003-08-29
JP3712984B2 true JP3712984B2 (ja) 2005-11-02

Family

ID=27780697

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002039780A Expired - Lifetime JP3712984B2 (ja) 2002-02-18 2002-02-18 業務進捗制御装置及びその方法と、業務進捗制御プログラム及びそのプログラムを記録した記録媒体

Country Status (1)

Country Link
JP (1) JP3712984B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1625513B1 (en) * 2004-04-30 2018-04-18 Microsoft Technology Licensing, LLC Rules framework for definition and execution of end-user rules logic
JP4575088B2 (ja) * 2004-08-31 2010-11-04 三菱電機株式会社 情報処理システム及び情報処理方法及び情報処理プログラム
JP4270184B2 (ja) 2005-09-05 2009-05-27 コニカミノルタビジネステクノロジーズ株式会社 ネットワーク画像処理システム、ネットワーク画像処理装置、ネットワーク画像処理方法
US20070294090A1 (en) * 2006-06-20 2007-12-20 Xerox Corporation Automated repair analysis using a bundled rule-based system
JP2009020636A (ja) * 2007-07-11 2009-01-29 Obic Co Ltd 内部統制対応型業務システム
JP5017349B2 (ja) * 2009-10-30 2012-09-05 株式会社東芝 仕様情報管理装置および仕様情報管理プログラム
JP5466740B2 (ja) * 2012-08-27 2014-04-09 株式会社日立製作所 仮想サーバのシステム障害回復方法及びそのシステム
CN107423942B (zh) * 2016-05-24 2020-10-16 阿里巴巴集团控股有限公司 一种业务流转的方法及装置
CN112817709A (zh) * 2021-01-21 2021-05-18 平安普惠企业管理有限公司 批量数据的处理方法、装置、设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4094752B2 (ja) * 1998-11-27 2008-06-04 株式会社日立製作所 トランザクション処理方法及びその実施装置並びにその処理プログラムを記録した媒体
JP2001034595A (ja) * 1999-07-21 2001-02-09 Hitachi Ltd 複数システム間業務統合方法および装置
JP2001350660A (ja) * 2000-06-06 2001-12-21 Toshiba Corp プログラム実行管理装置及びプログラムを記録したコンピュータ読み取り可能な記録媒体

Also Published As

Publication number Publication date
JP2003242313A (ja) 2003-08-29

Similar Documents

Publication Publication Date Title
CA3003773C (en) User interface for automated flows within a cloud based developmental platform
US10956013B2 (en) User interface for automated flows within a cloud based developmental platform
De Santis et al. Zero-knowledge proofs of knowledge without interaction
US5864875A (en) Data management system for problems, releases and parts
US7503033B2 (en) Model for business workflow processes
US10101972B1 (en) Data modelling and flow engine for building automated flows within a cloud based developmental platform
US5301270A (en) Computer-assisted software engineering system for cooperative processing environments
CN109086071A (zh) 一种管理软件版本信息的方法及服务器
US7454399B2 (en) Application integration system and method using intelligent agents for integrating information access over extended networks
US6516322B1 (en) XML-based representation of mobile process calculi
US8266588B2 (en) Creating projects in a rational application developer workspace
JPH047640A (ja) クラス継承解決処理方法
US20040093581A1 (en) System and method supporting configurable object definitions
AU2019201100B2 (en) Data modelling and flow engine for building automated flows within a cloud based developmental platform
CN112287007B (zh) 基于Flink SQL引擎的工业生产数据实时处理方法、***
CN102681878A (zh) 无需修改现有代码即可增加新软件特征的方法
US20040078802A1 (en) Auto-generated task sequence
JP3712984B2 (ja) 業務進捗制御装置及びその方法と、業務進捗制御プログラム及びそのプログラムを記録した記録媒体
KR20040081790A (ko) 애스펙트 패턴 내의 일반 기능과 개체와의 연결
EP3166030B1 (en) Exporting hierarchical data from a product lifecycle management (plm) system to a source code management (scm) system
CN109947406B (zh) 一种通用化星务管理***架构
US20090293064A1 (en) Synchronizing shared resources in an order processing environment using a synchronization component
CN110096377A (zh) 一种定制化软件发布的实现方法
CN100512275C (zh) 一种面向服务体系结构的服务调试装置及方法
JP3798935B2 (ja) データ表示方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050304

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: 20050816

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050818

R150 Certificate of patent or registration of utility model

Ref document number: 3712984

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080826

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090826

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090826

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100826

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100826

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110826

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120826

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130826

Year of fee payment: 8

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term