[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP6597360B2 - コネクション管理プログラム、コネクション管理方法、および情報処理装置 - Google Patents

コネクション管理プログラム、コネクション管理方法、および情報処理装置 Download PDF

Info

Publication number
JP6597360B2
JP6597360B2 JP2016024367A JP2016024367A JP6597360B2 JP 6597360 B2 JP6597360 B2 JP 6597360B2 JP 2016024367 A JP2016024367 A JP 2016024367A JP 2016024367 A JP2016024367 A JP 2016024367A JP 6597360 B2 JP6597360 B2 JP 6597360B2
Authority
JP
Japan
Prior art keywords
workflow
communication
execution
priority
time
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 - Fee Related
Application number
JP2016024367A
Other languages
English (en)
Other versions
JP2017142704A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016024367A priority Critical patent/JP6597360B2/ja
Priority to US15/413,559 priority patent/US10733554B2/en
Publication of JP2017142704A publication Critical patent/JP2017142704A/ja
Application granted granted Critical
Publication of JP6597360B2 publication Critical patent/JP6597360B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06316Sequencing of tasks or work
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/103Workflow collaboration or project management

Landscapes

  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Engineering & Computer Science (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Economics (AREA)
  • Tourism & Hospitality (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Game Theory and Decision Science (AREA)
  • Development Economics (AREA)
  • Educational Administration (AREA)
  • Data Mining & Analysis (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は、コネクション管理プログラム、コネクション管理方法、および情報処理装置に関する。
コンピュータシステムの運用管理における一連の作業は、ワークフローを用いて自動実行させることができる。例えばワークフロー実行サーバが、予め作業手順を規定したワークフローに従って、管理対象となる対象機器に対して、ネットワークを介した遠隔操作により作業を実施する。
運用管理におけるワークフローを用いて自動実行する業務の適用範囲の拡大に伴い、複数のワークフローを同時に実行する場面も増えてきている。複数のワークフローを同時に実行すると、1つの対象機器に対する複数作業が、同じ時間帯に重複して発生することがある。この場合、例えばワークフロー実行サーバから対象機器に対して、複数のコネクションが接続され、それぞれのコネクションを介して、ワークフローに従った複数の作業が並列で実行される。
ワークフローに関する技術としては、例えば排他ロックを行う排他制御の単位を示す排他区間を動的に決定する技術がある。
特開2014−6740号公報
複数のワークフローを同時に実行したとき、同じ時間帯に共通の対象機器に対して操作する作業数が、ワークフロー実行サーバから対象機器に接続できるコネクション数の上限を超えることがある。この場合、優先度の高いワークフローの作業から順に実行される。実行する作業の優先度は、例えばワークフローの重要度などから決定される。そして、優先度が高いワークフローの作業から順に、空きのコネクションが割り当てられ、割り当てられたコネクションを介して機器の操作が実行される。
しかし、従来の実行の優先度の決定方法では、ワークフローに人手作業が含まれるか否かが考慮されていない。そのため、十分な処理の効率化が図られていない。例えば人手作業を含むワークフローでは、人手作業の直前までの作業が、コネクション数の上限値超えによって待たされてしまうと、人手作業に取りかかる時間が遅れ、その結果、ワークフローの終了時間も遅くなってしまう。
1つの側面では、本発明は、複数のワークフローを効率的に実施できるようにすることを目的とする。
1つの案では、コンピュータに以下の処理を実行させるコネクション管理プログラムが提供される。
コンピュータは、管理対象の機器に対して、人手によって実施するか、もしくはネットワークを介した遠隔操作の自動実行によって実施する複数の作業の実施手順が定義された複数のワークフローそれぞれについて、人手によって実施する人手作業の数を示す人手作業数を特定する。そしてコンピュータは、複数のワークフローそれぞれについて、特定された人手作業数に基づいて、遠隔操作の自動実行による作業を実施するために機器との間で確立したコネクションを使用する優先度を決定する。
1態様によれば、複数のワークフローを効率的に実施できる。
第1の実施の形態に係る情報処理装置の構成例を示す図である。 第2の実施の形態のシステム構成例を示す図である。 ワークフロー実行サーバのハードウェアの一構成例を示す図である。 ワークフロー実行のための機能を示すブロック図である。 ワークフロー定義記憶部の一例を示す図である。 スケジュール定義記憶部の一例を示す図である。 ワークフロー履歴記憶部の一例を示す図である。 通信スレッド情報記憶部の一例を示す図である。 キュー情報記憶部の一例を示す図である。 ワークフロー実行サーバにおける動的コネクション共有の一例を示す図である。 通信スレッド起動例を示す図である。 対象機器の接続コネクション数が上限を超えた場合の例を示す図である。 通信スレッドの処理の一例を示す図である。 監視スレッドの通信スレッド管理例を示す図である。 優先度の判定に使用する指標間の関係を示す図である。 目標完了日時の指定の有無と優先度との関係を示す図である。 目標完了日時の決定例を示す図である。 人手作業の有無と優先度との関係を示す図である。 残人手作業数の算出例を示す図である。 「Activitiesタグ」に設定される情報の例を示す図である。 「Transitionsタグ」に設定される情報の例を示す図である。 残人手作業数の算出例を示す図である。 ワークフロー開始日時と優先度との関係を示す図である。 サブワークフローの優先度判定に用いる指標の例を示す図である。 呼出元ワークフローの目標完了日時と同期型サブワークフローの実行時間との関係を示す図である。 ワークフローの種別ごとの優先度判別に使用する指標の例を示す図である。 優先度情報生成処理の手順を示すフローチャートの前半である。 優先度情報生成処理の手順を示すフローチャートの後半である。 機器操作制御処理の手順の一例を示すフローチャートである。 通信スレッド割り当て処理の手順の一例を示すフローチャートである。 通信スレッドの処理手順を示すフローチャートである。 監視スレッドの処理の手順の一例を示すフローチャートである。 並列で実行するワークフローの例を示す図である。 ワークフローの残人手作業数の考慮の有無による処理時間の違いを示す図である。 サブワークフローの優先度制御を示す図である。
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る情報処理装置の構成例を示す図である。情報処理装置10は、記憶部11と演算部12とを有している。
記憶部11は、複数のワークフロー2,3を記憶する。各ワークフロー2,3には、管理対象の機器1に対して、人手によって実施するか、もしくはネットワークを介した遠隔操作の自動実行によって実施する複数の作業の実施手順が定義されている。
演算部12は、複数のワークフロー2,3それぞれに示される実施手順に沿って作業を実行する。演算部12は、ワークフロー2,3に示される作業のうち、自動実行によって実施する作業を実行する。また演算部12は、ワークフロー2,3に示される作業のうち、人手で実行する作業(人手作業)については、人手作業が完了したことを示す完了入力を待ち、完了入力の受信により当該作業が完了したものと判断し、次の作業に処理を進める。
また演算部12は、自動実行によって実施する作業を実行する際には、複数のワークフロー2,3それぞれについて、人手作業数を特定する。例えば演算部12は、ワークフロー2,3内の未実施の作業に含まれる人手作業数を特定する。
さらに演算部12は、遠隔操作の自動実行による作業(機器操作)を実施するために機器1との間で確立したコネクション4を確立する。そして演算部12は、複数のワークフロー2,3それぞれについて、機器1との間で確立したコネクション4を使用する優先度を決定する。例えば、演算部12は、人手作業数が多いワークフローほど優先度を高くする。
図1の例において、ワークフロー2の最初の作業(機器操作α)と、ワークフロー3の最初の作業(機器操作β)との実施タイミングが同時になったものとする。これらの作業は、いずれも自動実行によって実施する作業である。このときワークフロー2における未実施の人手作業数は「1」である。またワークフロー3における未実施の人手作業数は「0」である。そのため、演算部12は、ワークフロー2の作業の実施の優先度を、ワークフロー3の作業の実施の優先度よりも低く評価する。すなわち、演算部12は、ワークフロー2の実施のために優先的にコネクション4を使用する。その結果、演算部12は、コネクション4を介して、機器1に対する機器操作αを先に実行し、その後、機器操作βを実行する。
このようにして、未実施の人手作業が多く残っているワークフローの作業を優先的に実施することができる。その結果、自動実行よりも作業に時間を要する人手作業に早期に取りかかることができ、ワークフローの実施完了時期を早めることができる。
例えば、人手作業は機器操作の十倍以上の時間を要する。図1の例では、機器操作の所要時間がいずれも1分であり、人手作業の所要時間は10分であるものとする。このような場合、ワークフロー2の機器操作αを優先的に実行することで、ワークフロー2の処理が遅延なしに実行される。また、ワークフロー2の人手作業を実施している期間中にワークフロー3の処理を完了することができる。すると、2つのワークフロー2,3の両方の処理が完了するまでの所要時間は、ワークフロー2を単独で実行させた場合と同様の時間(11分)となる。
これに対して、ワークフロー2の機器操作αよりも前にワークフロー3の機器操作βを実施してしまうと、機器操作αの実施が1分だけ待たされる。この場合、2つのワークフロー2,3の両方の処理が完了するまでの所要時間は12分となり、ワークフロー2の機器操作αを優先的に実行した場合よりも時間がかかる。
すなわち、第1の実施の形態に示すように、人手作業の多いワークフロー2の優先度を高め、優先度が高いワークフローの遠隔操作に対して優先的にコネクション4を使用させることで、ワークフロー2,3の両方の処理を早期に完了させることができる。
なお、ワークフロー内には分岐条件が含まれることがある。この場合、分岐条件における分岐判断の結果に応じ、未実施の人手作業数が変わってくる。そこで、演算部12は、ワークフロー内には分岐条件が含まれている場合、ワークフローにおける現在実行中の作業からワークフローの終了に至るすべての経路それぞれの人手作業数を算出する。そして演算部12は、算出された人手作業数の最大値を、該ワークフローの人手作業数として特定する。これにより、所要時間が最も長くなる可能性があるワークフローの処理を優先して実施することができ、複数のワークフローを実施する場合の処理の完了を早めることができる。
また、ワークフローの中には、他のワークフローから呼び出されるサブワークフローがある。呼出元ワークフローから呼び出されるサブワークフローについては、演算部12は、呼出元ワークフローについて人手作業数に基づいて決定した優先度を、サブワークフローの優先度としてもよい。これにより、サブワークフローの処理の遅延によって、優先度の高いワークフローの処理が遅延することを抑止できる。
ただし、サブワークフローには、同期型で呼び出されるものと、非同期型で呼び出されるものがある。呼出元ワークフローが、サブワークフローの終了を待って呼び出し後の作業を実施するような呼び出しが、同期型の呼び出しである。呼出元ワークフローが、サブワークフローの終了を待たずに呼び出し後の作業を実施するような呼び出しが、非同期型の呼び出しである。演算部12は、サブワークフローの呼び出しが、同期型か非同期型かにより、サブワークフローの優先度の決定方法を変えてもよい。例えば、演算部12は、呼出元ワークフローが同期型の呼び出し処理を行う場合、呼出元ワークフローについて人手作業数に基づいて決定した優先度を、サブワークフローの優先度とする。他方演算部12は、呼出元ワークフローが、非同期型の呼び出し処理を行う場合、サブワークフローについての人手作業数に基づいて決定した優先度を、そのサブワークフローの優先度とする。これにより、非同期型で呼び出されるサブワークフローのように、呼出元ワークフローの処理を遅延させることがないワークフローが、無駄に優先度が高くなり、他のワークフローの処理を遅延させてしまうことを抑止できる。
なお、図1の例では、機器1との間で1つのコネクション4のみを接続しているが、機器1との間に、ワークフロー実施のためのコネクションを複数確立することもできる。その場合、確立するコネクション数が多すぎると、ワークフローの実施以外の目的での機器1との通信効率が劣化してしまう。そこで、演算部12は、余分なコネクションを停止するようにしてもよい。例えば演算部12は、機器1に対して接続されているコネクション数と、機器1を操作対象とした遠隔操作による作業を実施したワークフロー数とを比較する。そして、演算部12は、コネクション数の方が多い場合、コネクション数とワークフロー数との差に相当する数のコネクションを停止する。これにより、適切なコネクション数に抑えることができ、情報処理装置10と機器1との通信の効率化が図れる。
なお、演算部12は、例えば情報処理装置10が有するプロセッサにより実現することができる。また、記憶部11は、例えば情報処理装置10が有するメモリまたはストレージ装置により実現することができる。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。
図2は、第2の実施の形態のシステム構成例を示す図である。ネットワーク20は、ワークフロー実行サーバ100、複数の対象機器31,32,・・・、web/アプリケーション(AP)サーバ41、および端末装置42が接続されている。
ワークフロー実行サーバ100は、ワークフローに従って、対象機器31,32,・・・に対して遠隔操作によって作業を実行するコンピュータである。対象機器31,32,・・・は、運用管理の対象となるサーバ機器、ストレージ、スイッチなどの機器である。web/APサーバ41は、ワークフロー管理用のwebアプリケーションなどのプログラムを実行するコンピュータである。端末装置42は、運用管理を行う管理者が使用するコンピュータである。
次に、ワークフロー実行サーバ100のハードウェアについて説明する。
図3は、ワークフロー実行サーバのハードウェアの一構成例を示す図である。ワークフロー実行サーバ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、ワークフロー実行サーバ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に必要な各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、ストレージ装置103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
ストレージ装置103は、内蔵した記憶媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、ワークフロー実行サーバ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
以上のようなハードウェア構成によって、ワークフロー実行サーバ100における第2の実施の形態の処理機能を実現することができる。なお、web/APサーバ41や端末装置42も、図3に示したワークフロー実行サーバ100と同様のハードウェアにより実現できる。また、第1の実施の形態に示した情報処理装置10も、図3に示したワークフロー実行サーバ100と同様のハードウェアにより実現することができる。
ワークフロー実行サーバ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。ワークフロー実行サーバ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、ワークフロー実行サーバ100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またワークフロー実行サーバ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
次に、ワークフローを実行するための各装置の機能について説明する。
図4は、ワークフロー実行のための機能を示すブロック図である。管理者は、端末装置42からweb/APサーバ41にアクセスし、web/APサーバ41内のwebアプリケーション41aに対して、ワークフローの実行スケジュールなどの管理情報を入力する。web/APサーバ41はwebアプリケーション41aを実行し、ワークフロー定義やワークフローの実行スケジュールなどの情報を、ワークフロー実行サーバ100に送信する。
ワークフロー実行サーバ100は、ワークフロー定義記憶部110、スケジュール定義記憶部120、ワークフロー履歴記憶部130、通信スレッド情報記憶部140、ワークフロー制御部150、および通信デーモン160を有している。
ワークフロー定義記憶部110は、ワークフローごとの作業の手順を示す情報(ワークフロー定義)を記憶する。スケジュール定義記憶部120は、ワークフローの実行スケジュールを示す情報(スケジュール定義)を記憶する。ワークフロー履歴記憶部130は、ワークフローの実行状態(ステータス)を記憶する。通信スレッド情報記憶部140は、対象機器31,32,・・・との通信を制御する通信スレッド164,165,166,・・・に関する情報を記憶する。
ワークフロー制御部150は、ワークフローを実行するためのワークフロー実行プロセス151,152,・・・を生成し、ワークフロー実行プロセス151,152,・・・によりワークフローの実行を制御する。例えばワークフロー制御部150は、ユーザ入力によるワークフローの実行指示、または予め設定されたスケジュールに示されたワークフローの実行開始時刻の到達を契機に、ワークフロー実行プロセス151,152,・・・を生成する。生成されたワークフロー実行プロセス151,152,・・・は、実行時の入力情報に基づいて、実行するワークフローの優先度情報を生成し、対象機器との通信に備える。またワークフロー実行プロセス151,152,・・・は、対象機器に対する操作が発生した場合、通信要求を通信デーモン160に送信することで、通信処理を依頼する。
通信要求には、以下の情報が含まれる。
・対象機器接続情報
・ワークフローの優先度情報
・ワークフロー情報
・操作内容
なお、ワークフロー実行プロセス151,152,・・・は、ワークフローの実行が人手作業の実施タイミングになると、web/APサーバ41からの人手作業完了の通知を待つ。
通信デーモン160は、ワークフロー実行サーバ100で運用を管理する対象の対象機器31,32,・・・との通信を一元管理する。通信を管理するため、通信デーモン160は、要求受付部161、キュー情報記憶部162、監視スレッド163、および通信スレッド164,165,166,・・・を有する。
要求受付部161は、ワークフロー実行プロセス151,152,・・・から対象機器31,32,・・・への通信要求を受け付ける。そして要求受付部161は、受け付けた通信要求に対する、使用可能な通信スレッドの割り当てを行う。
キュー情報記憶部162は、実行待ちの通信要求を記憶する。
監視スレッド163は、ワークフロー履歴記憶部130を参照することで、ワークフロー実行プロセス151,152,・・・で実行されているワークフローの終了を監視する。そして監視スレッド163は、不要となった通信スレッドの終了処理を行う。
通信スレッド164,165,166,・・・は、対象機器31,32,・・・とコネクション164a,165a,166a,・・・を確立し、コネクション164a,165a,166a,・・・を介した通信を行う。そして通信スレッド164,165,166,・・・は、対象機器31,32,・・・上で、通信要求に示されている操作内容に応じた操作を実行し、操作の結果をワークフロー実行プロセス151,152,・・・に返す。
なお、図4に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図4に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
次に図5〜図9を参照し、ワークフロー実行サーバ100の各記憶部に保持される情報について詳細に説明する。
図5は、ワークフロー定義記憶部の一例を示す図である。ワークフロー定義記憶部110には、ワークフローごとの複数のワークフロー情報111,112,・・・が格納されている。複数のワークフロー情報111,112,・・・それぞれには、ワークフローID、ワークフロー定義情報、重要度、実行時間などが含まれている。ワークフローIDは、ワークフローを識別する識別子である。ワークフロー定義情報は、運用管理の作業手順を示す情報である。重要度は、ワークフローの重要性を数値化した値である。実行時間は、ワークフローの実行に要する時間である。
図6は、スケジュール定義記憶部の一例を示す図である。スケジュール定義記憶部120には、ワークフローごとのスケジュール管理情報121,122,・・・が格納されている。スケジュール管理情報121,122,・・・には、対応するワークフローのワークフローID、実行スケジュールなどが含まれている。実行スケジュールは、ワークフローの実行開始日時、および実行終了日時が設定された情報である。
図7は、ワークフロー履歴記憶部の一例を示す図である。ワークフロー履歴記憶部130には、ワークフローごとの履歴情報131,132,・・・が格納されている。履歴情報131,132,・・・には、対応するワークフローのワークフローID、ステータスなどが含まれている。ステータスは、ワークフローの実行状態を示す情報である。
図8は、通信スレッド情報記憶部の一例を示す図である。通信スレッド情報記憶部140には、対象機器情報管理テーブル141、スレッド情報管理テーブル142、および要求ワークフロー情報管理テーブル143が格納されている。
対象機器情報管理テーブル141は、対象機器31,32,・・・に関する情報を設定するデータテーブルである。対象機器情報管理テーブル141には、対象機器ID、接続IP(Internet Protocol)アドレス、接続プロトコル、アカウントID、およびパスワードの欄が設けられている。対象機器IDの欄には、対象機器31,32,・・・の識別情報(対象機器ID)が設定される。接続IPアドレスの欄には、対象機器31,32,・・・のIPアドレスが設定される。接続プロトコルの欄には、対象機器31,32,・・・に接続するための通信プロトコルが設定される。1つの対象機器に対して、接続用の複数の通信プロトコルが設定可能である。アカウント名の欄には、対応する接続プロトコルで対応する対象機器に接続する際のアカウント名が設定される。パスワードの欄には、対応するアカウントで対象機器に接続する際の、認証用のパスワードが設定される。
スレッド情報管理テーブル142は、通信スレッドに関する情報を設定するデータテーブルである。スレッド情報管理テーブル142には、対象機器ID、スレッドID、および状態の欄が設けられている。対象機器IDの欄には、通信相手の対象機器31,32,・・・の対象機器IDが設定される。スレッドIDの欄には、対象機器31,32,・・・との通信を行う通信スレッドの識別子(スレッドID)が設定される。状態の欄には、対応する通信スレッドの動作状態が設定される。
要求ワークフロー情報管理テーブル143は、通信を行っている対象機器とワークフローとの対応関係を示す情報を設定するデータテーブルである。要求ワークフロー情報管理テーブル143には、対象機器IDとワークフローIDとの欄が設けられている。対象機器IDの欄には、通信相手の対象機器31,32,・・・の対象機器IDが設定される。ワークフローIDの欄には、通信要求の送信元であるワークフロー実行プロセスが実行しているワークフローの識別子(ワークフローID)が設定される。
図9は、キュー情報記憶部の一例を示す図である。キュー情報記憶部162には、通信要求管理テーブル162aが格納されている。通信要求管理テーブル162aには、対象機器ID、優先度、要求元情報、および要求処理情報の欄が設けられている。対象機器IDの欄には、処理待ちの通信要求の通信相手である対象機器の対象機器IDが設定される。優先度の欄には、通信要求の優先度の判断指標となる情報が設定される。要求元情報の欄には、通信要求の送信元であるワークフロー実行プロセスが実行しているワークフローのワークフローIDが設定される。要求処理情報の欄には、通信要求によって要求されている処理の内容が設定される。
図9の例では、優先度の判断指標として、重要度、目標完了日時、残人手作業数、および開始日時が設定されている。重要度は、対応するワークフローの重要度である。目標完了日時は、対応するワークフローの処理を完了させる目標の日時である。残人手作業数は、対応するワークフローの以後の作業で発生する可能性がある、人手作業の最大数である。開始日時は、対応するワークフローの実行を開始した日時である。
以上のような構成のワークフロー実行サーバ100により、ワークフローを効率的に実行することができる。
すなわち、ワークフロー実行サーバ100は、通信デーモン160によるコネクションの一元管理を行う。そしてワークフロー実行サーバ100は、動的なコネクション共有を行う。具体的には、ワークフロー実行サーバ100は、通信要求発生時に既存の不使用コネクションが有る場合は複数ワークフローで共有する。他方、ワークフロー実行サーバ100は、不使用コネクションが無い場合や既存コネクションが存在しない場合は、新たなコネクションを作成し、対象機器に対するワークフローが終了するまでコネクションを保持する。
またワークフロー実行サーバ100は、対象機器の接続数の上限を超えた場合の通信エラーを、ワークフロー固有の優先度を考慮したキューイングにより回避する。ワークフローの優先度は、ワークフローの重要度、目標完了日時、残人手作業数、ワークフローの多段構成などに基づいて決定される。
<動的コネクション共有>
ここで、動的コネクション共有について具体的に説明する。
図10は、ワークフロー実行サーバにおける動的コネクション共有の一例を示す図である。運用操作を実施する対象機器を示す接続先情報(接続先アドレス、通信プロトコル、接続アカウント、接続数)は、実行されるワークフローにより異なる。また、スケジュールされていない時期にユーザからワークフローの実行指示が入力されることもある。そのため、各ワークフローがいつ実行されるかは、明確には分からない。またワークフロー内の分岐条件が決定するまでは、分岐以降の作業が確定しないため、どの対象機器への通信要求が発生するのかは不明である。そのため、接続先や、接続するべきコネクション数を事前に特定することはできない。
そこで、ワークフロー実行サーバ100は、コネクション共有を行う。ここで、一般的なコネクション共有では、同時に実行されると通信要求数を事前に決定し、決定した数の通信要求に応じたコネクションを予め確立する。しかし、前記のように、何時どのワークフローが実行されるかを事前に決定することはできず、分岐条件が決定するまでは、通信要求が出力されるか否かも確定しない。そのため、一般的なコネクション共有では、想定される最大の同時通信要求数に合わせた多数のコネクションを確立し、それを常時維持することとなる。そのため、無駄なコネクションが多く存在し、他の通信処理を圧迫してしまう。
そこで、第2の実施の形態に係るワークフロー実行サーバ100では、通信要求が発生した時点でコネクションプーリングを行い、動的にプーリングしたコネクションを共有する、動的なコネクションプーリングを実施する。動的コネクション共有では、同一の接続先、接続条件を使用するワークフローでコネクションを共有することで、接続するコネクション数の増加を抑止する。そして動的コネクション共有では、使用するワークフローが終了を検知すると該当するコネクションを開放して、余分なコネクションが何時までも残存することを抑止する。
動的コネクションの管理は通信デーモン160で行う。例えば、通信デーモン160は、以下の情報に基づいて、通信コネクションの共有を行うための通信スレッド164,165,166,・・・を制御する。
・通信要求の発生
・接続先(接続IPアドレス)
・接続アカウント
・接続プロトコル
・要求元ワークフロー情報
・ワークフローのステータス
図10の例では、3つのワークフロー実行プロセス151〜153により、ワークフロー51〜53が実行されている。ワークフロー実行プロセス151がワークフロー51の最初の機器操作の作業を実行するとき、ワークフロー実行プロセス151から通信デーモン160へ通信要求が出力される。同様にワークフロー実行プロセス152がワークフロー52の最初の機器操作の作業を実行するとき、ワークフロー実行プロセス152から通信デーモン160へ通信要求が出力される。ここで、2つのワークフロー実行プロセス151,152が出力した通信要求における接続先と接続方法(接続のアカウントやプロトコル)が同じであったものとする。この場合、通信デーモン160は、2つの通信要求を処理する通信スレッド164を起動する。通信スレッド164は、通信要求の接続先となる対象機器31との間でコネクションを確立し、対象機器31に対する操作を実行する。
ワークフロー実行プロセス151が実行するワークフロー51の2つ目の機器操作では、操作対象が対象機器32である。ワークフロー実行プロセス151は、当該機器操作の作業を実行するとき、通信デーモン160へ、接続先として対象機器32を指定した通信要求を出力する。すると通信デーモン160は、新たな通信スレッド165を起動する。通信スレッド165は、通信要求の接続先となる対象機器32との間でコネクションを確立し、対象機器32に対する操作を実行する。
ワークフロー実行プロセス153が実行するワークフロー53の最初の機器操作では、操作対象が対象機器31であるが、接続方法が、ワークフロー51,52の最初機器操作と異なる。この場合、ワークフロー実行プロセス153が、当該機器操作の作業を実行するときに、接続先として対象機器31を指定した通信要求を出力すると、通信デーモン160は、新たな通信スレッド166を起動する。通信スレッド166は、通信要求の接続先となる対象機器31との間でコネクションを確立し、対象機器31に対する操作を実行する。
このように、通信デーモン160は、2つの通信要求における接続先と接続方法が同じ通信要求であれば、1つの通信スレッドで処理する。他方、通信デーモン160は、2つの通信要求における接続先が同じであっても、接続方法が異なれば、2つの通信要求を別の通信スレッドで処理する。
またワークフロー実行プロセス151〜153は、ワークフロー51〜53を実行するとき、ワークフロー51〜53の実行状態をワークフロー履歴記憶部130に格納する。例えばワークフロー実行プロセス151〜153は、ワークフロー51〜53の実行を開始したとき、ワークフロー履歴記憶部130に対して、ワークフロー51〜53のステータスとして「実行中」を設定する。またワークフロー実行プロセス151〜153は、ワークフロー51〜53の実行が完了したとき、ワークフロー履歴記憶部130に対して、ワークフロー51〜53のステータスとして「停止中」を設定する。
また通信デーモン160は、通信スレッド164〜166に関する情報を、通信スレッド情報記憶部140に格納する。そして通信デーモン160内の監視スレッド163が、ワークフロー履歴記憶部130と通信スレッド情報記憶部140との内容を解析し、余分な通信スレッドの有無を判断する。例えばステータスが「実行中」のワークフロー数より多くの通信スレッドが存在している場合、監視スレッド163は、ワークフロー数を超過している分の通信スレッドは、余分であると判断する。そして監視スレッド163は、余分な通信スレッドの削除(機能停止)処理を実行する。このようにして、ワークフローの実行状況に応じて、通信スレッドの数が動的に管理される。
<通信スレッドの起動制御>
通信デーモン160は、動的コネクション共有において、利用する最小減の数の通信スレッドを起動する。例えば通信デーモン160は、ワークフロー実行プロセスから送信された通信要求を、要求受付部161で受信する。要求受付部161は、通信スレッド情報記憶部140を参照し、通信要求61の接続先である対象機器への通信スレッドの存在の有無、および通信スレッドの使用状況を確認する。使用可能な通信スレッド(同一接続情報を持つ、状態が停止中の通信スレッド)が存在する場合は、通信デーモン160は、取得した通信要求に既存通信スレッドを割り当てる。他方、使用可能な通信スレッドが存在しない場合は、通信デーモン160は、新たに通信スレッドを作成して通信処理を行う。
図11は、通信スレッド起動例を示す図である。例えば通信デーモン160において、2つの通信スレッド164,165が起動されている状況を想定する。通信スレッド164は不使用であるが、通信スレッド165は、ワークフロー実行プロセス151から送信された通信要求の処理を実行しているものとする。なお、通信スレッド164におけるコネクションの接続先は、対象機器31である。また通信スレッド165におけるコネクションの接続先は、対象機器32である。
このときワークフロー52を実行しているワークフロー実行プロセス152から、対象機器31を接続先とする通信要求61が出力されたものとする。この通信要求61の接続方法は、通信スレッド164が対象機器31とコネクションを接続したときの接続方法と同じであるものとする。通信要求61を受信した要求受付部161は、通信スレッド情報記憶部140を参照し、既存の通信スレッドの有無とその通信スレッドの使用状況とを確認する。この場合、対象機器31に同じ接続方法でコネクションの接続を確立した不使用の通信スレッド164が存在し、この通信スレッド164の状態は「休止中」である。そこで、要求受付部161は、通信要求61の処理を、通信スレッド165に実行させる。
またワークフロー53を実行しているワークフロー実行プロセス153から、対象機器32を接続先とする通信要求62が出力されたものとする。この通信要求62の接続方法は、通信スレッド165が対象機器32とコネクションを接続したときの接続方法と同じであるものとする。通信要求62を受信した要求受付部161は、通信スレッド情報記憶部140を参照し、既存の通信スレッドの有無とその通信スレッドの使用状況とを確認する。この場合、対象機器32にコネクションの接続を確立した通信スレッド165は存在するが、状態が「稼動中」である。そのため、要求受付部161は、通信要求62の処理を実行する通信スレッド166を新たに作成し、通信スレッド166に通信要求62の処理を実行させる。
次に、対象機器の接続コネクション数が上限を超えた場合の処理について説明する。
図12は、対象機器の接続コネクション数が上限を超えた場合の例を示す図である。通信要求の接続先である対象機器の通信スレッドが使用中のとき、通信デーモン160は、新たに通信スレッドを作成する。その際、通信デーモン160は、対象機器に接続上限数分のコネクションが使用されていると、通信スレッドのコネクション生成にて接続数上限エラーとなる。接続数上限エラーを検知した通信スレッドは、対象機器に対する通信要求をキュー情報記憶部162に格納し、自通信スレッドを終了する。キュー情報記憶部162に通信要求を格納する際、通信スレッドは、通信要求と共に、優先度の判断指標となる情報(重要度と目標完了日時など)をキュー情報記憶部162に格納する。
例えば図12の例では、2つの通信スレッド164,165が、対象機器31とコネクションを接続し、通信を行っている。対象機器31の同時接続可能数(コネクション数の最大値)は、「2」であるものとする。このとき、ワークフロー53を実行しているワークフロー実行プロセス153が、対象機器31を接続先とする通信要求63を出力した場合を想定する。この場合、通信デーモン160は、通信スレッド166を新規に起動する。通信スレッド166は、対象機器31とのコネクション接続を試みる。しかし対象機器31は、接続されているコネクション数が同時接続可能数に達しており、新たなコネクションを接続することができない。そこで対象機器31は、接続数が上限を超えてしまうことを示すエラーを通信スレッド166に通知する。通信スレッド166は、エラーの応答を受信すると、通信要求63をキュー情報記憶部162に格納し、自身の処理を終了する。
次に、通信スレッドの処理について具体的に説明する。
図13は、通信スレッドの処理の一例を示す図である。例えば通信要求64を受信した通信スレッド164は、対象機器31とコネクションを確立することで通信接続を行う。そして通信スレッド164は、通信要求64に応じた機器操作の処理が完了すると、要求元であるワークフロー実行プロセス151へ処理結果65を送信する。さらに通信スレッド164は、キュー情報記憶部162内に、対象機器31を接続先とする処理待ち通信要求があるかどうかを確認する。該当する通信要求がある場合、通信スレッド164は、該当する通信要求を取得し、通信処理を継続する。処理待ち要求が存在しない場合は、通信スレッド164は、通信スレッド情報記憶部140に対して、自身の状態を「休止中」に変更する。その後、通信スレッド164は、コネクションを保持したまま、自身を休止状態とする。「休止中」の状態の通信スレッド164が保持しているコネクションが、不使用のコネクションである。
<通信スレッド停止制御>
次に、監視スレッド163が行う、余分な通信スレッドの停止制御について具体的に説明する。
図14は、監視スレッドの通信スレッド管理例を示す図である。通信要求を実行した通信スレッドは、使用していたワークフローがすべて終了すると不要となる。また、実行中のワークフロー数を超える通信スレッドも不要である。そのため、監視スレッド163は、実行中のワークフロー数と通信スレッドの起動状況とを監視して、不要な通信スレッドを終了させる。
例えば監視スレッド163は、ワークフローを実行するワークフロー実行プロセスからの通信要求を契機に開始する。そして、監視スレッド163は、監視対象となる通信スレッドが少なくとも1つ存在する限り監視を行う。
監視スレッド163は、定期的にワークフロー履歴記憶部130から実行中のワークフローの情報を抽出する。そして監視スレッド163は、通信スレッド情報記憶部140を参照し、要求ワークフロー情報へワークフローの稼働状態を反映して、通信スレッド情報記憶部140内の通信スレッド情報の更新を行う。また監視スレッド163は、更新後の通信スレッド情報を基に、不要な通信スレッドの終了と通信スレッド情報からの削除を行う。削除する通信スレッドは、状態が休止中のスレッドから選択される。この際、通信スレッドが存在しなくなる対象機器の情報は、通信スレッド情報記憶部140から削除される。
<ワークフローの優先度>
次に、動的コネクション共有では、限られた通信スレッドが接続したコネクションを用いて、複数の通信要求の処理が行われる。異なるワークフローを実行する複数のワークフロー実行プロセスから出力された複数の通信要求のうち、どの通信要求から実行するのかは、要求元のワークフローの優先度に基づいて決定される。
このように、通信デーモン160の処理の中で、キューイングされた通信要求の実行順はワークフローの優先度から決定するが、ワークフローの優先度は「高中低」といった単純な分類分けだけでは不十分である。また、ワークフローは、複数のワークフローを組み合わせて構成される場合があり、下位層のワークフローの優先度をどの様に決定するかの論理が重要となる。
例えば通信デーモン160は、受信した通信要求をキュー情報記憶部162にキューイングし、その通信要求の要求元となるワークフローの優先度に応じた順番で、キューイングされた通信要求に応じた処理を実行する。通信デーモン160は、ワークフローの優先度は下記指標に基づいて自動的に決定する。
・指標1:ワークフローの重要度(ワークフロー情報内の指定または実行時の指定を適用)
・指標2:ワークフローの目標完了日時(ワークフロー実行開始からの実行時間またはスケジュールの終了日時)
・指標3:ワークフロー上の残りの人手作業の数
・指標4:ワークフローの開始日時
なお、他のワークフローから呼び出されるサブワークフローの重要度については、呼出元ワークフローの各指標を考慮して優先度が決定される。その際、サブワークフローが同期型サブワークフローなのか非同期型サブワークフローなのかにより、優先度決定処理が異なる。
<<単一ワークフローの優先度>>
まず、他のワークフローとの呼び出し関係を有していない単一ワークフローの優先度について説明する。
単一ワークフローの優先度判定に用いる指標には以下の4つがある。上記の4つの指標の組み合わせにより、優先度が決定される。
<<<指標1:ワークフローの重要度>>>
ワークフローには、例えば「高中低」といった重要度が設定できる。ワークフローの重要度は、ワークフローの内容により決定される。例えば、業務影響を伴うトラブル対処のワークフローであれば、他のワークフローを停止してでも実行しなければならず重要度は「高」となる。バックアップなどのワークフローではバックアップが遅延しても業務に影響はないため、重要度は「低」となる。
ワークフローの重要度はワークフローの定義に事前に設定されている場合と、実行時の入力情報として指定される場合がある。ワークフローの定義と実行時の入力情報との両方に重要度が設定されている場合、実行時の入力情報に設定されている重要度が優先される。
<<<指標2:ワークフローの目標完了日時>>>
優先度の判定指標の中で、最も優先されるのは重要度である。重要度が同じワークフロー同士では、それらのワークフローの目標完了日時によって優先度が判定される。ワークフローの目標完了日時は、ワークフロー実行開始からの実行時間またはスケジュールの終了日時によって指定される。
システム運用上、ワークフローの実行では、顧客と取り決めたサービスレベルアグリーメント(SLA)が考慮される。そのため、ワークフローに対して「開始から××分で完了する」といった実行時間に関する指定が存在する。また、ワークフローの遅延を監視するため、ワークフローの実行時間が設定されている場合もある。例えば、基幹業務サーバのダウン対応のためのワークフローは開始から30分で完了するものと、実行時間が設定される。また、人事業務サーバのワークフローは開始から3時間で完了するものと、実行時間が設定される。
ワークフローの実行時間はワークフローの定義に事前に設定されている場合と、実行時の入力情報として指定される場合がある。ワークフローの定義と実行時の入力情報との両方に実行時間が設定されている場合、実行時の入力情報に設定されている実行時間が優先される。
また、定期的に実行されるワークフローは、実行開始および終了の日時がスケジュールに設定される。スケジュールでは、業務影響を考慮した終了日時が設定される。例えば、業務システムの定期バックアップなどでは、業務アプリケーションの停止を伴うため、例えば「業務時間外の××時に開始し、○○時に終了する」とスケジュールに設定される。
なお、ワークフローの「実行時間」は「ワークフローの開始から××分で完了」と言う指定だが、言い換えると「ワークフローの開始から××月××日 ○○時○○分までに完了」となり、ワークフローの“定期スケジュール”の完了日時の指定と同意である。言わば指標2と指標3とは、共にワークフローの「目標完了日時」の指定である。そのため、ワークフローの「実行時間」と「スケジュール」は同列に扱うことができる。
図15は、優先度の判定に使用する指標間の関係を示す図である。図15に示すように、ワークフローの実行時間やスケジュールに基づいて、ワークフローの目標完了日時が指定される。目標完了日時は、重要度が同じワークフロー間での優先度の比較に用いられる。換言すると、重要度が異なるワークフローの優先度は重要度のみで決定され、ワークフローの目標完了日時は考慮されない。
また、ワークフローの「実行時間」や「スケジュール」はワークフローの用途により、どのような値を設定するのかが決まる。そのため、ワークフローの用途によっては、ワークフローの目標完了日時の指定がない場合がある。すなわち、「実行時間」と「スケジュール」との何れの指標も設定されていないワークフローが存在する。目標完了日時の指定がないワークフローは優先されないものと判断でき、そのようなワークフローよりも目標完了日時が指定されたワークフローの方が優先される。
図16は、目標完了日時の指定の有無と優先度との関係を示す図である。図16に示すように、「実行時間」の指定、または「スケジュール」による終了日時の指定があるワークフロー71〜73は、「実行時間」と「スケジュール」とのいずれもが指定されていないワークフロー74よりも優先度が高くなる。
なお、「実行時間」または「スケジュール」が設定されているワークフロー71〜73同士では、目標完了日時が早い方のワークフローが優先される。「実行時間」と「スケジュール」との両方が設定されているワークフロー71の目標完了日時は、「実行時間」に応じて計算される目標完了日時と、「スケジュール」の終了日時で示される目標完了日時とのうちの早い方の日時である。
図17は、目標完了日時の決定例を示す図である。図17において、ワークフローXは、2時に実行を開始し、7時に終了するようにスケジュールされている。またワークフローXの実行時間は3時間である。実行時間の指定に従えば、ワークフローXの実行を2時に開始すると、5時に終了する。この場合、実行時間に応じた目標完了日時の方が、スケジュールに応じた目標完了日時よりも早くなる。従って、ワークフローXの目標完了日時は、実行時間に応じた目標完了日時「5時」となる。
ワークフローYは、2時に実行を開始し、7時に終了するようにスケジュールされている。またワークフローYの実行時間は6時間である。実行時間の指定に従えば、ワークフローYの実行を2時に開始すると、8時に終了する。この場合、スケジュールに応じた目標完了日時の方が、実行時間に応じた目標完了日時よりも早くなる。従って、ワークフローXの目標完了日時は、スケジュールに応じた目標完了日時「7時」となる。
以上のように、通信デーモン160は、重要度の高いワークフローの通信要求の処理を優先し、同一重要度のワークフローの通信要求の場合は、目標完了日時が早いワークフローの通信要求の処理を優先する。
<<<指標3:ワークフロー上の残りの人手作業の数>>>
複数のワークフローにおいて、重要度が同一かつ目標完了日時が同一の場合がある。この場合、人手作業の介在有無によって優先度が決定される。
多くのワークフローでは人手を介在させる処理が存在する。例えばワークフローに定義された作業が「処理依頼通知(メール通知など)」→「実作業(ハードウェアの交換など)」→「処理結果入力(処理遷移)」の場合、「実作業」が人手作業となる。このような人手作業を含むワークフローでは、人手作業が完了するまでワークフローは滞留し、自動処理のみで構成されたワークフローより処理に時間が掛かる。
図18は、人手作業の有無と優先度との関係を示す図である。図18の例では、左側に示したワークフロー75は、最初の作業は対象機器の遠隔操作で自動実行可能な機器操作であるが、その後の2つの作業が、人手作業である。他方、右側に示したワークフロー76は、すべての作業が自動実行可能な機器操作である。人手作業は、自動実行可能な機器操作よりも時間がかかる。そのため、ワークフロー75は、ワークフロー76よりも実行に時間がかかる。
図18の例において、ワークフロー75を実行する際に通信要求が出力されるのは、最初の機器操作の作業を実行するときである。この機器操作の実行が遅れると、その後の人手作業の実行開始時期が遅れ、実行に時間のかかるワークフロー75の実行完了がさらに遅れてしまう。そこで、ワークフロー75の最初の機器操作の実行のための通信要求は、ワークフロー76の実行のための通信要求よりも優先度が高く設定される。
具体的には、通信デーモン160は、同一重要度,目標完了日時の場合、人手作業まで早期に遷移することを優先するために、機器操作以降の人手作業数(残人手作業数)を算出して、残人手作業数が多いワークフローを優先する。なお、ワークフローの処理分岐やサブワークフローの有無により、人手作業数の増減が考えられるが、第2の実施の形態では、通信発生時点の最大人手作業数を、残人手作業数として採用する。
図19は、残人手作業数の算出例を示す図である。図19の例では、ワークフロー77からサブワークフロー78の同期呼び出しを行っている。同期呼び出しでは、呼出元のワークフロー77の処理を実行する際、サブワークフロー78の処理が完了するのを待って、呼び出し後の処理が実行される。
ここで、ワークフロー77の最初の作業「機器操作A」を実行するときの残人手作業数は、サブワークフロー78内の処理も含めて算出される。図19の例では、図中の太線で示した処理ルートを辿ったときに、残りの人手作業数が最大値「3」となる。従って、「機器操作A」を実行するときの残人手作業数は「3」である。
また、ワークフロー77,78の処理が進行し、サブワークフロー78の「機器操作C」を実行するときの残人手作業数は、「機器操作C」以降の処理のみから算出される。図19の例では、「機器操作C」を実行するときの残人手作業数は「2」である。
なお、ワークフローは、例えばXML形式ファイルで管理される。XMLで記述されたワークフローには、例えば「Activitiesタグ」と「Transitionsタグ」が含まれる。
図20は、「Activitiesタグ」に設定される情報の例を示す図である。「Activitiesタグ」は、自動化処理、分岐処理、人手作業を管理する情報であることを示すタグである。「Activitiesタグ」は、ワークフロー内で一意なIDと名称で管理されている。「Activitiesタグ」には、個々の処理内容や処理終了後の遷移先を示す遷移先IDや、自動化処理、分岐処理、人手作業などのアクティビティの種別が設定される。人手作業の場合、アクティビティの種別は「Role」である。
図21は、「Transitionsタグ」に設定される情報の例を示す図である。「Transitionsタグ」は、遷移先を定義する情報であることを示すタグである。「Transitionsタグ」は、ワークフロー内で一意なIDと名称で管理されている。そして「Transitionsタグ」には、遷移元のアクティビティのID(遷移元ID)、遷移先のアクティビティのID(遷移先ID)が設定される。
XMLで記述されたワークフローでは、現在実行している処理(アクティビティ)以降の人手作業数(残人手作業数)は、以下のようにして抽出することができる。
例えば、現在のワークフローの処理位置(Activity)を、ワークフロー履歴記憶部130で状態と共に管理させる。そして、現在の処理位置(Activity)から、ワークフロー定義(XMLファイル)を基に遷移先にあるPerformerが「Role」であるActivity数をカウントすることで、残人手作業数の抽出が可能である。
以下、具体的なXML形式のワークフローを用いて、残人手作業数の算出方法について説明する。
図22は、残人手作業数の算出例を示す図である。図22には、ワークフロー定義を記述したXMLファイル91と、ワークフロー定義に示される処理手順を示すワークフロー遷移図92とが示されている。
例えば、自動処理(任意のコマンドを実行)においてコマンド実行に失敗した場合、もしくはコマンドの異常終了で復帰した場合、人手で復旧処理(異常時対処)を実施して処理を完了する。現処理位置がアクティビティのID「166」の「任意のコマンドを実行」である場合、遷移先パターンは以下の通りである。
パターン1「ID:166→ID:171→ID:164→ID:168→ID:163」
パターン2「ID:166→ID:172→ID:165→ID:169→ID:163」
パターン3「ID:166→ID:172→ID:165→ID:170→ID:164→ID:168→ID:163」
各ルートの人手作業(Performer:"Role")の数をカウントすることで、各ルートの人手作業数を算出できる。図22の例では、ID:164が人手作業である。従って、パターン1の人手作業数は「1」、パターン2の人手作業数は「0」、パターン3の人手作業数は「1」である。その結果、残人手作業数は「1」となる。
<<<指標4:ワークフローの開始日時>>>
重要度、目標完了日時、残人手作業数がいずれも同じワークフローの通信要求の場合、キュー情報記憶部162へのキューイングの順ではなく、ワークフローの開始日時が早い通信要求を優先する。これは、ユーザビリティ的に先に実行されたワークフローを先に完了させることを意図したものである。
図23は、ワークフロー開始日時と優先度との関係を示す図である。図23の例では、ワークフローXは、ワークフローYよりも早く実行が開始されている。従って、ワークフローXの方が、ワークフローYよりも優先度が高くなる。
このように、ワークフローの優先度は重要度、目標完了日時、残人手作業数、および開始日時に基づいて決定される。
以上が、単一ワークフローの優先度に関する説明である。
<<サブワークフローの優先度>>
ワークフローは、単一ワークフローの場合と、呼び出し関係を有する複数のワークフローで構成される場合とがある。複数のワークフローのうちの、最上位のワークフロー(ルートワークフロー)の優先度については、単一ワークフローの場合と同様に判定できる。
ルートとなるワークフローから呼び出されて実行されるワークフロー(サブワークフロー)には、完了を待ち合わせる「同期型」と、完了を待ち合わせない「非同期型」がある。通信デーモン160は、独立した単一ワークフローについては、個々のワークフローの指標に基づいて優先度を決定するが、サブワークフローについては、ルートワークフローの優先度を踏まえて優先度を決定する。
・同期型のサブワークフロー
同期型サブワークフローの処理時間が上位ワークフローの目標完了日時を超えると、上位ワークフローが目標完了日時を守れない。そのため、同期型サブワークフローの優先度の判定には、上位ワークフローの優先度の指標が流用される。ただし、残人手作業数はワークフローの進捗状況によって変化するため、起点となる操作処理単位に再計算される。
・非同期型のサブワークフロー
非同期型サブワークフローは上位ワークフローの目標完了日時を考慮せずにすむが、上位ワークフローの1ワークフローである。そのため、非同期型サブワークフローの優先度の判定には、上位ワークフローの重要度のみが流用される。
図24は、サブワークフローの優先度判定に用いる指標の例を示す図である。図24の例では、ルートワークフロー81からは、同期型のサブワークフロー82の呼び出しと、非同期型のサブワークフロー84の呼び出しが行われる。サブワークフロー82からは、同期型のサブワークフロー83の呼び出しが行われる。サブワークフロー83からは、非同期型のサブワークフロー85の呼び出しが行われる。
このような場合、同期型のサブワークフロー82,83については、ルートワークフロー81の優先度の指標(重要度、目標完了日時、残人手作業数、開始日時)が流用される。すなわち、ルートワークフロー81の優先度の指標に基づいて、サブワークフロー82,83の優先度が判定される。
ルートワークフロー81から呼び出される非同期型のサブワークフロー84は、ルートワークフロー81の重要度と、自身の目標完了日時、残人手作業数、および開始日時に基づいて、優先度が判定される。同様に、サブワークフロー83から呼び出される非同期型のサブワークフロー85は、ルートワークフロー81の重要度と、自身の目標完了日時、残人手作業数、および開始日時に基づいて、優先度が判定される。
ところで、同期型のサブワークフロー82,83も実体は1つのワークフローであり、「実行時間」の設定が可能である。同期型のサブワークフロー82,83はルートワークフロー81の目標完了日時より早く終了しなければ、ルートワークフロー81において目標完了日時を達成できない。そのため、同期型のサブワークフロー82,83には、ルートワークフロー81の目標完了日時より早く終了するような「実行時間」が設定されている場合がある。ただし、厳密な管理を要求しない場合も多い。そこで、通信デーモン160は、サブワークフロー82,83の優先度の判定において、ルートワークフローの目標完了時間のみを利用し、サブワークフロー82,83の「実行時間」は無視する。
なお、既存のワークフローを同期型のサブサークフローとして呼び出す新たなワークフローを作成する場合がある。この場合、呼出元として作成したワークフローの「実行時間」が、呼出先のサブワークフローの「実行時間」より短い場合がある。このような場合、通信デーモン160は、同期型のサブワークフローの優先度の判定指標として、呼出元のワークフローから指定された目標完了日時と、自身の「実行時間」に応じた終了日時とを比較し、早い方の目標完了日時を採用する。
図25は、呼出元ワークフローの目標完了日時と同期型サブワークフローの実行時間との関係を示す図である。図25の上から順に、最初の例では、呼出元ワークフローの目標完了日時よりも、同期型サブワークフローの実行時間に基づく終了日時の方が、時刻が早い。この場合、同期型サブワークフローの実行時間に基づく終了日時が、同期型サブワークフローの目標完了日時として採用される。
二番目の例では、呼出元ワークフローの目標完了日時よりも、同期型サブワークフローの実行時間に基づく終了日時の方が、時刻が遅い。この場合、呼出元ワークフローの目標完了日時が、同期型サブワークフローの目標完了日時として採用される。
三番目の例では、呼出元ワークフローに目標完了日時が指定されているが、同期型サブワークフローへの実行時間の指定がない。この場合、呼出元ワークフローの目標完了日時が、同期型サブワークフローの目標完了日時として採用される。
四番目の例では、呼出元ワークフローには目標完了日時が指定されておらず、同期型サブワークフローには実行時間が指定されている。この場合、呼出元ワークフローについて、目標完了日時の設定がないものとされる。
五番目の例では、呼出元ワークフローには目標完了日時が指定されておらず、同期型サブワークフローにも実行時間が指定されていない。この場合、呼出元ワークフローについて、目標完了日時の設定がないものとされる。
このように、通信デーモン160は、ワークフローの特性を考慮して、単一ワークフロー、同期型サブワークフロー、非同期型サブワークフローそれぞれの優先度判定の指標を使い分けている。なお、ルートワークフローの優先度判定に使用する指標は、単一ワークフローと同じである。
図26は、ワークフローの種別ごとの優先度判別に使用する指標の例を示す図である。なお図26には重要度と目標完了日時に関してのみ示しており、残人手作業数と開始日時については、省略している。
例えば単一ワークフローまたはルートワークフローであれば、重要度として、自ワークフローの重要度が採用される。目標完了日時として、自ワークフローの実行時間に基づく終了日時または自ワークフローのスケジュールによる終了日時が採用される。
同期型サブワークフローであれば、重要度として、ルートワークフローの重要度が採用される。目標完了日時として、ルートワークフローの目標完了日時、自ワークフローの実行時間に基づく終了日時、または自ワークフローのスケジュールによる終了日時が採用される。
非同期型サブワークフローであれば、重要度として、ルートワークフローの重要度が採用される。目標完了日時として、自ワークフローの実行時間に基づく終了日時、または自ワークフローのスケジュールによる終了日時が採用される。
<ワークフロー実行手順>
次に、ワークフロー実行時のワークフロー実行サーバ100における処理について、具体的に説明する。
例えばweb/APサーバ41からワークフロー制御部150に、ワークフローの実行要求が入力されたとき、またはスケジュール定義記憶部120内のスケジュールにおいて、ワークフローの実行開始日時になったときにワークフローが実行される。ワークフローを実行する場合、ワークフロー制御部150が、ワークフロー実行プロセスを生成する。生成されたワークフロー実行プロセスは、実行するワークフローの優先度情報(重要度、目標完了日時)を生成して通信処理に備える。
以下、ワークフロー実行プロセス151(図4参照)が優先度情報を生成する場合を例にとり、図27、図28を参照して優先度情報生成処理を詳細に説明する。
図27は、優先度情報生成処理の手順を示すフローチャートの前半である。図27には、実行するワークフロー自身に設定された指標のみに関する優先度情報生成処理を示している。以下、図27に示す処理をステップ番号に沿って説明する。
[ステップS101]ワークフロー実行プロセス151は、ワークフローの実行要求に重要度指定があるか否かを判断する。重要度指定がある場合、処理がステップS104に進められる。重要度指定がなければ、処理がステップS102に進められる。
[ステップS102]ワークフロー実行プロセス151は、実行するワークフローに、予め重要度が定義されているか否かを判断する。例えば、ワークフロー実行プロセス151は、ワークフロー定義記憶部110を参照し、実行するワークフローのワークフロー情報内に重要度が設定されている場合、重要度が定義されていると判断する。重要度が定義されている場合、処理がステップS104に進められる。重要度が定義されていない場合、処理がステップS103に進められる。
[ステップS103]ワークフロー実行プロセス151は、実行するワークフローの優先度情報の重要度として、最低のレベル「低」をメモリに格納する。その後、処理がステップS105に進められる。
[ステップS104]ワークフロー実行プロセス151は、実行要求に含まれている重要度指定、またはワークフロー情報として予め設定されている重要度定義を、実行するワークフローの優先度情報の重要度として、メモリに格納する。
[ステップS105]ワークフロー実行プロセス151は、実行要求に実行時間の指定があるか否かを判断する。実行時間の指定がある場合、処理がステップS108に進められる。実行時間の指定がない場合、処理がステップS106に進められる。
[ステップS106]ワークフロー実行プロセス151は、実行するワークフローに、予め実行時間が定義されているか否かを判断する。例えば、ワークフロー実行プロセス151は、ワークフロー定義記憶部110を参照し、実行するワークフローのワークフロー情報内に実行時間が設定されている場合、実行時間が定義されていると判断する。実行時間が定義されている場合、処理がステップS108に進められる。重要度が定義されていない場合、処理がステップS107に進められる。
[ステップS107]ワークフロー実行プロセス151は、実行するワークフローの目標完了日時を初期化(空のデータ)した値を、優先度情報の目標完了日時として、メモリに格納する。その後、処理がステップS109に進められる。
[ステップS108]ワークフロー実行プロセス151は、実行要求に含まれている実行時間、またはワークフロー情報として予め設定されている実行時間に基づいて、目標完了日時を算出する。例えばワークフロー実行プロセス151は、ワークフローの実行開始日時に実行時間を加算した値を、目標完了日時とする。そしてワークフロー実行プロセス151は、算出した目標完了日時を、ワークフローの優先度情報の目標完了日時として、メモリに格納する。
[ステップS109]ワークフロー実行プロセス151は、実行するワークフローのスケジュール定義があるか否かを判断する。例えばワークフロー実行プロセス151は、スケジュール定義記憶部120内に、実行するワークフローのワークフローIDが設定されたスケジュール管理情報が、優先度情報として格納されていれば、スケジュール定義があると判断する。スケジュール定義がある場合、処理がステップS110に進められる。スケジュール定義がなければ、処理がステップS121(図28参照)に進められる。
[ステップS110]ワークフロー実行プロセス151は、現在設定されている目標完了日時と、スケジュールに基づく終了日時(終了スケジュール)とを比較する。目標完了日時の方が早いか、目標完了日時と終了スケジュールとが等しい場合、処理がステップS121に進められる。終了スケジュールの方が早いか、または目標完了日時が初期値の場合、処理がステップS111に進められる。
[ステップS111]ワークフロー実行プロセス151は、実行するワークフローの優先度情報の目標完了日時として、終了スケジュールを設定する。その後、処理がステップS121に進められる。
図27の処理によって、各ワークフローに対して、そのワークフローが単一ワークフローであった場合の優先度情報が設定される。ただし、ワークフローの中には、他のワークフローから呼び出されて実行されるサブワークフローがあり、サブワークフローについては、図24に示したように、呼出元ワークフローからの優先度情報の一部または全部を流用することとなる。そこで、ワークフローの実行契機に応じて、優先度情報に示される指標の値を変更することで、最終的な優先度情報が得られる。
以下、図28を参照して、優先度情報生成処理のうちの、実行契機に基づく優先度情報の変更処理について説明する。
図28は、優先度情報生成処理の手順を示すフローチャートの後半である。図28には、実行契機に応じた優先度情報生成処理を示している。以下、図28に示す処理をステップ番号に沿って説明する。
[ステップS121]ワークフロー実行プロセス151は、ワークフローの実行契機がなにかを判断する。スケジュールにおける開始日時になったことの検知、または手動指示に基づくweb/APサーバ41からの実行要求の入力が実行契機であれば、処理がステップS122に進められる。他のワークフロー実行プロセスからの呼び出しであれば、処理がステップS123に進められる。
[ステップS122]ワークフロー実行プロセス151は、自身が実行する自ワークフローの重要度を採用する。ワークフロー実行プロセス151は、自ワークフローの優先度情報の重要度の値を、そのまま維持する。その後、処理がステップS125に進められる。
[ステップS123]ワークフロー実行プロセス151は、自ワークフローの優先度情報における重要度として、呼出元のワークフローの重要度を採用する。すなわちワークフロー実行プロセス151は、自ワークフローの優先度情報における重要度の値を、呼出元のワークフローの重要度と同じ値に変更する。
[ステップS124]ワークフロー実行プロセス151は、呼び出しが同期型か否かを判断する。同期型であれば、処理がステップS126に進められる。非同期型であれば、処理がステップS125に進められる。
[ステップS125]ワークフロー実行プロセス151は、優先度情報に、自ワークフローの開始日時を設定する。その後、処理がステップS130に進められる。
[ステップS126]ワークフロー実行プロセス151は、優先度情報に、呼出元ワークフローの開始日時を設定する。
[ステップS127]ワークフロー実行プロセス151は、呼出元ワークフローに対して目標完了日時の設定があるか否かを判断する。目標完了日時の設定があれば、処理がステップS128に進められる。目標完了日時の設定がなければ、処理がステップS130に進められる。
[ステップS128]ワークフロー実行プロセス151は、呼出元ワークフローの目標完了日時と、自ワークフローの目標完了日時とを比較する。呼出元ワークフローの目標完了日時の方が早ければ、処理がステップS129に進められる。自ワークフローの目標完了日時の方が早ければ、処理がステップS130に進められる。
[ステップS129]ワークフロー実行プロセス151は、自ワークフローの優先度情報における目標完了日時として、呼出元ワークフローの目標完了日時を採用する。すなわち、ワークフロー実行プロセス151は、自ワークフローにおける優先度情報の目標完了日時の値を、呼出元ワークフローの目標完了日時と同じ値に変更する。その後、処理がステップS131に進められる。
[ステップS130]ワークフロー実行プロセス151は、自ワークフローの目標完了日時を採用する。すなわちワークフロー実行プロセス151は、自ワークフローの優先度情報の目標完了日時の値を、そのまま維持する。
[ステップS131]ワークフロー実行プロセス151は、ワークフローに従った処理の実行を開始する。
このように、起動されたワークフロー実行プロセス151は、ワークフローを実行する前に優先度情報を生成して通信処理に備える。そしてワークフロー実行プロセス151は、対象機器への操作処理に推移した場合、機器操作制御処理を実行する。機器操作制御処理では、ワークフロー実行プロセス151は、優先度情報の一部として残人手作業数を抽出し、通信デーモン160へ通信要求を送信することで、対象機器への操作を依頼する。通信要求には、対象機器接続情報、優先度情報、ワークフロー情報などが含まれる。
図29は、機器操作制御処理の手順の一例を示すフローチャートである。以下、図29に示す処理をステップ番号に沿って説明する。
[ステップS141]ワークフロー実行プロセス151は、現在実行中の作業より後の人手作業の最大数をカウントする。ワークフロー実行プロセス151は、カウントした値を、残人手作業数とする。
[ステップS142]ワークフロー実行プロセス151は、優先度情報に、残人手作業数を追加する。
[ステップS143]ワークフロー実行プロセス151は、優先度情報を含む通信要求を、通信デーモン160に送信する。
ワークフロー実行プロセス151は、通信要求に対する処理結果の応答を受信すると、ワークフローの次の作業に処理を進める。次の作業が人手作業であれば、ワークフロー実行プロセス151は、人手作業の完了通知が入力されるまで、ワークフローの実行を停止する。
次に、通信要求を取得した通信デーモン160における要求受付部161の処理について説明する。要求受付部161は、受信した通信要求への通信スレッドの割り当てを行う。
図30は、通信スレッド割り当て処理の手順の一例を示すフローチャートである。以下、図30に示す処理をステップ番号に沿って説明する。
[ステップS151]要求受付部161は、通信要求の接続先の対象機器にコネクションを接続しており、接続方法が通信要求と同じ既存の通信スレッドが存在するか否かを判断する。該当する通信スレッドが存在すれば、処理がステップS152に進められる。該当する通信スレッドが存在しなければ、処理がステップS155に進められる。
[ステップS152]要求受付部161は、通信要求の接続先の対象機器にコネクションを接続しており、接続方法が通信要求と同じ既存の通信スレッドの状態を確認する。状態が稼働中であれば、処理がステップS155に進められる。状態が停止中であれば、処理がステップS153に進められる。
[ステップS153]要求受付部161は、キュー情報記憶部162に、取得した通信要求の情報を、キュー情報として格納する。
[ステップS154]要求受付部161は、通信要求の接続先の対象機器にコネクションを接続しており、接続方法が通信要求と同じ既存の通信スレッドへ、キュー情報記憶部162に格納した通信要求の処理を実行させる通信イベントを通知する。その後、通信スレッド割り当て処理が終了する。
[ステップS155]要求受付部161は、新たな通信スレッドを作成する。そして要求受付部161は、作成した通信スレッドに通信要求の処理の実行を要求する通信イベントを通知する。このとき要求受付部161は、通信要求の送信元のワークフロー実行プロセスが実行しているワークフローの監視を、監視スレッド163に要求する。その後、監視スレッド163により、該当ワークフローの状態が監視される。
このようにして、要求受付部161により、通信要求に、いずれかの通信スレッドが割り当てられ、割り当てられた通信スレッドへ、通信要求の処理要求が送信される。そして、通信スレッドは、処理要求によって指定された通信要求の処理を実行する。以下、通信スレッド164(図4参照)が通信要求に応じた処理を実行する場合を例にとり、通信スレッドの処理を詳細に説明する。
図31は、通信スレッドの処理手順を示すフローチャートである。以下、図31に示す処理をステップ番号に沿って説明する。
[ステップS161]通信スレッド164は、新規に起動されたときの処理要求で指定された通信要求の接続先となる対象機器へのコネクションを確立する。
[ステップS162]通信スレッド164は、通信異常が発生したか否かを判断する。通信異常が発生した場合、処理がステップS163に進められる。正常にコネクションが確立した場合、処理がステップS167に進められる。
[ステップS163]通信スレッド164は、通信異常の種別を判断する。通信異常の種別は、例えば対象機器から通知される。通信異常の種別が接続数超過の場合、処理がステップS164に進められる。通信異常の種別が接続数超過以外の場合、処理がステップS166に進められる。
[ステップS164]通信スレッド164は、同じ対象機器を接続先として、同じ接続方法で接続している他の通信スレッドが存在するか否かを判断する。該当する通信スレッドが存在すれば、処理がステップS165に進められる。該当する通信スレッドが存在しなければ、処理がステップS166に進められる。
[ステップS165]通信スレッド164は、通信要求を、キュー情報としてキュー情報記憶部162に格納する。その後、通信スレッド164の処理が終了する。
[ステップS166]通信スレッド164は、通信要求の送信元であるワークフロー実行プロセスに、通信異常を通知する。その後、通信スレッド164の処理が終了する。このように、通信スレッド164は、対象機器の既存通信スレッドが存在しない場合、または接続数上限以外の通信異常を検知した場合は、ワークフロー実行プロセスに通信異常を通知し、通信要求をキューイングせずに処理を終了する。
[ステップS167]通信スレッド164は、コネクションが確立すると、通信スレッド164自身の情報を、通信スレッド情報記憶部140に格納する。このとき、スレッド情報管理テーブル142に設定される通信スレッド164状態は、「稼働中」である。
[ステップS168]通信スレッド164は、処理を実行する通信要求における接続先の対象機器に対する処理を実行する。例えば通信スレッド164は、対象機器に対して遠隔操作によってコマンドを入力し、対象機器の環境設定を変更したり、対象機器のプログラムを更新したりする。なお、キュー情報記憶部162にキューイングされた通信要求の処理を実行する場合は、優先度の高いワークフローの通信要求から順に処理が実行される。
[ステップS169]通信スレッド164は、ワークフロー実行プロセスへ処理結果を通知する。
[ステップS170]通信スレッド164は、キュー情報記憶部162から、キュー情報を取得する。
[ステップS171]通信スレッド164は、登録されているキュー情報の中に、自身が実行する通信要求があるか否かを判断する。通信スレッド164は、該当する通信要求があれば、該当する通信要求のうち、優先度が最も高いワークフローの通信要求を取得し、処理をステップS168に進める。対合する通信要求がなければ、処理がステップS172に進められる。
[ステップS172]通信スレッド164は、通信スレッド情報における通信スレッド164の状態として、「休止中」を設定する。
[ステップS173]通信スレッド164は、通信イベントまたは停止イベントの発生を待つ。いずれかのイベントの通知を通信スレッド164が受信すると、処理がステップS174に進められる。
[ステップS174]通信スレッド164は、通知されたイベントが、通信イベントか停止イベントかを判断する。通信イベントを受信した場合、処理がステップS175に進められる。停止イベントを受信した場合、処理がステップS176に進められる。
[ステップS175]通信スレッド164は、通信スレッド情報記憶部140における通信スレッド164の状態を「稼動中」に設定し、処理をステップS170に進める。
[ステップS176]通信スレッド164は、通信スレッド情報記憶部140から通信スレッド164自身の情報を削除する。このとき通信スレッド164は、接続先の対象機器とのコネクションを切断する。
[ステップS177]通信スレッド164は、通信スレッド情報記憶部140を参照し、通信スレッド164と同じ対象機器を接続先とする通信スレッド数が「0」になったか否かを判断する。例えば、通信スレッド164が接続した対象機器の対象機器IDで、通信スレッド情報記憶部140内のスレッド情報管理テーブル142を検索する。検索の結果、一件のレコードもヒットしなかった場合、該当通信スレッド数は「0」である。該当する通信スレッド数が「0」であれば、処理がステップS178に進められる。台頭する通信スレッド数が「1」以上であれば、処理が終了する。
[ステップS178]通信スレッド164は、通信スレッド情報記憶部140から、通信スレッド164の接続先である対象機器に関する情報を削除する。例えば通信スレッド164は、対象機器情報管理テーブル141から、通信スレッド164の接続先である対象機器の対象機器IDが設定されたレコードを削除する。その後、処理が終了する。
このようにして、通信スレッド164により、優先度が高いワークフローの通信要求から順に実行される。なお、ステップS173,S174に示した停止イベントは、監視スレッド163から通知されるイベントである。監視スレッド163は、ワークフローの実況状況と、通信スレッドの時刻状況とを監視して、通信スレッドの数が過剰と判断したときに停止イベントを発生させる。
図32は、監視スレッドの処理の手順の一例を示すフローチャートである。以下、図32に示す処理をステップ番号に沿って説明する。
[ステップS181]監視スレッド163は、ワークフロー履歴記憶部130から、ワークフローの履歴情報を取得する。
[ステップS182]監視スレッド163は、通信スレッド情報記憶部140へ、ワークフローの稼働状況を反映させる。例えば監視スレッド163は、稼動中のワークフローのワークフローIDと、そのワークフローの実行のために出力された通信要求における接続先の対象機器の対象機器IDとの組を、要求ワークフロー情報管理テーブル143に格納する。また監視スレッド163は、停止中のワークフローのワークフローIDが設定されたレコードを、要求ワークフロー情報管理テーブル143から削除する。
[ステップS183]監視スレッド163は、未処理の対象機器を選択し、通信スレッド情報記憶部140から、選択した対象機器の対象機器IDに関連付けられた通信スレッド情報を取得する。
[ステップS184]監視スレッド163は、選択した対象機器に接続している通信スレッド数と、その対象機器を接続先とする通信要求の出力元であるワークフローの数(要求ワークフロー数)とを比較する。通信スレッド数の方が、要求ワークフロー数よりも多ければ、処理がステップS185に進められる。要求ワークフロー数が通信スレッド数以上であれば、処理がステップS186に進められる。
[ステップS185]監視スレッド163は、余分な通信スレッドに停止イベントを発行する。例えば監視スレッド163は、通信スレッド数から要求ワークフロー数を減算した値を、余分な通信スレッド数とする。そして監視スレッド163は、スレッド情報管理テーブル142内の、余分な通信スレッドが存在する対象機器の対象機器IDに関連付けられたレコードのうち、状態が「停止中」のレコードを抽出する。監視スレッド163は、抽出したレコードから、余分な通信スレッド数分のレコードを選択し、選択したレコードに示されるスレッドIDに対応する通信スレッドに、停止イベントを発行する。この停止イベントを受信した通信スレッドは、処理を停止する。
[ステップS186]監視スレッド163は、すべての対象機器に対して、ステップS183〜S185の処理を実行したか否かを判断する。すべての対象機器に対する処理が完了していれば、処理がステップS187に進められる。未処理の対象機器があれば、処理がステップS183に進められる。
[ステップS187]監視スレッド163は、監視する通信スレッドがなくなったかどうかを判断する。例えば監視スレッド163は、通信スレッド情報記憶部140に、通信スレッドの情報がまったくなくなった場合、監視する通信スレッドがなくなったと判断する。監視する通信スレッドがなくなった場合、監視処理が終了する。監視する通信スレッドが残存していれば、処理がステップS188に進められる。
[ステップS188]監視スレッド163は、一定期間スリープし、その後処理をステップS181に進める。
このようにして、一定期間ごとに余分な通信スレッドの有無がチェックされ、余分な通信スレッドが停止させられる。
<第2の実施の形態の効果>
第2の実施の形態では、残人手作業数に基づいて優先度を判定している。これにより、残人手作業数が多いワークフローの通信要求を先に処理させることができ、複数のワークフローを並列で実行した場合の全ワークフローの完了時刻を早めることができる。
例えばワークフローの作り(人手作業の有無)を考慮せずに優先度を決定すると、人手作業を含むワークフローを優先的に処理することができない。そのため、あるワークフローの処理が人手作業で滞留している間に、他のワークフローの処理を進めるといった効率的な処理制御が行われず、多重実行によるワークフローの完了遅延が大きくなる。
図33は、並列で実行するワークフローの例を示す図である。図33に示した例では、自動で実効可能な機器操作の作業の所要時間は1分、人手作業の所要時間は10分であるものとする。
ここで、対象機器の最大接続数を1とした時、対象機器への通信は1スレッドで処理されワークフローX,Y,Zが順次実行される。そのため、1つのワークフローの通信要求の処理を実行中は他ワークフローの通信要求がキューイングされて処理の滞留が発生する。
以下、ワークフローの残人手作業数を考慮しない場合と、ワークフローの残人手作業数を考慮した場合との各ワークフローの処理時間の違いについて検討する。
まずワークフローXの処理時間について考える。ワークフローXが単体で実行された場合は「機器操作3個」×「所要時間1分」=「ワークフローXの処理時間3分」となる。
しかし、ワークフローX,Y,Zを同時に実行した場合の機器操作は通信スレッドへの依頼順で処理される。すなわち、ワークフローXの2つ目の機器操作は、ワークフローY,Zの機器操作の処理後(2分後)に実行される。そのため、ワークフローX全体の処理時間は6分となる。同様に、ワークフローY全体の処理時間は7分となる。
次に、ワークフローの残人手作業数を考慮しない場合のワークフローXの処理時間について考える。
図34は、ワークフローの残人手作業数の考慮の有無による処理時間の違いを示す図である。ワークフローZが単体で実行された場合は「機器操作2個」×「所要時間1分」+「人手作業10分」=「ワークフローZ処理時間12分」である。ワークフローX,Y,Zを同時に実行した場合は人手作業処理(10分)後にワークフローZの2つ目の機器操作の通信要求が行われる。そのため、ワークフローZ全体の処理時間は14分となる。
ワークフローの残人手作業数を考慮した場合、ワークフローZの1つ目の機器操作を優先することで、通信スレッドでの滞留時間を1分短縮でき、ワークフローZ全体の処理時間は13分となる。
このように、通信スレッドで人手作業があるワークフローZの優先度を考慮した場合、通信スレッドでの滞留時間が短縮される。
また、第2の実施の形態では、サブワークフローの優先度情報として、ルートワークフローの優先度情報の少なくとも一部を流用している。これにより、サブワークフローの優先度が低いことによりルートフローの処理が遅延してしまうことを抑止できる。
図35は、サブワークフローの優先度制御を示す図である。例えば、図35に示すワークフローXの重要度は「高」である。ワークフローXから非同期に呼び出されるサブワークフローYの重要度は「低」である。また単一のワークフローZの重要度は「中」である。
このとき、非同期のサブワークフローYにおいて呼出元のワークフローXの重要度を引き継がないと、個々のワークフローの優先度でキュー制御される。そのため、サブワークフローYよりワークフローZが優先的に処理され、サブワークフローYの処理の完了が遅延する可能性がある。
それに対して、第2の実施の形態に示すように、非同期のサブワークフローYにおいて呼出元のワークフローXの重要度を引き継ぐことで、サブワークフローYの重要度は「高」と判断される。その結果、重要度が高いワークフローXの処理の一環であるサブワークフローYの処理の完了が遅延することを抑止できる。
なお、同期型のサブワークフローであれば、ルートワークフローの優先度情報のすべてを引き継ぐため、優先度の判定において、ルートワークフローと同等の扱いを受けることができる。その結果、サブワークフローの設定の誤りなどにより、優先度の高いルートワークフローの処理が遅延することが抑止される。
以上が第2の実施の形態の説明である。
〔その他の実施の形態〕
第2の実施の形態では、優先度判断の指標として、重要度、目標完了日時、残人手作業数、および開始日時を用いているが、これらの指標の一部のみを用いて優先度を判断してもよい。
また第2の実施の形態では、優先度を決定するための指標の判断の順番を、重要度、目標完了日時、残人手作業数、開始日時としている。そして、先に判断した指標において値が一致するワークフロー同士の優先度を、後の指標に基づいて判断している。このような指標の判断の順番を入れ替えてもよい。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
1 機器
2,3 ワークフロー
4 コネクション
10 情報処理装置
11 記憶部
12 演算部

Claims (9)

  1. コンピュータに、
    管理対象の機器に対して、人手によって実施するか、もしくはネットワークを介した遠隔操作の自動実行によって実施する複数の作業の実施手順が定義された複数のワークフローそれぞれについて、人手によって実施する人手作業の数を示す人手作業数を特定し、
    前記複数のワークフローそれぞれについて、特定された前記人手作業数に基づいて、遠隔操作の自動実行による作業を実施するために前記機器との間で確立したコネクションを使用する優先度を決定する、
    処理を実行させるコネクション管理プログラム。
  2. 前記人手作業数の特定では、ワークフロー内の未実施の作業に含まれる人手作業の数を、該ワークフローの前記人手作業数とする、
    請求項1記載のコネクション管理プログラム。
  3. 前記人手作業数の特定では、ワークフローにおける現在実行中の作業から該ワークフローの終了に至るすべての経路それぞれについて、経路上の人手作業の数を算出し、算出された人手作業の数の最大値を、該ワークフローの前記人手作業数とする、
    請求項1または2記載のコネクション管理プログラム。
  4. 前記優先度の決定では、前記人手作業数が多いワークフローほど優先度を高くする、
    請求項1乃至3のいずれかに記載のコネクション管理プログラム。
  5. 呼出元ワークフローから呼び出されるサブワークフローがあるとき、前記呼出元ワークフローについて決定した優先度を、前記サブワークフローの優先度とする、
    請求項1乃至4記載のコネクション管理プログラム。
  6. 呼出元ワークフローから呼び出されるサブワークフローがあるとき、前記呼出元ワークフローが、前記サブワークフローの終了を待って呼び出し後の作業を実施する同期型の呼び出し処理を行う場合、前記呼出元ワークフローについて決定した優先度を、前記サブワークフローの優先度に決定し、前記呼出元ワークフローが、前記サブワークフローの終了を待たずに呼び出し後の作業を実施する非同期型の呼び出し処理を行う場合、前記サブワークフローについての前記人手作業数に基づいて前記サブワークフローの優先度を決定する、
    請求項1乃至4のいずれかに記載のコネクション管理プログラム。
  7. 前記機器に対して接続されているコネクションの数であるコネクション数と、前記機器を操作対象として遠隔操作の自動実行によって実施する作業を含むワークフローの数であるワークフロー数とを比較し、前記コネクション数の方が多い場合、前記コネクション数と前記ワークフロー数との差に相当する数のコネクションを停止する、
    請求項1乃至6のいずれかに記載のコネクション管理プログラム。
  8. コンピュータが、
    管理対象の機器に対して、人手によって実施するか、もしくはネットワークを介した遠隔操作の自動実行によって実施する複数の作業の実施手順が定義された複数のワークフローそれぞれについて、人手によって実施する人手作業の数を示す人手作業数を特定し、
    前記複数のワークフローそれぞれについて、特定された前記人手作業数に基づいて、遠隔操作の自動実行による作業を実施するために前記機器との間で確立したコネクションを使用する優先度を決定する、
    コネクション管理方法。
  9. 管理対象の機器に対して、人手によって実施するか、もしくはネットワークを介した遠隔操作の自動実行によって実施する複数の作業の実施手順が定義された複数のワークフローを記憶する記憶部と、
    前記複数のワークフローそれぞれについて、人手によって実施する人手作業の数を示す人手作業数を特定し、前記複数のワークフローそれぞれについて、特定された前記人手作業数に基づいて、遠隔操作の自動実行による作業を実施するために前記機器との間で確立したコネクションを使用する優先度を決定する演算部と、
    を有する情報処理装置。
JP2016024367A 2016-02-12 2016-02-12 コネクション管理プログラム、コネクション管理方法、および情報処理装置 Expired - Fee Related JP6597360B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016024367A JP6597360B2 (ja) 2016-02-12 2016-02-12 コネクション管理プログラム、コネクション管理方法、および情報処理装置
US15/413,559 US10733554B2 (en) 2016-02-12 2017-01-24 Information processing apparatus and method for managing connections

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016024367A JP6597360B2 (ja) 2016-02-12 2016-02-12 コネクション管理プログラム、コネクション管理方法、および情報処理装置

Publications (2)

Publication Number Publication Date
JP2017142704A JP2017142704A (ja) 2017-08-17
JP6597360B2 true JP6597360B2 (ja) 2019-10-30

Family

ID=59559680

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016024367A Expired - Fee Related JP6597360B2 (ja) 2016-02-12 2016-02-12 コネクション管理プログラム、コネクション管理方法、および情報処理装置

Country Status (2)

Country Link
US (1) US10733554B2 (ja)
JP (1) JP6597360B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN207777467U (zh) 2017-04-24 2018-08-28 青岛亚通达铁路设备有限公司 盘式制动器用摩擦衬垫组装体
CN108182110A (zh) * 2018-01-23 2018-06-19 平安科技(深圳)有限公司 任务流转控制方法、装置、设备及计算机可读存储介质
US10891571B2 (en) * 2018-08-23 2021-01-12 Capital One Services, Llc Task management platform
CN112256442A (zh) * 2019-07-22 2021-01-22 中兴通讯股份有限公司 一种数据库死锁检测方法及装置
JP2023002291A (ja) * 2021-06-22 2023-01-10 株式会社リコー 情報処理システム、情報処理装置、情報処理方法及びプログラム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3146300B2 (ja) * 1993-09-22 2001-03-12 株式会社日立製作所 工程計画作成方法および装置
US6427161B1 (en) * 1998-06-12 2002-07-30 International Business Machines Corporation Thread scheduling techniques for multithreaded servers
JP2002157386A (ja) * 2000-09-08 2002-05-31 Hitachi Ltd ワークフロー管理方法および装置並びにその処理プログラム並びにその処理プログラムを格納した記録媒体
JP2008135054A (ja) 2001-05-10 2008-06-12 Hitachi Ltd ワークフロー管理方法及びその実施システム
US7346532B2 (en) 2001-05-10 2008-03-18 Hitachi, Ltd. Workflow system
JP2003150888A (ja) * 2001-11-09 2003-05-23 Hitachi Ltd シミュレーション仲介システム
JP2006285784A (ja) * 2005-04-01 2006-10-19 Canon Inc スケジューリングシステム及び方法
WO2006116529A2 (en) * 2005-04-28 2006-11-02 Katalytik, Inc. System and method for managing healthcare work flow
US9606772B2 (en) * 2006-11-21 2017-03-28 International Business Machines Corporation Business process diagram data collection
US20100306005A1 (en) * 2009-05-29 2010-12-02 Perceptive Software, Inc. Workflow Management System and Method
US9838287B2 (en) * 2012-01-27 2017-12-05 Microsoft Technology Licensing, Llc Predicting network data consumption relative to data usage patterns
JP5891969B2 (ja) 2012-06-25 2016-03-23 富士通株式会社 排他制御プログラム、該装置、及び該方法
JP6039791B2 (ja) * 2013-03-18 2016-12-07 株式会社日立製作所 スケジュール決定装置及び決定方法
JP6311282B2 (ja) * 2013-11-13 2018-04-18 富士通株式会社 起動制御プログラム、装置、及び方法

Also Published As

Publication number Publication date
JP2017142704A (ja) 2017-08-17
US10733554B2 (en) 2020-08-04
US20170236085A1 (en) 2017-08-17

Similar Documents

Publication Publication Date Title
JP6597360B2 (ja) コネクション管理プログラム、コネクション管理方法、および情報処理装置
US7933995B2 (en) Computer program and apparatus for controlling computing resources, and distributed processing system
US10348809B2 (en) Naming of distributed business transactions
US9058359B2 (en) Proactive risk analysis and governance of upgrade process
JP6064734B2 (ja) ワークフロー制御プログラム、装置および方法
US20160275123A1 (en) Pipeline execution of multiple map-reduce jobs
US20080030764A1 (en) Server parallel aggregation
JP5737057B2 (ja) プログラム、ジョブスケジューリング方法、および情報処理装置
TWI394074B (zh) 管理儲存之存取之方法,裝置及電腦程式
JP2004302937A (ja) プログラム配置方法及びその実施システム並びにその処理プログラム
CN101790721A (zh) 执行顺序决定装置、执行顺序决定程序、执行顺序决定电路及信息处理装置
JP2015191523A (ja) 構成管理装置、構成管理システム、および構成管理プログラム
US20100211949A1 (en) Management computer and processing management method
US10075326B2 (en) Monitoring file system operations between a client computer and a file server
US20220244991A1 (en) Tool for viewing jobs managed by heterogeneous job schedulers
JP2011103030A (ja) インシデント管理方法および運用管理サーバ
JP2013045313A (ja) ログ収集管理装置、システム、および方法
US9021078B2 (en) Management method and management system
JP5962493B2 (ja) プログラム、情報処理装置およびオブジェクト送信方法
US11204942B2 (en) Method and system for workload aware storage replication
US10585620B2 (en) Storage monitoring system for monitoring components in a storage system in a distributed manner
US10346371B2 (en) Data processing system, database management system, and data processing method
KR101692964B1 (ko) 프로비저닝 장치 및 그 방법
CN110837428A (zh) 存储设备管理方法及装置
US11238009B1 (en) Techniques for automated policy analysis

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181011

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190820

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190916

R150 Certificate of patent or registration of utility model

Ref document number: 6597360

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees