(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023130146
(43)【公開日】2023-09-20
(54)【発明の名称】判定プログラム、判定方法および情報処理装置
(51)【国際特許分類】
G06F 11/07 20060101AFI20230912BHJP
【FI】
G06F11/07 190
G06F11/07 140A
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022034648
(22)【出願日】2022-03-07
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】古賀 奨
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042HH26
5B042JJ29
5B042KK15
5B042MA08
5B042MC17
(57)【要約】
【課題】エラー原因の切り分けを効率化する。
【解決手段】記憶部は、第1のエラー情報および第2のエラー情報を記憶する。第1のエラー情報は、第1の装置により処理対象システムに対する処理を実行した際のエラーを示す。第2のエラー情報は、当該処理の実行に影響する設定情報が設定された第2の装置により当該処理を実行した際のエラーを示す。処理部は、第1のエラー情報と第2のエラー情報との比較の結果に基づいて、第1のエラー情報により示されるエラーが、第1の装置により保持される設定情報が第2の装置に設定された設定情報と異なることに起因するエラーであるか、または、処理対象システムの変更に起因するエラーであるかを判定する。
【選択図】
図9
【特許請求の範囲】
【請求項1】
コンピュータに、
第1の装置により処理対象システムに対する処理を実行した際のエラーを示す第1のエラー情報を取得し、
前記第1のエラー情報と、前記処理の実行に影響する設定情報が設定された第2の装置により前記処理を実行した際のエラーを示す第2のエラー情報との比較の結果に基づいて、前記第1のエラー情報により示されるエラーが、前記第1の装置により保持される設定情報が前記第2の装置に設定された設定情報と異なることに起因するエラーであるか、または、前記処理対象システムの変更に起因するエラーであるかを判定する、
処理を実行させる判定プログラム。
【請求項2】
前記判定では、
前記第1のエラー情報と前記第2のエラー情報とが異なる場合に、前記第1のエラー情報により示されるエラーが、前記第1の装置により保持される設定情報が前記第2の装置に設定された設定情報と異なることに起因するエラーであると判定し、
前記第1のエラー情報と前記第2のエラー情報とが同じである場合に、前記第1のエラー情報により示されるエラーが、前記処理対象システムの変更に起因するエラーであると判定する、
処理を前記コンピュータに実行させる請求項1記載の判定プログラム。
【請求項3】
前記第1の装置から前記第1のエラー情報を受信すると、
前記第2の装置により前記処理対象システムに対する前記処理を実行させ、前記第2の装置から前記第2のエラー情報を取得する、
処理を前記コンピュータに実行させる請求項1記載の判定プログラム。
【請求項4】
前記第1の装置および前記第2の装置それぞれが実行する前記処理は、複数のステップを含み、
前記第2の装置が前記処理を実行する際に、前記複数のステップのうち前記処理対象システムに対するデータ更新のステップをスキップさせる、
処理を前記コンピュータに実行させる請求項1記載の判定プログラム。
【請求項5】
前記第2の装置により前記処理を実行した際にエラーが発生しない場合、前記第1のエラー情報により示されるエラーが、前記第1の装置により保持される設定情報が前記第2の装置に設定された設定情報と異なることに起因するエラーであると判定する、
処理を前記コンピュータに実行させる請求項1記載の判定プログラム。
【請求項6】
前記第1のエラー情報は、複数のエラーを示し、
前記第1のエラー情報と前記第2のエラー情報との比較の結果に基づいて、前記複数のエラーそれぞれが、前記第1の装置により保持される設定情報が前記第2の装置に設定された設定情報と異なることに起因するエラーであるか、または、前記処理対象システムの変更に起因するエラーであるかを判定する、
処理を前記コンピュータに実行させる請求項1記載の判定プログラム。
【請求項7】
前記第1の装置および前記第2の装置それぞれが実行する前記処理は、RPA(Robotic Process Automation)のロボットの処理である、
請求項1記載の判定プログラム。
【請求項8】
コンピュータが、
第1の装置により処理対象システムに対する処理を実行した際のエラーを示す第1のエラー情報を取得し、
前記第1のエラー情報と、前記処理の実行に影響する設定情報が設定された第2の装置により前記処理を実行した際のエラーを示す第2のエラー情報との比較の結果に基づいて、前記第1のエラー情報により示されるエラーが、前記第1の装置により保持される設定情報が前記第2の装置に設定された設定情報と異なることに起因するエラーであるか、または、前記処理対象システムの変更に起因するエラーであるかを判定する、
判定方法。
【請求項9】
第1の装置により処理対象システムに対する処理を実行した際のエラーを示す第1のエラー情報、および、前記処理の実行に影響する設定情報が設定された第2の装置または当該設定情報が設定された自装置により前記処理を実行した際のエラーを示す第2のエラー情報を記憶する記憶部と、
前記第1のエラー情報と前記第2のエラー情報との比較の結果に基づいて、前記第1のエラー情報により示されるエラーが、前記第1の装置により保持される設定情報が前記第2の装置または自装置に設定された設定情報と異なることに起因するエラーであるか、または、前記処理対象システムの変更に起因するエラーであるかを判定する処理部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は判定プログラム、判定方法および情報処理装置に関する。
【背景技術】
【0002】
コンピュータなどの情報処理装置は、ユーザによるデータ入力などの作業を支援するソフトウェアを実行することがある。例えば、情報処理装置は、RPA(Robotic Process Automation)と呼ばれる技術により、情報処理装置が出力するデスクトップ画面上でのユーザの定型的な操作を自動化することがある。
【0003】
ところで、情報処理システムでは、ソフトウェアの動作の不具合によりエラーが発生することがある。そこで、エラー発生時にエラー原因の解析を行う技術が考えられている。
例えば、障害発生時のエラーログと、インシデント発生日におけるログパターンリストと、に基づいて、障害発生時のエラーログとインシデント発生日におけるエラーログの類似度を計算する障害解析支援装置の提案がある。提案の障害解析支援装置は、計算した類似度に基づいて、障害発生時のエラーログから推定されるインシデントの障害解決策を出力する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
端末装置は、RPAなどを実現するソフトウェアを実行することで、処理対象のシステムに対する所定の処理を自動化する。この場合、処理対象のシステムの変更は、当該ソフトウェアの処理に影響を及ぼすことがある。特に、処理対象のシステムは、当該ソフトウェアを使用するユーザとは異なる第三者によって運用され得る。このため、当該ソフトウェアのユーザが、処理対象のシステムの変更を把握するのが難しいことがある。
【0006】
一方、ソフトウェアの処理は、ソフトウェアを実行する端末装置のオペレーティングシステムなどの実行環境における設定情報の変更の影響を受けることもある。当該設定情報の変更は、端末装置を実際に操作するユーザによって、ソフトウェアの処理への影響を考慮せずに独自に行われることが少なくない。
【0007】
このため、ある処理対象のシステムに対する端末装置の処理でエラーが発生すると、エラーの原因が当該処理を実行する端末装置の側にあるのか、または、処理対象のシステムの側にあるのかの切り分けが難しいことがある。
【0008】
1つの側面では、本発明は、エラー原因の切り分けを効率化する判定プログラム、判定方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
1つの態様では、判定プログラムが提供される。この判定プログラムは、コンピュータに、第1の装置により処理対象システムに対する処理を実行した際のエラーを示す第1のエラー情報を取得し、第1のエラー情報と、当該処理の実行に影響する設定情報が設定された第2の装置により当該処理を実行した際のエラーを示す第2のエラー情報との比較の結果に基づいて、第1のエラー情報により示されるエラーが、第1の装置により保持される設定情報が第2の装置に設定された設定情報と異なることに起因するエラーであるか、または、処理対象システムの変更に起因するエラーであるかを判定する、処理を実行させる。
【0010】
また、1つの態様では、判定方法が提供される。
また、1つの態様では、情報処理装置が提供される。
【発明の効果】
【0011】
1つの側面では、エラー原因の切り分けを効率化できる。
【図面の簡単な説明】
【0012】
【
図1】第1の実施の形態の情報処理装置を説明する図である。
【
図2】第2の実施の形態の情報処理システムの例を示す図である。
【
図3】情報処理装置のハードウェア例を示す図である。
【
図6】運用環境に対する採取情報の例を示す図である。
【
図7】保守環境に対する採取情報の例を示す図である。
【
図8】情報処理装置の処理例を示すフローチャートである。
【
図9】エラー原因の一次切り分けの例を示す図である。
【
図10】第3の実施の形態の情報処理装置の処理例を示すフローチャートである。
【
図11】エラー原因の一次切り分けの例を示す図である。
【
図13】スキップフラグテーブルの例を示す図である。
【
図14】第4の実施の形態の情報処理装置の処理例を示すフローチャートである。
【
図15】スキップフラグに応じたロボットの処理例を示す図である。
【発明を実施するための形態】
【0013】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0014】
図1は、第1の実施の形態の情報処理装置を説明する図である。
情報処理装置10、第1の装置20、第2の装置30および処理対象システム40は、ネットワーク50に接続される。ネットワーク50は、LAN(Local Area Network)でもよいし、WAN(Wide Area Network)やインターネットなどでもよい。
【0015】
情報処理装置10は、第1の装置20により実行されるソフトウェアの処理でエラーが発生した場合に、エラーの原因の調査を支援する。第1の装置20は、処理対象システム40に対するデータ入力などの所定の処理を行う運用環境の装置である。例えば、第1の装置20は、RPAを実現するソフトウェアを実行することで、処理対象システム40に対する処理を行ってもよい。すなわち、第1の装置20は、処理対象システム40に対するユーザの定型操作をRPAロボットにより自動化してもよい。RPAロボットは、ソフトウェアのロボットであり、単にロボットと表記される。
【0016】
第2の装置30は、情報処理装置10と連携して第1の装置20で発生したエラーの原因の切り分けに用いられる保守環境の装置である。ただし、第2の装置30の機能は、情報処理装置10により実現されてもよい。処理対象システム40は、例えばユーザのデータの管理や当該データに基づく所定の処理を行うサービスを提供する。処理対象システム40は、第1の装置20によるデータ入力などの処理を受け付けるGUI(Graphical User Interface)などのインタフェースを提供する。
【0017】
情報処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部12は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部12はプログラムを実行するプロセッサでもよい。「プロセッサ」は、複数のプロセッサの集合、すなわち、マルチプロセッサでもよい。
図1では省略しているが、第1の装置20、第2の装置30および処理対象システム40も、情報処理装置10と同様に、記憶部および処理部を有する。
【0018】
第1の装置20は、設定情報21を保持する。設定情報21は、第1の装置20におけるソフトウェアの実行環境の設定情報である。すなわち、設定情報21は、第1の装置20による処理対象システム40に対する処理に影響を与える情報である。
【0019】
当該実行環境の設定情報は、該当の装置で実行されるオペレーティングシステムおよびミドルウェアの少なくとも一方の設定情報を含んでもよい。また、例えば、RPAを実現するソフトウェアの場合、当該実行環境の設定情報は、ロボットを動作させるエージェントの設定情報やロボットによる処理手順を定義するための設定情報を含んでもよい。このように、ソフトウェアの処理に影響を及ぼし得る設定情報は多岐に亘る。設定情報21は、第1の装置20の記憶部により保持される。
【0020】
第2の装置30は、ソフトウェアの実行環境として、第1の装置20と同じ実行環境を有する。例えば、第2の装置30におけるオペレーティングシステムやミドルウェアなどは、第1の装置20と同じものである。また、第2の装置30は、元の設定情報31を保持する。元の設定情報31は、第1の装置20で実行されるソフトウェアの実行環境における動作確認済の設定情報である。元の設定情報31は、第2の装置30による処理対象システム40に対する処理に影響を与える情報である。例えば、第2の装置30では、処理対象システム40に対する該当のソフトウェアの処理が適正に動作することが、開発者あるいは保守者によって予め確認済である。元の設定情報31は、第2の装置30の記憶部により保持される。
【0021】
例えば、元の設定情報31は、設定情報21の生成元の設定情報でもよい。ただし、設定情報21は、当初は、元の設定情報31と同じであったとしても、その後も元の設定情報31と同じであるとは限らない。第1の装置20を操作するユーザによって設定情報21が変更される可能性もある。
【0022】
記憶部11は、処理部12により第1の装置20および第2の装置30から取得された情報を保持する。具体的には、記憶部11は、第1のエラー情報22および第2のエラー情報32を記憶する。第1のエラー情報22は、第1の装置20による処理対象システム40に対する処理の実行時のエラーを示す。第2のエラー情報32は、第2の装置30による処理対象システム40に対する処理の実行時のエラーを示す。
【0023】
処理部12は、第1のエラー情報22を取得し、記憶部11に格納する。また、処理部12は、第2のエラー情報32を取得し、記憶部11に格納する。
例えば、処理部12は、第1の装置20でのエラー発生に応じて第1の装置20により第1のエラー情報22が生成されると、第1の装置20から第1のエラー情報22を取得し、記憶部11に格納する。すると、処理部12は、処理対象システム40に対する処理を第2の装置30に実行させる。
【0024】
処理部12は、第2の装置30でエラーが発生しない場合、第1の装置20で発生したエラーが、第1の装置20の設定情報21が元の設定情報31と異なることに起因するエラーであると判定する。
【0025】
一方、処理部12は、第2の装置30でエラーが発生し、第2の装置30により第2のエラー情報32が生成される場合、第2の装置30から第2のエラー情報32を取得し、記憶部11に格納する。
【0026】
そして、処理部12は、第1のエラー情報22と第2のエラー情報32との比較を行う。処理部12は、当該比較の結果に基づいて、第1のエラー情報22により示されるエラーが、設定情報21が元の設定情報31と異なることに起因するエラーであるか、または、処理対象システム40の変更に起因するエラーであるかを判定する。
【0027】
例えば、処理部12は、比較対象とするエラーの情報として、エラーメッセージの本体、すなわち、環境差異やタイムスタンプやロボット実行時のユーザの識別情報などの影響がない箇所を用いる。処理部12は、第1のエラー情報22に含まれる第1のエラーメッセージが、第2のエラー情報32に含まれる第2のエラーメッセージと同じであるか否かに応じて、当該判定を行う。
【0028】
第1のエラーメッセージが第2のエラーメッセージと同じである場合、処理部12は、第1のエラー情報22により示されるエラーが処理対象システムの変更に起因するエラーであると判定する。第1の装置20でも第2の装置30と同じエラーが発生したということは、第1の装置20の設定情報21は、元の設定情報31と同じであり、第1の装置20におけるソフトウェアの実行環境に問題はないと推定される。したがって、この場合、処理部12は、処理対象システム40が変更されたことが、第1の装置20で発生したエラーの原因と判断する。
【0029】
一方、第1のエラーメッセージが第2のエラーメッセージと異なる場合、処理部12は、第1のエラー情報22により示されるエラーが、設定情報21が元の設定情報31と異なることに起因するエラーであると判定する。第2の装置30は、実行環境に関して動作確認済の元の設定情報31を有している。したがって、第1の装置20で第2の装置30とは異なるエラーが発生したということは、第1の装置20における処理の実行環境の設定に問題があると推定される。よって、処理部12は、第1の装置20の設定情報21が元の設定情報31と異なることが、第1の装置20で発生したエラーの原因と判断する。
【0030】
情報処理装置10によれば、第1の装置20による処理対象システム40に対する処理の実行時のエラーを示す第1のエラー情報22が取得される。当該処理の実行に影響する元の設定情報31が設定された第2の装置30による処理の実行時のエラーを示す第2のエラー情報32が取得される。第1のエラー情報22と第2のエラー情報32との比較の結果に基づいて、第1のエラー情報22により示されるエラーの原因が判定される。すなわち、当該エラーが、第1の装置20により保持される設定情報21が第2の装置30に設定された元の設定情報31と異なることに起因するエラーであるか、または、処理対象システム40の変更に起因するエラーであるかが判定される。
【0031】
これにより、エラー原因の切り分けを効率化できる。
ここで、処理対象システム40における変更は、第1の装置20の処理に影響を及ぼし得る。例えば、第1の装置20が、処理対象システム40が提供するWebページなどのGUIに対するデータ入力を自動化する処理を行う場合、処理対象システム40における当該GUI上の入力フォームなどの変更が、第1の装置20の処理に影響を及ぼし得る。特に、処理対象システム40が第三者によって運用されることもあり、第1の装置20のユーザが、処理対象システム40の変更を把握することは容易でない。
【0032】
一方、第1の装置20で実行されるソフトウェアの処理は、第1の装置20のオペレーティングシステムなどの、ソフトウェアの実行環境における設定情報の変更の影響を受けることもある。例えば、第1の装置20のオペレーティングシステムによるファイルの拡張子の表示の有無などの表示内容の設定が、処理対象システム40に対する第1の装置20の処理に影響を及ぼすこともある。当該設定情報の変更は、第1の装置20を実際に操作するユーザ、すなわち、運用者によって、ソフトウェアの処理への影響を考慮せずに独自に行われることが少なくない。
【0033】
このため、処理対象システム40に対する第1の装置20の処理でエラーが発生すると、エラーの原因がソフトウェアを実行する第1の装置20の側にあるのか、または、処理対象システム40の側にあるのかの切り分けが難しいことがある。
【0034】
そこで、情報処理装置10は、第1の装置20により出力された第1のエラー情報22と、ソフトウェアの実行環境に関する元の設定情報31を保持する第2の装置30により出力された第2のエラー情報32との比較に応じて、エラー原因の切り分けを行う。これにより、情報処理装置10は、エラー原因の一次的な切り分けを効率的に行える。例えば、エラー原因の調査を行う保守者は、情報処理装置10の判定結果を基に、調査対象を、第1の装置20とするか、処理対象システム40とするかを迅速に選択可能となり、調査対象に対するエラー原因の詳細調査を迅速に開始できる。こうして、情報処理装置10は、エラー原因の効率的な調査を支援できる。
【0035】
情報処理装置10は、例えばRPAを実現するソフトウェアのように、多様なシステムが処理対象となったり、実行環境における種々の設定情報の影響を受けたりするソフトウェアのエラー原因の切り分けに、特に有用である。例えば、当該ソフトウェアでは、影響を受ける可能性のある実行環境の設定情報は膨大であり、当該設定情報の全てを予め把握することは困難である。情報処理装置10を用いることで、実行環境の設定情報を全て把握していなくても、エラー原因の切り分けを行える。また、第三者が運用するシステムを含む多様なシステムが処理対象となる場合、各システムにおける変更の全てを予め把握することは困難である。情報処理装置10を用いることで、処理対象のシステムにおける変更を全て把握していなくても、エラー原因の切り分けを行える。
【0036】
なお、情報処理装置10は、第2の装置の機能を有してもよい。すなわち、記憶部11は、元の設定情報31を保持してもよい。また、処理部12は、記憶部11に記憶された元の設定情報31に基づいて、処理対象システム40に対する処理を実行することで、第2のエラー情報32を取得してもよい。
【0037】
以下では、より具体的な例を挙げて、情報処理装置10の機能を更に詳細に説明する。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
【0038】
図2は、第2の実施の形態の情報処理システムの例を示す図である。
第2の実施の形態の情報処理システムは、情報処理装置100、運用端末200および保守端末300を有する。情報処理装置100、運用端末200および保守端末300はネットワーク60に接続されている。ネットワーク60には、操作対象システム400が接続されている。ネットワーク60は、LANでもよいし、WANやインターネットでもよい。
【0039】
情報処理装置100は、RPAを実現するソフトウェアの運用を支援するサーバコンピュータである。情報処理装置100は、運用端末200においてロボットの実行でエラーが発生すると、運用端末200および保守端末300で採取された情報を取得し、エラーの原因、すなわち、エラー原因の切り分けを行う。
【0040】
運用端末200は、運用者により操作されるクライアントコンピュータである。運用端末200は、運用環境の端末である。運用端末200はロボットを実行する。当該ロボットは、運用端末200が実行するソフトウェアにより実現される。例えば、運用端末200は、ユーザの操作や情報処理装置100の指示に応じてロボットを起動するロボットエージェントアプリケーションを実行する。運用端末200は、ロボットを実行することで、操作対象システム400により提供されるGUIに対してデータ入力などの操作を自動的に行う。運用端末200は、第1の実施の形態の第1の装置20の一例である。
【0041】
保守端末300は、保守者により操作されるクライアントコンピュータである。保守端末300は、保守環境の端末である。保守端末300は、ロボットの開発や保守に用いられる。例えば、開発者または保守者は、保守端末300を用いてロボットを開発し、動作確認などを行う。保守端末300は、情報処理装置100を介して、開発したロボットの情報を運用端末200に配布する。保守端末300は、オペレーティングシステム(OS:Operating System)の設定に関する情報やロボットを定義する情報などの、ロボットの実行環境の設定情報を、ロボットの動作確認が行われた状態で保持する。保守端末300もロボットを実行可能である。当該ロボットは、保守端末300が実行するソフトウェアにより実現される。例えば、保守端末300も運用端末200と同様に、ロボットエージェントアプリケーションを実行する。保守端末300は、第1の実施の形態の第2の装置30の一例である。例えば、当初の段階では、運用端末200の実行環境の設定情報は、保守端末300の実行環境の設定情報と同じに設定されていてもよい。例えば、保守端末300は、保守端末300の実行環境の設定情報を、運用端末200に配布してもよい。ただし、運用端末200の設定情報は運用者により変更され得る。
【0042】
操作対象システム400は、運用端末200により操作されるGUIを提供するコンピュータシステムである。例えば、操作対象システム400は、Webサーバとして機能し、GUIに相当するWebページを運用端末200に提供してもよい。操作対象システム400が提供するGUIは、保守端末300からもアクセス可能である。操作対象システム400は、情報処理装置100、運用端末200および保守端末300の利用主体とは異なる第三者によって運用される。このため、操作対象システム400が提供するGUIは、第三者の都合によって変更され得る。
【0043】
操作対象システム400は、GUIの提供や運用端末200による操作の受け付けなどを行う所定のアプリケーションを実行し得る。操作対象システム400の変更は、アプリケーションの仕様変更やGUIの仕様変更などによって行われる。操作対象システム400は、操作対象リソースと呼ばれてもよい。操作対象システム400は、第1の実施の形態の処理対象システム40の一例である。
【0044】
図3は、情報処理装置のハードウェア例を示す図である。
情報処理装置100は、CPU101、RAM102、HDD103、GPU(Graphics Processing Unit)104、入力インタフェース105、媒体リーダ106およびNIC(Network Interface Card)107を有する。なお、CPU101は、第1の実施の形態の処理部12の一例である。RAM102またはHDD103は、第1の実施の形態の記憶部11の一例である。
【0045】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、情報処理装置100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0046】
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、情報処理装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0047】
HDD103は、OSやミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、情報処理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0048】
GPU104は、CPU101からの命令に従って、情報処理装置100に接続されたディスプレイ61に画像を出力する。ディスプレイ61としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
【0049】
入力インタフェース105は、情報処理装置100に接続された入力デバイス62から入力信号を取得し、CPU101に出力する。入力デバイス62としては、マウス、タッチパネル、タッチパッド、トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、情報処理装置100に、複数の種類の入力デバイスが接続されていてもよい。
【0050】
媒体リーダ106は、記録媒体63に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体63として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0051】
媒体リーダ106は、例えば、記録媒体63から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体63は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体63やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0052】
NIC107は、ネットワーク60に接続され、ネットワーク60を介して他のコンピュータと通信を行うインタフェースである。NIC107は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。
【0053】
なお、運用端末200、保守端末300および操作対象システム400も、情報処理装置100と同様のハードウェアにより実現される。
図4は、情報処理システムの機能例を示す図である。
【0054】
情報処理装置100は、記憶部110、ロボット管理部120およびエラー解析部130を有する。記憶部110には、RAM102やHDD103の記憶領域が用いられる。ロボット管理部120およびエラー解析部130は、RAM102に記憶されたプログラムをCPU101が実行することで実現される。
【0055】
運用端末200は、記憶部210およびロボット220を有する。記憶部210には、運用端末200のRAMやHDDの記憶領域が用いられる。ロボット220は、運用端末200のRAMに記憶されたプログラムを、運用端末200のCPUが実行することで実現される。
【0056】
保守端末300は、記憶部310およびロボット320を有する。記憶部310には、保守端末300のRAMやHDDの記憶領域が用いられる。ロボット320は、保守端末300のRAMに記憶されたプログラムを、保守端末300のCPUが実行することで実現される。
【0057】
記憶部110は、ロボットによる操作対象システム400に対する操作手順を示すロボットプロセス情報を記憶する。ロボットプロセス情報は、ロボットを定義する情報であり、保守端末300により生成される。ロボットプロセス情報は、例えば、GUIに対するロボットの操作手順を記述したスクリプトを含む。
【0058】
また、記憶部110は、運用端末200および保守端末300それぞれで採取された採取情報を記憶する。採取情報は、エラーログを含む。エラーログは、該当の端末でロボットの実行中に発生したエラーの情報である。
【0059】
ロボット管理部120は、ロボットプロセス情報を管理する。ロボット管理部120は、保守端末300で開発されたロボットのロボットプロセス情報を取得し、記憶部110に格納する。ロボット管理部120は、記憶部110に格納されたロボットプロセス情報を運用端末200に送信する。
【0060】
エラー解析部130は、運用端末200によるロボットの実行でエラーが発生すると、運用端末200で採取された採取情報を取得し、記憶部110に格納する。また、エラー解析部130は、保守端末300で採取された採取情報を取得し、記憶部110に格納する。
【0061】
エラー解析部130は、記憶部110に記憶された、運用端末200の採取情報に含まれるエラーの情報、および、保守端末300の採取情報に含まれるエラーの情報に基づいて、運用端末200で発生したエラーの原因を判定する。エラー解析部130は、運用端末200のエラーの情報および保守端末300のエラーの情報が同じである場合、運用端末200のエラーが、操作対象システム400の変更に起因するエラーであると判定する。エラー解析部130は、運用端末200のエラーの情報および保守端末300のエラーの情報が異なる場合、運用端末200のエラーが、運用端末200におけるロボットの実行環境の変更に起因するエラーであると判定する。エラー解析部130は、比較対象とするエラーの情報として、エラーメッセージの本体、すなわち、環境差異やタイムスタンプやロボット実行時のユーザIDなどの影響がない箇所を用いる。
【0062】
エラー解析部130は、エラー原因の判定結果を出力する。例えば、エラー解析部130は、エラー原因の判定結果をディスプレイ61に表示させてもよい。エラー解析部130は、エラー原因の判定結果を示す情報を、保守端末300などの他のコンピュータに送信してもよい。
【0063】
記憶部210は、ロボット220の実行環境に関する設定情報を記憶する。当該設定情報は、運用端末200のOSの設定情報や、ロボット220のロボットプロセス情報などを含む。記憶部210は、ロボット220により出力されるエラーログを記憶する。
【0064】
ロボット220は、操作対象システム400のGUIに対するデータ入力などの操作を自動的に実行する。例えば、運用者は、運用端末200によりロボット220を起動させ、操作対象システム400に対する操作をロボット220により実行させることができる。ロボット220は、操作対象システム400に対する一連の操作を行う間のエラーログを、記憶部210に出力する。
【0065】
記憶部310は、ロボット320の実行環境に関する設定情報を記憶する。当該設定情報は、保守端末300のOSの設定情報や、ロボット320のロボットプロセス情報などを含む。運用端末200のOSと保守端末300のOSとは同じである。記憶部310は、ロボット320により出力されるエラーログを記憶する。
【0066】
ロボット320は、操作対象システム400のGUIに対するデータ入力などの操作を自動的に実行する。例えば、保守者は、保守端末300によりロボット320を起動させ、操作対象システム400に対する操作をロボット320により実行させることができる。ロボット320は、操作対象システム400に対する一連の操作を行う間のエラーログを、記憶部310に出力する。
【0067】
図5は、ロボット管理テーブルの例を示す図である。
ロボット管理テーブル111は、ロボットプロセス情報を管理するテーブルである。ロボット管理テーブル111は、記憶部110に格納される。ロボット管理テーブル111は、ロボットID(IDentifier)およびロボットプロセス情報の項目を含む。ロボットIDの項目には、ロボットの識別情報であるロボットIDが登録される。ロボットプロセス情報の項目には、ロボットプロセス情報が登録される。
【0068】
例えば、ロボット管理テーブル111は、ロボットID「r1」、ロボットプロセス情報「process1.dat」のレコードを有する。当該レコードは、ロボットID「r1」で識別されるロボットのロボットプロセス情報が「process1.dat」であることを示す。
【0069】
ロボット管理テーブル111には、他のロボットIDおよびロボットプロセス情報のレコードも登録される。
図6は、運用環境に対する採取情報の例を示す図である。
【0070】
運用環境採取情報テーブル112は、運用端末200の採取情報を保持するテーブルである。運用環境エラーメッセージテーブル113は、運用端末200の採取情報に含まれるエラーメッセージを保持するテーブルである。運用環境採取情報テーブル112および運用環境エラーメッセージテーブル113は、ロボットIDに対応付けて記憶部110に格納される。すなわち、運用環境採取情報テーブル112および運用環境エラーメッセージテーブル113は、ロボットIDごとに存在する。
【0071】
運用環境採取情報テーブル112は、ID、ファイル名およびファイルパスの項目を含む。IDの項目には、レコードを識別するIDが登録される。ファイル名の項目には、エラーログや実行環境の設定情報などのファイルを示すファイル名が登録される。ファイルパスの項目には、運用端末200における該当のファイルのパスが登録される。
【0072】
例えば、運用環境採取情報テーブル112は、ID「1」、ファイル名「error1.log」、ファイルパス「C:...¥error1.log」のレコードを有する。当該レコードは、運用端末200においてファイル名「error1.log」のファイルが出力され、当該ファイルのパスが「C:...¥error1.log」であることを示す。例えば、運用環境採取情報テーブル112において、ファイル名の拡張子が「.log」であるファイルは、ロボット220の実行中に出力されたエラーログである。
【0073】
また、運用環境採取情報テーブル112は、ID「2」、ファイル名「environment.txt」、ファイルパス「C:...¥environment.txt」のレコードを有する。当該レコードは、運用端末200において、ファイル名「environment.txt」のファイルが出力され、当該ファイルのパスが「C:...¥environment.txt」であることを示す。例えば、運用環境採取情報テーブル112において、ファイル名の拡張子が「.txt」であるファイルは、ロボット220の実行中に出力されたエラーログに付随して出力された付属的なデータである。当該データは、例えば、運用端末200におけるOSなどの設定を示す環境情報であり、ロボット220で発生するエラーに応じて、ロボット220により出力される。環境情報は、エラー原因の詳細調査などに利用される。
【0074】
運用環境採取情報テーブル112には、ファイル名「error2.log」のエラーログや、ファイル名「error3.log」のエラーログなど、他のエラーログも登録される。
【0075】
運用環境エラーメッセージテーブル113は、ID、採取情報ID、発生日時およびエラーメッセージの項目を含む。IDの項目には、レコードを識別するIDが登録される。採取情報IDの項目には、運用環境採取情報テーブル112におけるレコードのID、すなわち、採取情報IDが登録される。発生日時の項目には、採取情報IDに対応するエラーログに含まれるエラーの発生日時が登録される。エラーメッセージの項目には、エラーログに含まれるエラーの内容を示すエラーメッセージが登録される。
【0076】
例えば、運用環境エラーメッセージテーブル113は、ID「1」、採取情報ID「1,2」、発生日時「2021/1/1」、エラーメッセージ「xxでエラーが発生しました。AAが存在しません。」のレコードを有する。当該レコードは、採取情報ID「1」に対応するファイル名「error1.log」のエラーログに、該当のエラーメッセージが含まれており、当該エラーメッセージで示されるエラーが、2021年1月1日に発生したことを示す。なお、発生日時として、日付のみを示しているが、発生日時は時刻を含んでもよい。発生日時を示すタイムスタンプは、エラーメッセージとともに、該当のエラーログに記録される。また、運用環境エラーメッセージテーブル113のID「1」のレコードにおける採取情報ID「2」は、ファイル名「error1.log」のエラーログに付随して、ファイル名「environment.txt」が取得されていることを示す。
【0077】
運用環境エラーメッセージテーブル113には、ファイル名「error2.log」のエラーログや、ファイル名「error3.log」のエラーログなど、他のエラーログに含まれるエラーメッセージも登録される。
【0078】
図7は、保守環境に対する採取情報の例を示す図である。
保守環境採取情報テーブル114は、保守端末300の採取情報を保持するテーブルである。保守環境エラーメッセージテーブル115は、保守端末300の採取情報に含まれるエラーメッセージを保持するテーブルである。保守環境採取情報テーブル114および保守環境エラーメッセージテーブル115は、ロボットIDに対応付けて記憶部110に格納される。例えば、保守環境採取情報テーブル114および保守環境エラーメッセージテーブル115は、ロボットIDごとに存在する。
【0079】
保守環境採取情報テーブル114は、ID、ファイル名およびファイルパスの項目を含む。IDの項目には、レコードを識別するIDが登録される。ファイル名の項目には、エラーログや実行環境の設定情報などのファイルを示すファイル名が登録される。ファイルパスの項目には、保守端末300における該当のファイルのパスが登録される。
【0080】
保守環境採取情報テーブル114に登録されるレコードの例は、運用環境採取情報テーブル112に登録されるレコードの例と同様である。
保守環境エラーメッセージテーブル115は、ID、採取情報ID、発生日時およびエラーメッセージの項目を含む。IDの項目には、レコードを識別するIDが登録される。採取情報IDの項目には、保守環境採取情報テーブル114におけるレコードのID、すなわち、採取情報IDが登録される。発生日時の項目には、採取情報IDに対応するエラーログに含まれるエラーの発生日時が登録される。エラーメッセージの項目には、エラーログに含まれるエラーの内容を示すエラーメッセージが登録される。
【0081】
保守環境エラーメッセージテーブル115に登録されるレコードの例は、運用環境エラーメッセージテーブルに登録されるレコードの例と同様である。
次に、情報処理装置100の処理手順を説明する。
【0082】
図8は、情報処理装置の処理例を示すフローチャートである。
(S10)エラー解析部130は、運用端末200においてロボット220による操作対象システム400に対する処理でエラーが発生すると、運用端末200のエラー時の採取情報を取得する。採取情報は、実行中にエラーが発生したロボット220のロボットIDを含む。エラー解析部130は、採取情報を記憶部110に格納する。すなわち、エラー解析部130は、採取情報に含まれるエラーログや環境情報を、運用環境採取情報テーブル112に登録する。また、エラー解析部130は、エラーログに含まれるエラーメッセージを、運用環境エラーメッセージテーブル113に登録する。
【0083】
(S11)ロボット管理部120は、保守端末300に対して運用端末200のエラー発生対象ロボットと同一ロボットの実行を指示する。すなわち、ロボット管理部120は、ステップS10で取得された採取情報に対応するロボットIDと同一のロボットIDのロボット320の実行を、保守端末300に指示する。ロボット管理部120は、ロボット管理テーブル111に基づいて、該当のロボットIDに対応するロボットプロセス情報を保守端末300に提供してもよい。ロボット管理部120は、提供したロボットプロセス情報に基づき、当該ロボットIDに対応するロボット320による、操作対象システム400に対する処理を実行させてもよい。
【0084】
ここで、ロボット220とロボット320とは、同一のロボットIDに対応するロボットである。ロボット220とロボット320とは、操作対象システム400に対し、同様の手順で処理を行うことが期待される。
【0085】
なお、ステップS11における保守端末300に対するロボット320の実行指示は、例えば保守者により保守端末300が操作されることで行われてもよい。
(S12)エラー解析部130は、保守端末300におけるロボット320の実行中にエラーが発生したか否かを判定する。エラーが発生した場合、エラー解析部130は、ステップS13に処理を進める。エラーが発生しなかった場合、エラー解析部130は、ステップS17に処理を進める。例えば、エラー解析部130は、ロボット320の実行中のエラーの発生有無の通知を保守端末300から受信し、当該通知に基づいてステップS12の判定を行う。
【0086】
(S13)エラー解析部130は、保守端末300におけるエラーメッセージを採取する。例えば、エラー解析部130は、保守端末300における採取情報を取得し、採取情報からエラーメッセージを採取する。エラー解析部130は、採取情報を記憶部110に格納する。すなわち、エラー解析部130は、採取情報に含まれるエラーログや環境情報を、保守環境採取情報テーブル114に登録する。また、エラー解析部130は、エラーログに含まれるエラーメッセージを、保守環境エラーメッセージテーブル115に登録する。
【0087】
(S14)エラー解析部130は、運用端末200で採取したエラーメッセージと、保守端末300で採取したエラーメッセージとを比較する。
(S15)エラー解析部130は、ステップS14の比較の結果、運用端末200で採取したエラーメッセージと、保守端末300で採取したエラーメッセージとに差分があるか否かを判定する。差分がない場合、エラー解析部130は、ステップS16に処理を進める。差分がある場合、エラー解析部130は、ステップS17に処理を進める。
【0088】
(S16)エラー解析部130は、エラー原因を操作対象システム400の変更と特定する。エラー解析部130は、特定したエラー原因を示す情報を出力する。そして、情報処理装置100の処理が終了する。
【0089】
(S17)エラー解析部130は、エラー原因を環境差異、すなわち、ロボット220の実行環境の設定情報とロボット320の実行環境の設定情報との相違と特定する。保守端末300では、ロボット320の実行環境について、ロボット320に対する動作確認済の設定情報、すなわち、元の設定情報を保持する。したがって、ロボット220の実行環境の設定情報とロボット320の実行環境の設定情報との相違は、ロボット220の実行環境の設定情報が、元の設定情報と異なることを意味する。例えば、当該相違は、運用者が運用端末200の実行環境の設定情報を変更することで発生し得る。エラー解析部130は、特定したエラー原因を示す情報を出力する。そして、情報処理装置100の処理が終了する。
【0090】
なお、運用端末200から取得される採取情報は、複数のエラーメッセージを含み得る。この場合、エラー解析部130は、当該複数のエラーメッセージそれぞれに対して、ステップS14以降の手順を実行することで、複数のエラーメッセージそれぞれで示されるエラーの原因の切り分けを行ってもよい。
【0091】
また、保守端末300から取得される採取情報が複数のエラーメッセージを含むこともある。この場合、エラー解析部130は、保守端末300で採取された複数のエラーメッセージそれぞれについて、ステップS14以降の手順を繰り返し実行し、運用端末200で採取されたエラーメッセージと比較することで、エラーの原因の切り分けを行ってもよい。例えば、エラー解析部130は、運用端末200で採取されたエラーメッセージが保守端末300で採取された複数のエラーメッセージの何れかと一致すれば、運用端末200で採取された当該エラーメッセージのエラー原因を、操作対象システムの変更と特定する。また、エラー解析部130は、運用端末200で採取されたエラーメッセージが保守端末300で採取された複数のエラーメッセージの何れにも一致しなければ、運用端末200で採取された当該エラーメッセージのエラー原因を、環境差異と特定する。
【0092】
例えば、エラー解析部130は、運用環境エラーメッセージテーブル113と、保守環境エラーメッセージテーブル115との比較に対して、次のようにエラー原因を切り分ける。すなわち、エラー解析部130は、運用環境エラーメッセージテーブル113のID「1,3」のエラーメッセージを、操作対象システム400の変更に起因するエラーであると判定する。運用環境エラーメッセージテーブル113のID「1,3」のエラーメッセージは、保守環境エラーメッセージテーブル115に同じものが存在するからである。また、エラー解析部130は、運用環境エラーメッセージテーブル113のID「2」のエラーメッセージを、運用端末200の環境相違に起因するエラーであると判定する。運用環境エラーメッセージテーブル113のID「2」のエラーメッセージは、保守環境エラーメッセージテーブル115に同じものが存在しないからである。
【0093】
エラー解析部130は、ステップS16,S17において、エラー原因を示す情報を、ディスプレイ61に表示させてもよいし、保守端末300に送信してもよい。例えば、保守者は、エラー原因を確認し、エラー原因で示される原因箇所、すなわち、運用端末200または操作対象システム400に対するエラー原因の詳細調査を開始することができる。このように、情報処理装置100は、エラー原因の最初の段階の切り分け、すなわち、一次切り分けに用いられる。
【0094】
図9は、エラー原因の一次切り分けの例を示す図である。
運用者は、運用端末200を用いて、ロボット220による操作対象システム400に対する操作を実行させる。ロボット220による操作対象システム400に対する操作でエラーが発生すると、ロボット220は、採取情報230を記憶部210に出力する。採取情報230は、例えば、エラーログ231、環境情報232およびエラーメッセージ233を含む。運用者は、運用端末200を用いて、保守者の電子メールアドレスを宛先とする電子メールなどにより、採取情報230を送付する(ステップST10)。
【0095】
保守者は、保守端末300を用いて、保守者の電子メールアドレスに送付された採取情報230を取得する。保守者は、保守端末300を用いて、情報処理装置100に採取情報230を登録する。すなわち、情報処理装置100は、保守端末300から採取情報230を取得する。そして、情報処理装置100は、採取情報230に含まれるエラーログ231や環境情報232を、運用環境採取情報テーブル112に登録する。また、情報処理装置100は、採取情報230に含まれるエラーメッセージ233を運用環境エラーメッセージテーブル113に登録する。
【0096】
保守者は、運用端末200でのロボット220のエラー発生を受け付けると、保守端末300を用いて、ロボット320による操作対象システム400に対する操作を実行させる。前述のように、ロボット320は、ロボット220と同一のロボットIDに対応する。ロボット320による操作対象システム400に対する操作でエラーが発生すると、ロボット320は、採取情報330を記憶部310に出力する。採取情報330は、例えば、エラーログ331、環境情報332およびエラーメッセージ333を含む。こうして、保守者は、保守端末300を用いて、採取情報330を採取する(ステップST11)。
【0097】
なお、前述のように、ロボット320でエラーが発生しなかった場合、情報処理装置100は、ロボット320でエラーが発生しなかったことを検出し、運用端末200で発生したエラーの原因が、ロボット220の実行環境の設定にあると特定する。
【0098】
保守者は、保守端末300を用いて、情報処理装置100に採取情報330を登録する。すなわち、情報処理装置100は、保守端末300から採取情報330を取得する。そして、情報処理装置100は、採取情報330に含まれるエラーログ331や環境情報332を、保守環境採取情報テーブル114に登録する。また、情報処理装置100は、採取情報330に含まれるエラーメッセージ333を保守環境エラーメッセージテーブル115に登録する。
【0099】
情報処理装置100は、運用環境エラーメッセージテーブル113にエラーメッセージ233が登録され、保守環境エラーメッセージテーブル115にエラーメッセージ333が登録されると、エラーメッセージ233,333を比較する。情報処理装置100は、エラーメッセージ233,333の比較に応じてエラー原因を切り分ける(ステップST12)。前述のように、情報処理装置100は、エラーメッセージ233とエラーメッセージ333とが同一であれば、操作対象システム400の変更がエラー原因であると特定する。一方、情報処理装置100は、エラーメッセージ233とエラーメッセージ333とが異なっていれば、運用端末200におけるロボット220の実行環境の設定の変更がエラー原因であると特定する。そして、情報処理装置100は、特定したエラー原因を示す情報を出力する。
【0100】
このように、情報処理装置100は、ロボット220の実行中に発生したエラーの原因の一次切り分けを効率的に行える。例えば、情報処理装置100は、エラー原因の切り分けのために、環境情報232と環境情報332との比較および操作対象システム400における変更内容の両方の調査を保守者に強いずに済む。また、情報処理装置100は、エラー原因でない箇所に対する余計な調査を省ける。すなわち、情報処理装置100は、保守者によるエラー原因の詳細調査の対象箇所を絞り込むことができ、当該対象箇所に注力して詳細調査が行われるように支援できる。
【0101】
[第3の実施の形態]
次に、第3の実施の形態を説明する。前述の第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【0102】
第3の実施の形態では、情報処理装置100が運用端末200からの採取情報の受信を待ち受け、運用端末200からの採取情報の受信を契機に、エラー原因の切り分けを自動的に行う機能を提供する。
【0103】
図10は、第3の実施の形態の情報処理装置の処理例を示すフローチャートである。
第3の実施の形態では、情報処理装置100がステップS10に代えてステップS10aを実行し、ステップS11に代えてステップS11aを実行する点が、
図8で例示した第2の実施の形態のフローチャートと異なる。以下では、ステップS10a,S11aが説明され、ステップS12~S17の説明は省略される。
【0104】
(S10a)エラー解析部130は、運用端末200のエラー時の採取情報を受信したか否かを判定する。当該採取情報を受信した場合、エラー解析部130は、当該採取情報を記憶部110に格納し、ステップS11aに処理を進める。当該採取情報を受信しない場合、エラー解析部130は、ステップS10aに処理を進め、採取情報の受信を待ち受ける。
【0105】
(S11a)ロボット管理部120は、保守端末300に対して運用端末200のエラー発生対象ロボットと同一ロボットの実行を指示する。すなわち、ロボット管理部120は、ステップS10aで取得された採取情報に対応するロボットIDと同一のロボットIDのロボット320の実行を、保守端末300に指示する。ロボット管理部120は、ロボット管理テーブル111に基づいて、該当のロボットIDに対応するロボットプロセス情報を保守端末300に提供してもよい。ロボット管理部120は、提供したロボットプロセス情報に基づき、当該ロボットIDに対応するロボット320による、操作対象システム400に対する処理を実行させてもよい。そして、ロボット管理部120は、ステップS12に処理を進める。
【0106】
このように、情報処理装置100は、運用端末200からの採取情報の受信を契機に、エラー原因を切り分ける処理を開始してもよい。
図11は、エラー原因の一次切り分けの例を示す図である。
【0107】
運用者は、運用端末200を用いて、ロボット220による操作対象システム400に対する操作を実行させる。ロボット220による操作対象システム400に対する操作でエラーが発生すると、ロボット220は、採取情報230を記憶部210に出力する。採取情報230は、例えば、エラーログ231、環境情報232およびエラーメッセージ233を含む。運用端末200は、採取情報230を情報処理装置100に送信する(ステップST20)。
【0108】
例えば、運用端末200は、例えば保守者の電子メールアドレスを宛先とする電子メールにより採取情報230を送信してもよい。当該電子メールは、エラーが発生したロボットのロボットIDを含む。この場合、情報処理装置100は、当該電子メールを受信することで、採取情報230を取得してもよい。例えば、情報処理装置100は、当該電子メールを受信するメールサーバから、当該電子メールを受信した旨の通知を受け付け、通知に応じてメールサーバから採取情報230を含む電子メールを取得してもよい。例えば、運用端末200は、ロボット220のエラーを示す特定の識別情報を電子メールに挿入してもよい。このようにすると、メールサーバは、当該特定の識別情報の検出に応じて、採取情報230を含む電子メールを受信した旨の情報処理装置100への通知を行うことができる。
【0109】
情報処理装置100は、採取情報230に含まれるエラーログ231や環境情報232を、運用環境採取情報テーブル112に登録する。また、情報処理装置100は、採取情報230に含まれるエラーメッセージ233を運用環境エラーメッセージテーブル113に登録する。
【0110】
情報処理装置100は、電子メールなどの通知に含まれるロボットIDに対応するロボット320の実行を保守端末300に指示する(ステップST21)。前述のように、ロボット320は、ロボット220と同一のロボットIDに対応する。保守端末300は、情報処理装置100の指示を受け付けると、ロボット320による操作対象システム400に対する処理を実行する。
【0111】
ロボット320による操作対象システム400に対する操作でエラーが発生すると、ロボット320は、採取情報330を記憶部310に出力する。採取情報330は、例えば、エラーログ331、環境情報332およびエラーメッセージ333を含む。保守端末300は、採取情報330を情報処理装置100に送信する。こうして、情報処理装置100は、保守端末300を用いて、採取情報330を採取する(ステップST22)。
【0112】
なお、前述のように、ロボット320でエラーが発生しなかった場合、情報処理装置100は、保守端末300からの通知に基づいて、ロボット320でエラーが発生しなかったことを検出する。そして、情報処理装置100は、当該検出に基づいて、運用端末200で発生したエラーの原因が、ロボット220の実行環境の設定にあると特定する。
【0113】
情報処理装置100は、採取情報330に含まれるエラーログ331や環境情報332を、保守環境採取情報テーブル114に登録する。また、情報処理装置100は、採取情報330に含まれるエラーメッセージ333を保守環境エラーメッセージテーブル115に登録する。
【0114】
情報処理装置100は、運用環境エラーメッセージテーブル113にエラーメッセージ233が登録され、保守環境エラーメッセージテーブル115にエラーメッセージ333が登録されると、エラーメッセージ233,333を比較する。情報処理装置100は、エラーメッセージ233,333の比較に応じてエラー原因を切り分ける(ステップST23)。情報処理装置100は、エラーメッセージ233とエラーメッセージ333とが同一であれば、操作対象システム400の変更がエラー原因であると特定する。一方、情報処理装置100は、エラーメッセージ233とエラーメッセージ333とが異なっていれば、運用端末200におけるロボット220の実行環境の設定の変更がエラー原因であると特定する。そして、情報処理装置100は、特定したエラー原因を示す情報を出力する。
【0115】
このように、情報処理装置100は、ロボット220の実行中に発生したエラーの原因の一次切り分けを効率的に行える。例えば、情報処理装置100は、エラー原因の切り分けのために、環境情報232と環境情報332との比較および操作対象システム400における変更内容の調査を保守者に強いずに済む。また、情報処理装置100は、エラー原因でない箇所に対する余計な調査を省ける。すなわち、情報処理装置100は、保守者によるエラー原因の詳細調査の対象箇所を絞り込むことができ、当該対象箇所に注力して詳細調査が行われるように支援できる。
【0116】
特に、情報処理装置100は、採取情報230の受信を契機として、エラー原因の切り分けを自動的に実行する。このため、情報処理装置100は、エラー原因の切り分けに伴う保守者の操作を省くことができ、エラー原因の切り分けを一層効率化できる。
【0117】
[第4の実施の形態]
次に、第4の実施の形態を説明する。前述の第2,第3の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【0118】
第4の実施の形態では、情報処理装置100は、保守端末300で実行されるロボット320による処理の一部をスキップ可能にする。これにより、情報処理装置100は、操作対象システム400に対するデータ更新の処理が、ロボット220の同処理と重複して行われることを回避可能にする。
【0119】
図12は、ロボットプロセスの例を示す図である。
ロボットプロセス500は、ロボット320による操作対象システム400に対する処理手順を示す。ロボットプロセス500は、ロボットプロセス情報により定義される。
【0120】
例えば、ロボットプロセス500は、ロボットプロセス前処理、プロセス処理P1、プロセス処理P2、…、データ更新処理U1、データ更新処理U2、…、データ更新処理UN、…のステップを含む。ロボットプロセス前処理は、ロボットプロセスの設定情報、すなわち、ロボットプロセス情報の読み込みなどの処理である。データ更新処理U1,U2,…,UNそれぞれは、操作対象システム400に対する新規データの追加、既存データの更新、および、既存データの削除などである。
【0121】
データ更新処理をスキップ可能とするため、ロボットプロセス500は、例えばデータ更新処理U1の直前に、データ更新処理のスキップフラグがONであるか否かを判定するステップを含む。スキップフラグは、後続のデータ更新処理をスキップするか否かを制御するためのフラグである。スキップフラグ=OFFは、後続のデータ更新処理をスキップせずに実行することを示す。スキップフラグ=ONは、後続のデータ更新処理をスキップすることを示す。
【0122】
より具体的には、ロボットプロセス500は、操作対象システム400が提供するWebページを表示させる、Webページに含まれる入力フォームを選択する、当該入力フォームにデータを入力する、入力したデータを確定する、などの一連の手順を含む。例えば、入力内容を確定する確定ボタンを押下するなどの、入力フォームに入力したデータを確定する処理は、入力フォームに対応するデータ項目のデータの更新を行う処理に相当する。情報処理装置100は、スキップフラグの設定を用いることで、保守用のロボット320によって実際にデータ更新が行われることをスキップ可能にする。
【0123】
なお、操作対象システム400に対するデータ更新処理の1つのトランザクション単位が、スキップフラグのON/OFFの判定によるスキップ対象となる。ロボットプロセス500の例では、1つのデータ更新処理のトランザクション中に複数の処理が含まれる例を記載している。ただし、例えば「データ更新ボタンを押下」などの1つの処理でデータ更新処理の実行/不実行が行われる操作については、スキップ対象の処理範囲は当該1つの処理のみとなる。また、ロボットプロセス500は、データ更新処理がロボットプロセスに複数存在している場合、各データ更新処理に対してスキップフラグを設け、データ更新処理ごとにスキップするか否かを制御する手順でもよい。あるいは、ロボットプロセス500は、複数のデータ更新処理の全体に対してスキップフラグを1つだけ設けて、複数のデータ更新処理それぞれの実行直前に、当該スキップフラグに基づいて、直後のデータ更新処理をスキップするか否かを制御する手順でもよい。
【0124】
図13は、スキップフラグテーブルの例を示す図である。
スキップフラグテーブル116は、記憶部110に格納される。スキップフラグテーブル116は、ロボットIDおよびスキップフラグの項目を含む。ロボットIDの項目には、ロボットIDが登録される。スキップフラグの項目には、スキップフラグが登録される。
【0125】
例えば、スキップフラグテーブル116は、ロボットID「r1」、スキップフラグ「ON」のレコードを有する。当該レコードは、ロボットID「r1」のロボットに対して、スキップフラグが「ON」であることを示す。
【0126】
スキップフラグテーブル116には、他のロボットIDに対応するスキップフラグも登録される。なお、前述のように、1つのロボットのロボットプロセスにおけるデータ更新処理ごとに、スキップフラグが設けられてもよい。その場合、スキップフラグテーブル116は、ロボットID、および、当該ロボットIDで識別されるロボットプロセスにおけるデータ更新処理の識別子に対応付けて、スキップフラグを保持する。
【0127】
次に、情報処理装置100によるスキップフラグを用いる処理手順を説明する。
図14は、第4の実施の形態の情報処理装置の処理例を示すフローチャートである。
第4の実施の形態では、情報処理装置100がステップS11とステップS12との間に、ステップS11b,S11c,S11dを実行する点が、
図8で例示した第2の実施の形態のフローチャートと異なる。以下では、ステップS11b,S11c,S11dが説明され、ステップS10,S11,S12~S17の説明は省略される。ステップS11bは、ステップS11の次に実行される。
【0128】
(S11b)エラー解析部130は、スキップフラグテーブル116に基づいて、ロボット220のロボットIDに対するスキップフラグがONであるか否か、すなわち、スキップフラグ=ONであるか否かを判定する。スキップフラグがONの場合、エラー解析部130は、ステップS11cに処理を進める。スキップフラグがOFFの場合、エラー解析部130は、ステップS11dに処理を進める。
【0129】
(S11c)エラー解析部130は、スキップフラグ=ONを保守端末300に通知することで、ロボット320がデータ更新処理をスキップするように制御する。そして、エラー解析部130は、ステップS12に処理を進める。
【0130】
(S11d)エラー解析部130は、スキップフラグ=OFFを保守端末300に通知することで、ロボット320がデータ更新処理をスキップしないように制御する。そして、エラー解析部130は、ステップS12に処理を進める。
【0131】
なお、スキップフラグテーブル116は、前述のように、データ更新処理の識別子ごとにスキップフラグを保持してもよい。この場合、エラー解析部130は、データ更新処理の識別子ごとのスキップフラグのON/OFFに応じて、ロボット320による各データ更新処理の実行/非実行を制御する。
【0132】
また、情報処理装置100は、ステップS10,S11に代えて、第3の実施の形態で例示したステップS10a,S11aを実行してもよい。その場合、情報処理装置100は、ステップS11aの次に、ステップS11bを実行する。
【0133】
図15は、スキップフラグに応じたロボットの処理例を示す図である。
情報処理装置100は、保守端末300に対してロボット320の実行指示を通知する際、スキップフラグを実行指示に付与する。ロボット320は、スキップフラグ=OFFの場合、ロボット320のロボットプロセス500に含まれるデータ更新処理を実行する。すなわち、ロボット320は、操作対象システム400により保持されるデータを更新する。一方、ロボット320は、スキップフラグ=ONの場合、ロボット320のロボットプロセスに含まれるデータ更新処理をスキップする。すなわち、ロボット320は、エラー原因の切り分けのための操作として、操作対象システム400のGUIに対するデータ入力を行うとしても、入力したデータにより操作対象システム400で保持されるデータを更新することまではしない。
【0134】
ここで、保守端末300のロボット320により操作対象システム400に対するデータ更新処理が行われると、操作対象システム400で保持されるデータが、運用端末200のロボット220による操作結果と異なるものとなる可能性がある。この場合、ロボット220による本番の運用処理に対して、操作対象システム400で保持されるデータが不整合あるいは矛盾を来し、本番の運用処理に悪影響を及ぼすことがある。そこで、情報処理装置100は、保守用のロボット320によるデータ更新処理を、スキップフラグによりスキップ可能にすることで、ロボット320の実行による本番の運用処理への影響を抑えることができる。
【0135】
第2~第4の実施の形態で例示したように、情報処理装置100は、エラー原因の切り分けを効率化することができる。
ところで、RPAシステムあるいはRPAロボットの運用・保守を行う際に、ロボットで発生するエラーの原因に関して以下の点が問題となる。
【0136】
第1の問題は、環境差異による問題である。
すなわち、ロボットのプロセスは同一であるにもかかわらず、保守環境と運用環境の設定差異、およびロボットにより操作するアプリケーションやWebサイトなどのシステムの設定差異により、ロボットの実行結果が保守環境と運用環境とで異なる場合がある。保守環境は、ロボットの開発環境と同じでもよい。開発環境におけるロボットの実行環境の設定内容は、保守環境におけるロボットの実行環境の設定内容と同じとなる。
【0137】
また、ロボットの開発者と保守者と運用者と保守環境および運用環境の設定を同一化し、運用環境の運用を開始したとしても、運用開始後に、ロボットを利用するユーザ(運用者)が意図しないタイミングで運用環境を変更することもある。この場合、当初正常に稼働していたロボットにおいてエラーが突然発生する場合がある。
【0138】
上記の運用環境の設定変更は、ユーザがロボットへの影響有無を判断できずに変更することもある。例えば、ロボット実行時の影響とは直接影響がないように判断される設定箇所はユーザにより変更され易い。当該設定箇所に起因するエラー事例としては、Windows(登録商標) OSのフォルダエクスプローラーの設定において、「ファイル名拡張子」の表示有無の設定により、ロボットの挙動が変わってしまうという事象が挙げられる。こうしたユーザによる変更箇所は、ユーザから直接確認することが困難であり、ロボットのエラー原因箇所の調査が難航することがある。
【0139】
第2の問題は、操作対象システム400の変更による問題である。
ロボットの操作対象となる操作対象システム400の設定は、RPAシステムの運用者やロボット利用者以外の第三者が変更を加える場合もある。そのため、意図しないタイミングでロボットの処理に影響がある設定変更が行われ、結果的にロボットの処理でエラーが生じる場合もある。操作対象システム400の変更に対してエラー回避を行うことは、RPA製品のユーザによるシステム運用、ロボット保守方法改善およびRPA製品機能で対応することは難しい。
【0140】
例えば、上記の第1の問題に対して次の第1,第2,第3の対処が考えられるが、何れの対処も別の問題を生じさせる。
第1の対処は、ロボット開発時の設計および利用/運用条件の事前定義による対処である。すなわち、ロボットの開発時において、予めロボット利用時の前提条件として、ロボットのプロセスの挙動に影響がある設定情報を洗い出し、当該設定情報を本番運用時に変更しないように運用条件として事前定義することが考えられる。
【0141】
しかし、RPAのロボットの自動化対象、すなわち、操作対象は、一般的に端末の画面上で操作可能な対象全般に亘る。このため、影響範囲および設定可能となる設定範囲が膨大であり、事前の洗い出しが困難となる。また、端末の設定のみならず、操作対象とするシステムに関して端末が保持する内部設定を含めると、設定情報の洗い出し対象がより増加し、設定情報の洗い出しが一層困難になる。
【0142】
第2の対処は、ロボット専用端末を手配し、当該端末でロボットを利用する対処である。すなわち、運用環境としてRPAのロボット専用の端末を手配し、当該端末でロボットを利用することで、運用段階でのユーザの意図しない環境設定変更による影響を抑える。
【0143】
しかし、RPAは、事務作業などの定型業務の自動化を対象とし、かつ事務作業の一部または全部を対象とするケースが多く、ロボットの配備環境もエンドユーザの端末となるケースが多いため、本対処が取れない場合が多い。ユーザのRPAシステムの運用コストが増大するためである。また、運用段階でのユーザの意図しない環境設定変更を完全に防ぐことはできない。
【0144】
第3の対処は、ロボットの実行環境における設定変更を制御する対処である。すなわち、ロボットの実行環境について、ユーザもしくは他のアプリケーションなどによりロボットのプロセス動作に影響が生じる環境設定の変更が不可となるように、設定変更にロックをかける。しかし、上記のように、ロボットへの影響を生じさせる設定情報は膨大であり、当該設定情報を全て洗い出した上で、設定変更をロックすることは困難である。
【0145】
また、上記の第2の問題に対して、次の第4,第5の対処が考えられるが、何れの対処も別の問題を生じさせる。
第4の対処は、ロボット開発時の設計および利用・運用条件の事前定義による対処である。例えば、社内システムや端末上で動作するデスクトップアプリケーションについては、設定ファイルに対する設定変更状況を社内の統合監視サーバにより監視し得る。
【0146】
しかし、操作対象システム400が社外システムである場合など、第三者が管理しており、随時設定変更、バージョンアップまたは仕様変更が行われるシステムである場合は、社内の統合監視サーバにより対処することはできない。
【0147】
第5の対処は、操作対象システム400のバージョンアップや仕様変更などの変更の監視による対処である。すなわち、操作対象システム400の変更を監視し、当該変更が生じる場合、適宜ロボットプロセス情報を修正することで、エラー発生を抑えることが考えられる。
【0148】
しかし、RPAでは操作対象システム400となり得る外部システムや外部サイトは多種多様であり、自動化対象とするロボット数の増加に応じて、監視対象が膨大となる。このため、全てのシステムに対して監視を行うことは困難である。また、監視自体は可能であるが、RPAロボット動作時の影響まで検出できるわけではない。
【0149】
このように、運用端末200におけるロボット220でのエラー発生を完全に防ぐことは難しい。
そこで、情報処理装置100は、運用端末200で発生したエラーメッセージと、保守端末300で発生したエラーメッセージとの比較により、ロボット220でのエラー発生時におけるエラー原因の切り分けを効率的に行う。その結果、情報処理装置100は、保守者などによるエラー原因箇所を絞り込んだ調査を迅速に行えるように支援できる。保守者は、エラー原因の詳細な調査により、ロボット220のロボットプロセス情報における問題箇所を特定し、ロボットプロセス情報を修正する。こうして、情報処理装置100は、RPAのロボット220の効率的な保守を支援できる。
【0150】
以上で説明したように、情報処理装置100は例えば次の処理を実行する。
エラー解析部130は、第1の装置により処理対象システムに対する処理を実行した際のエラーを示す第1のエラー情報を取得する。エラー解析部130は、第1のエラー情報と、当該処理の実行に影響する設定情報(第1の設定情報)が設定された第2の装置または情報処理装置100(自装置)により当該処理を実行した際のエラーを示す第2のエラー情報との比較の結果に基づいて、第1のエラー情報により示されるエラーが、第1の装置により保持される設定情報(第2の設定情報)が第2の装置または情報処理装置100に設定された設定情報と異なることに起因するエラーであるか、または、処理対象システムの変更に起因するエラーであるかを判定する。
【0151】
これにより、情報処理装置100は、エラー原因の切り分けを効率化できる。例えば、情報処理装置100は、第1の装置での処理中に発生したエラーの原因の一次切り分けを効率的に行える。情報処理装置100は、エラー原因の切り分けのために、例えば環境情報232と環境情報332との比較および操作対象システム400における変更内容の両方の調査を保守者に強いずに済む。また、情報処理装置100は、エラー原因でない箇所に対する余計な調査を省ける。すなわち、情報処理装置100は、保守者によるエラー原因の詳細調査の対象箇所を絞り込むことができ、当該対象箇所に注力して詳細調査が行われるように支援できる。
【0152】
運用端末200は、第1の装置の一例である。保守端末300は、第2の装置の一例である。操作対象システム400は、処理対象システムの一例である。RPAを実現するソフトウェアによるロボットの処理は、第1の装置が実行する処理および第2の装置が実行する処理の一例である。ただし、処理対象システムに対する処理は、RPA以外のソフトウェアによる処理でもよい。なお、情報処理装置100は、保守端末300の機能を有してもよい。あるいは、保守端末300が情報処理装置100の機能を有してもよい。すなわち、情報処理装置100および保守端末300の機能は、1つの情報処理装置あるいは1つのコンピュータにより実現されてもよい。
【0153】
エラー解析部130は、第1のエラー情報と第2のエラー情報とが異なる場合に、第1のエラー情報により示されるエラーが、第1の装置により保持される設定情報が第2の装置または情報処理装置100に設定された設定情報と異なることに起因するエラーであると判定する。エラー解析部130は、第1のエラー情報と第2のエラー情報とが同じである場合に、第1のエラー情報により示されるエラーが、処理対象システムの変更に起因するエラーであると判定する。
【0154】
これにより、情報処理装置100は、エラー原因の切り分けを適切に行える。
エラー解析部130は、第1の装置から第1のエラー情報を受信すると、第2の装置により処理対象システムに対する処理を実行させ、第2の装置から第2のエラー情報を受信する、または、情報処理装置100により処理を実行することで第2のエラー情報を取得する。
【0155】
このように、情報処理装置100は、第1の装置でのエラー発生に応じて、エラー原因の切り分けを自動的に行うことで、例えば、保守者によるエラー原因の切り分けのための作業を省力化できる。また、情報処理装置100は、原因箇所に対するエラー原因の詳細調査を保守者が迅速に開始できるよう支援できる。
【0156】
第2の装置または情報処理装置100が処理対象システムに対して実行する処理は、複数のステップを含む。エラー解析部130は、第2の装置または情報処理装置100が当該処理を実行する際に、複数のステップのうち処理対象システムに対するデータ更新のステップをスキップさせる。
【0157】
これにより、情報処理装置100は、第1の装置により行われた処理に対して、処理対象システムが保持するデータの不整合や矛盾が発生することを抑えられる。ロボットプロセス500で例示した、ロボットプロセス前処理、プロセス処理P1,P2,…、および、データ更新処理U1,U2,…,UNは、複数のステップの一例である。
【0158】
また、エラー解析部130は、第2の装置または情報処理装置100により処理対象システムに対する処理を実行した際にエラーが発生しない場合、第1のエラー情報により示されるエラーが、第1の装置により保持される設定情報が第2の装置または情報処理装置100に設定された設定情報と異なることに起因するエラーであると判定する。
【0159】
これにより、情報処理装置100は、エラー原因の切り分けを効率化できる。
また、第1のエラー情報は、複数のエラーを示してもよい。エラー解析部130は、第1のエラー情報と第2のエラー情報との比較の結果に基づいて、当該複数のエラーそれぞれが、第1の装置が保持する設定情報が第2の装置または情報処理装置100に設定された設定情報と異なることに起因するエラーであるか、または、処理対象システムの変更に起因するエラーであるかを判定してもよい。
【0160】
これにより、情報処理装置100は、第1のエラー情報に含まれる複数のエラーに対して、エラー原因の切り分けを効率化できる。
前述のように、第1の装置および第2の装置それぞれが処理対象システムに対して実行する処理は、RPAのロボットの処理でもよい。情報処理装置100は、RPAを実現するソフトウェアのように、多様なシステムが処理対象となったり、実行環境における種々の設定情報の影響を受けたりするソフトウェアのエラー原因の切り分けに、特に有用である。
【0161】
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2~第4の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体63に記録できる。
【0162】
例えば、プログラムを記録した記録媒体63を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体63に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【0163】
10 情報処理装置
11 記憶部
12 処理部
20 第1の装置
21 設定情報
22 第1のエラー情報
30 第2の装置
31 元の設定情報
32 第2のエラー情報
40 処理対象システム
50 ネットワーク