(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2026-01-21
(45)【発行日】2026-01-29
(54)【発明の名称】シナリオ管理装置、シナリオ管理プログラム、記録媒体およびシナリオ管理方法
(51)【国際特許分類】
G06F 8/30 20180101AFI20260122BHJP
G06F 3/04847 20220101ALI20260122BHJP
G06F 3/0484 20220101ALI20260122BHJP
G06F 9/451 20180101ALI20260122BHJP
G06F 9/448 20180101ALI20260122BHJP
【FI】
G06F8/30
G06F3/04847
G06F3/0484
G06F9/451
G06F9/448
(21)【出願番号】P 2022032226
(22)【出願日】2022-03-03
【審査請求日】2024-12-06
(73)【特許権者】
【識別番号】000129253
【氏名又は名称】株式会社キーエンス
(74)【代理人】
【識別番号】110004716
【氏名又は名称】弁理士法人テクスクレール
(74)【代理人】
【識別番号】100105935
【氏名又は名称】振角 正一
(74)【代理人】
【識別番号】100136836
【氏名又は名称】大西 一正
(72)【発明者】
【氏名】木原 一挙
【審査官】西間木 祐紀
(56)【参考文献】
【文献】特開2021-033858(JP,A)
【文献】特開2020-113034(JP,A)
【文献】特開2006-107481(JP,A)
【文献】特開2020-119047(JP,A)
【文献】米国特許出願公開第2023/0132894(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/30
G06F 3/04847
G06F 3/0484
G06F 9/451
G06F 9/448
(57)【特許請求の範囲】
【請求項1】
他のアプリケーションプログラムに対する操作を自動化するためのシナリオを管理するシナリオ管理装置であって、
他のアプリケーションプログラムから値を取得する前記操作に対応するアクティビティと、他のアプリケーションプログラムに値を入力する前記操作に対応するアクティビティと、前記取得する値を処理する操作に対応するアクティビティと、を含む複数種類のアクティビティから選択される、第一アクティビティと第二アクティビティとを含む前記シナリオを管理する管理部と、
シナリオ実行指示に基づいて、前記シナリオに含まれる前記第一アクティビティを実行する実行部と、
前記シナリオに含まれる前記第一アクティビティを実行する際に前記実行部によりアクセスされ、当該第一アクティビティで参照される変数の実体値を、当該シナリオに含まれる前記第二アクティビティに含まれる変数の実体値として参照可能に保持する第一格納領域と、
前記管理部によりアクセス可能であって、前記第一格納領域に保持される前記変数の前記実体値を当該変数と関連付けて保持する第二格納領域と、
前記第一格納領域に保持される前記変数の前記実体値を前記第二格納領域に保持させる保持部と、
を備える、シナリオ管理装置。
【請求項2】
前記実行部は、第一プロセスとして、前記第一アクティビティを実行し、
前記保持部は、前記第一プロセスと異なる第二プロセスとして、前記第二格納領域に、前記第一格納領域に取得される前記実体値を前記変数と関連付けて保持させる、請求項1に記載のシナリオ管理装置。
【請求項3】
前記第二格納領域は、前記第一格納領域の解放後も、前記実体値を保持する、請求項1または2に記載のシナリオ管理装置。
【請求項4】
前記管理部は、前記シナリオにより自動化される前記操作の内容を示す表示として、前記シナリオに含まれる変数について、当該変数に関連付けて前記第二格納領域に保持される前記実体値に応じた表示をディスプレイに表示する、請求項1ないし3のいずれか一項に記載のシナリオ管理装置。
【請求項5】
前記管理部が、前記実体値に応じた前記変数の表示として前記第二格納領域に保持される前記実体値を前記ディスプレイに表示する、請求項4に記載のシナリオ管理装置。
【請求項6】
前記管理部が、前記実体値に応じた前記変数の表示として、当該変数に関連付けて前記第二格納領域に保持される前記実体値の有無を示す表示を前記ディスプレイに表示する、請求項4または5に記載のシナリオ管理装置。
【請求項7】
前記シナリオの作成として、前記アクティビティにより自動化される前記操作の内容に係る設定を受け付けて、当該設定に基づいて前記アクティビティを生成する、シナリオ作成部を備え、
前記シナリオ作成部は、生成された前記アクティビティに基づいて前記シナリオ実行指示を前記実行部に送る、請求項1ないし6のいずれか一項に記載のシナリオ管理装置。
【請求項8】
ユーザから、シナリオの実行を指示する操作として、前記シナリオに含まれる前記アクティビティの選択を受け付け、選択された前記アクティビティに対応するアクティビティを実行する前記シナリオ実行指示を前記実行部に送る、シナリオ実行操作部を備える、請求項1ないし7のいずれか一項に記載のシナリオ管理装置。
【請求項9】
前記保持部は、前記変数の前記実体値を、前記シナリオにおける当該変数の有効な範囲であるスコープを示す情報に関連付けて前記第二格納領域に保持させる請求項1ないし8のいずれか一項に記載のシナリオ管理装置。
【請求項10】
前記第一アクティビティは、前記他のアプリケーションプログラムから値を取得する操作に対応し、当該値を前記変数の実体値として参照するアクティビティであり、
前記第二アクティビティは、前記第一アクティビティに含まれる前記変数を使用するアクティビティであり、
前記実行部が、前記第二アクティビティが含まれる前記シナリオ実行指示を受け付けるとき、
前記実行部は、前記第二格納領域に前記第二アクティビティで使用される前記変数に関連付けて保持された前記実体値を前記第一格納領域に取得してから、前記第二アクティビティを実行する請求項1ないし9のいずれか一項に記載のシナリオ管理装置。
【請求項11】
前記管理部は、
表示対象となる前記変数を指定する変数指定操作を受け付けると、前記変数に関連付けられた前記実体値を前記第二格納領域から読み出して前記ディスプレイに表示し、
前記変数が複数の値から構成される前記実体値を参照する変数であるとき、
前記実体値として前記複数の値を表示し、
前記複数の値から任意の値を指定する操作を受け付けると、当該操作に基づいて、前記変数として参照されるデータに含まれる値を取得する操作に対応する前記アクティビティが設定される、請求項4ないし6のいずれか一項に記載のシナリオ管理装置。
【請求項12】
前記管理部が、第一変数を宣言する前記第一アクティビティと、前記第二アクティビティと、を有する前記シナリオを前記ディスプレイに表示し、
前記管理部は、前記第一アクティビティで宣言される前記第一変数の有効な範囲であるスコープが、前記第二アクティビティを含む場合には、前記第二アクティビティで使用される変数の候補として、前記第一アクティビティで宣言される前記第一変数を前記ディスプレイに表示し、前記第一アクティビティで宣言される前記変数の前記スコープが、前記第二アクティビティを含まない場合には、前記第二アクティビティで使用される変数の候補として、前記第一アクティビティで宣言される前記第一変数を前記ディスプレイに表示しない請求項4ないし6のいずれか一項に記載のシナリオ管理装置。
【請求項13】
前記実行部が前記第一格納領域に前記変数の前記実体値を保持させることを監視する監視部を備え、
前記監視部が前記実行部により前記第一格納領域へ前記変数の前記実体値が保持されたことを確認すると、前記保持部が、前記第一格納領域に保持される前記実体値を前記第二格納領域に保持させる請求項1ないし12のいずれか一項に記載のシナリオ管理装置。
【請求項14】
前記実行部が前記第一アクティビティを実行することによって、前記第一格納領域が、前記第一アクティビティで参照される前記変数の前記実体値として、前記第二格納領域に当該変数に関連付けて保持される前記実体値と異なる前記実体値を保持したとき、前記第二格納領域は、当該変数の前記実体値として前記第一格納領域に保持される最新の前記実体値を、当該変数に関連付けて保持する請求項1ないし13のいずれか一項に記載のシナリオ管理装置。
【請求項15】
請求項1ないし14のいずれか一項に記載のシナリオ管理装置としてコンピュータを機能させるシナリオ管理プログラム。
【請求項16】
請求項15に記載のシナリオ管理プログラムをコンピュータにより読み出し可能に記録する記録媒体。
【請求項17】
他のアプリケーションプログラムに対する操作を自動化するためのシナリオとして、他のアプリケーションプログラムから値を取得する前記操作に対応するアクティビティと、他のアプリケーションプログラムに値を入力する前記操作に対応するアクティビティと、前記取得する値を処理する操作に対応するアクティビティと、を含む複数種類のアクティビティから選択される、第一アクティビティと第二アクティビティとを含む前記シナリオ、を管理する
、コンピュータにより実行されるシナリオ管理方法であって、
シナリオ実行指示に基づいて前記第一アクティビティを実行して、当該第一アクティビティで参照される変数の実体値を、前記第二アクティビティに含まれる変数の実体値として参照可能に、第一格納領域に保持させる工程と、
シナリオを管理する管理部によりアクセス可能な第二格納領域に、前記第一格納領域に保持された前記変数の前記実体値を、当該変数と関連付けて保持させる工程と、
を備える、シナリオ管理方法。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ユーザがコンピュータを用いて実行していた作業を自動化することでユーザの作業負担の軽減を図るRPA(Robotic Process Automation)技術に関する。
【背景技術】
【0002】
RPAでは、コンピュータによる処理の実行順序を示すシナリオ(「フロー」と称される場合もある)が用いられる。また、シナリオに従って処理を実行するコンピュータは、表形式でデータを管理するファイルや、当該ファイルによって管理されるデータといった各種の変数を適宜参照する。例えば、特許文献1では、処理の実行順序を示すシナリオファイルと、シナリオファイルの実行に必要となる変数の設定値を示すカスタマイズ用ファイルとが用意され、シナリオファイルに従って処理を実行するコンピュータは、カスタマイズ用ファイルに示される設定値を参照する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、RPA技術により自動化される作業には、ユーザが、任意のデータを参照して、当該任意のデータを、コンピュータにより処理可能な態様で入力する作業が含まれる。上記特許文献1においては、シナリオファイルに含まれる変数として参照されるカスタマイズ用ファイルをユーザが編集することが開示される。したがって、上記作業は、カスタマイズ用ファイルを編集することによって代替されるものの、自動化はされない。自動化するためには、ユーザが上記作業を行う際に任意のデータを参照するのと同様に任意のデータが参照されるように、シナリオに含まれる変数を管理する必要がある。
【0005】
しかしながら、RPA技術は、ユーザの実際の操作、すなわち、ユーザの操作の際に処理される実体値に基づいてシナリオを作成する点に一つの利点がある。換言すれば、ユーザは、実際の操作を通じて実体値にアクセスすることによって、シナリオを作成することができる。これに対して、シナリオに含まれる変数は、実際にシナリオが実行されるとき以外は、実体値を参照しないため、ユーザがシナリオに含まれる変数を管理するときに当該変数として参照される実体値にアクセスできない、という課題があった。
【0006】
この発明は上記課題に鑑みなされたものであり、シナリオを管理する際に、シナリオで参照される変数の実体値がアクセスされる構成とすることを目的とする。
【課題を解決するための手段】
【0007】
本発明に係るシナリオ管理装置は、他のアプリケーションプログラムに対する操作を自動化するためのシナリオを管理するシナリオ管理装置であって、他のアプリケーションプログラムから値を取得する操作に対応するアクティビティと、他のアプリケーションプログラムに値を入力する操作に対応するアクティビティと、取得する値を処理する操作に対応するアクティビティと、を含む複数種類のアクティビティから選択される、第一アクティビティと第二アクティビティとを含むシナリオを管理する管理部と、シナリオ実行指示に基づいて、シナリオに含まれる第一アクティビティを実行する実行部と、シナリオに含まれる第一アクティビティを実行する際に実行部によりアクセスされ、当該第一アクティビティで参照される変数の実体値を、当該シナリオに含まれる第二アクティビティに含まれる変数の実体値として参照可能に保持する第一格納領域と、管理部によりアクセス可能であって、第一格納領域に保持される変数の実体値を当該変数と関連付けて保持する第二格納領域と、第一格納領域に保持される変数の実体値を第二格納領域に保持させる保持部と、を備える。
【0008】
本発明に係るシナリオ管理プログラムは、上記のシナリオ管理装置としてコンピュータを機能させる。
【0009】
本発明に係る記録媒体は、上記のシナリオ管理プログラムをコンピュータにより読み出し可能に記録する。
【0010】
本発明に係るシナリオ管理方法は、他のアプリケーションプログラムに対する操作を自動化するためのシナリオとして、他のアプリケーションプログラムから値を取得する操作に対応するアクティビティと、他のアプリケーションプログラムに値を入力する操作に対応するアクティビティと、取得する値を処理する操作に対応するアクティビティと、を含む複数種類のアクティビティから選択される、第一アクティビティと第二アクティビティとを含むシナリオ、を管理するシナリオ管理方法であって、シナリオ実行指示に基づいて第一アクティビティを実行して、当該第一アクティビティで参照される変数の実体値を、第二アクティビティに含まれる変数の実体値として参照可能に、第一格納領域に保持させる工程と、シナリオを管理する管理部によりアクセス可能な第二格納領域に、第一格納領域に保持された変数の実体値を、当該変数と関連付けて保持させる工程と、を備える。
【0011】
このように構成された本発明(シナリオ管理装置、シナリオ管理プログラム、記録媒体およびシナリオ管理方法)では、シナリオに含まれる第一アクティビティの実行により、第二アクティビティに含まれる変数の実体値として参照可能に、変数の実体値が第一格納領域に保持されると、保持部が当該実体値を変数と関連付けて、管理部がアクセス可能な第二格納領域に保持させる。したがって、ユーザは、シナリオが実行されるときだけでなくシナリオを管理するときにも、参照される実体値にアクセスすることができる。その結果、例えば、シナリオを編集する際にシナリオで参照される変数の実体値をユーザが確認することが可能となっている。
【発明の効果】
【0012】
以上のように、本発明によれば、シナリオを管理する際に、シナリオで参照される変数の実体値がアクセスされることが可能となっている。
【図面の簡単な説明】
【0013】
【
図1】本発明に係るシナリオ管理装置を備えたシナリオ管理システムの一例を示すブロック図。
【
図2】シナリオ管理のために演算部に構成される各機能部の一例を示すブロック図。
【
図3】ディスプレイに表示されるシナリオ管理画面の一例を模式的に示す図。
【
図4A】シナリオ作成モードにおいてシナリオ管理画面に実行できる操作の一例を模式的に示す図。
【
図4B】シナリオ作成モードにおいてシナリオ管理画面に実行できる操作の一例を模式的に示す図。
【
図4C】シナリオ作成モードにおいてシナリオ管理画面に実行できる操作の一例を模式的に示す図。
【
図4D】シナリオ作成モードにおいてシナリオ管理画面に実行できる操作の一例を模式的に示す図。
【
図4E】シナリオ作成モードにおいてシナリオ管理画面に実行できる操作の一例を模式的に示す図。
【
図4F】シナリオ作成モードにおいてシナリオ管理画面に実行できる操作の一例を模式的に示す図。
【
図4G】シナリオ作成モードにおいてシナリオ管理画面に実行できる操作の一例を模式的に示す図。
【
図5】変数管理の実行時における演算部の各機能部の動作を示すブロック図。
【
図6】変数管理のために実行部が実行する制御の一例を示すフローチャート。
【
図7】変数管理のために監視部が実行する制御の一例を示すフローチャート。
【
図8】
図6および
図7のフローチャートに基づき実行される変数管理の動作を模式的に示す図。
【
図9】メモリ部に保持される実体値の一例を模式的に示す図。
【
図10A】シナリオ編集モードにおいてシナリオ管理画面に実行できる操作の一例を模式的に示す図。
【
図10B】シナリオ編集モードにおいてシナリオ管理画面に実行できる操作の一例を模式的に示す図。
【
図10C】シナリオ編集モードにおいてシナリオ管理画面に実行できる操作の一例を模式的に示す図。
【
図10D】シナリオ編集モードにおいてシナリオ管理画面に実行できる操作の一例を模式的に示す図。
【
図10E】シナリオ編集モードにおいてシナリオ管理画面に実行できる操作の一例を模式的に示す図。
【
図11】シナリオ編集モードの実行時における演算部の各機能部の動作を示すブロック図。
【
図12】シナリオ編集モードにおいて編集操作部が実行する変数表示の一例を示すフローチャート。
【
図14】変数の実体値の取得に伴って実行される変数名称管理の一例を示すフローチャート。
【
図15】シナリオ編集モードにおける実体値表示のための制御の一例を示すフローチャート。
【
図17】シナリオ編集モードにおける部分実行のための制御の一例を示すフローチャート。
【発明を実施するための形態】
【0014】
図1は本発明に係るシナリオ管理装置を備えたシナリオ管理システムの一例を示すブロック図である。このシナリオ管理システム1は、サーバ11と、サーバ11のクライアントとして機能する端末装置2とを備える。サーバ11はコンピュータであり、HDD(Hard Disk Drive)あるいはSSD(Solid State Drive)等で構成されたストレージ部111を備え、ストレージ部111には、シナリオ管理プログラム12が保存されている。
【0015】
端末装置2は、RPAで使用されるシナリオを管理するためのコンピュータである。この端末装置2は、演算部21、メモリ部22、ストレージ部23、UI(User Interface)24、通信部25およびバス26を備え、演算部21、メモリ部22、ストレージ部23、UI24および通信部25の間における信号の送受信がバス26を介して実行される。
【0016】
演算部21は、CPU(Central Processing Unit)等のプロセッサであり、メモリ部22、ストレージ部23、UI24および通信部25を制御する。メモリ部22は、メインメモリおよびキャッシュメモリ等を有し、演算部21からの指示に基づきデータを揮発的に記憶し、演算部21は、メモリ部22から読み出したデータを用いて演算を実行する。
【0017】
ストレージ部23は、HDDおよびSSD等を有し、データを不揮発的に記憶する。UI24は、キーボード241およびマウス242等の入力機器と、ディスプレイ243等の出力機器とを有する。したがって、ユーザは、キーボード241およびマウス242を操作することで端末装置2に対する入力操作を実行でき、ディスプレイ243の表示を確認することでメモリ部22やストレージ部23に格納される各種データを確認できる。なお、入力機器と出力機器とを別体で構成する必要はなく、タッチパネルディスプレイによってこれらを一体的に構成してもよい。また、通信部25は、サーバ11との通信を実行する。この通信部25は、サーバ11からシナリオ管理プログラム12をダウンロードし、ストレージ部23は、当該シナリオ管理プログラム12を保存する。また、演算部21がシナリオ管理プログラム12を実行すると、シナリオ管理を実行するための
図2の各機能部が演算部21に構成される。
【0018】
なお、端末装置2へのシナリオ管理プログラム12の提供態様は、サーバ11からのダウンロードに限られない。したがって、DVD(Digital Versatile Disc)といった光ディスクや、USB(Universal Serial Bus)メモリ等の他の記録媒体によって提供されてもよい。端末装置2は、これらの記録媒体から読み出したシナリオ管理プログラム12をストレージ部23に保存することができる。
【0019】
なお、本実施例において端末装置2が管理する、RPAで使用されるシナリオとは、本端末装置2のユーザもしくは他の人間が、シナリオ管理プログラム12以外のアプリケーションプログラムに対して実行する操作を、自動化するためのシナリオである。当該操作は、シナリオ管理プログラム12以外のアプリケーションプログラムから値を取得する操作と、値を処理する操作と、シナリオ管理プログラム12以外のアプリケーションプログラムに値を入力する操作と、を含む。シナリオ管理プログラム12以外のアプリケーションプログラムから値を取得する操作は、人間が、参照する情報をディスプレイ243等の出力機器から出力させるためにシナリオ管理プログラム12以外のアプリケーションプログラムを操作すること、を含む。また、シナリオ管理プログラム12以外のアプリケーションプログラムに値を入力する操作は、人間が、キーボード241やマウス242等の入力機器を用いてシナリオ管理プログラム12以外のアプリケーションプログラムに値が入力されるように操作することを含む。例えば、キーボード241を用いて値を直接入力することや、入力機器を用いてアプリケーションプログラムにより表示される選択肢から入力されるべき値を選択すること、を含む。
【0020】
図2はシナリオ管理のために演算部に構成される各機能部の一例を示すブロック図である。
図2に示すように、演算部21によるシナリオ管理プログラム12の実行によって、エディタ31、シナリオ作成部33、実行部35およびデバッガ37が演算部21に構成される。
【0021】
エディタ31は、シナリオを管理する。本実施例でエディタ31に管理されるシナリオは、シナリオ管理プログラム12以外のアプリケーションに対する人間の各種操作に対応するコンピュータの動作であるアクティビティAct(不図示)を複数含み、エディタ31は複数のアクティビティActを管理する。エディタ31は、シナリオ管理のための、ユーザのUI24への操作を受け付ける。このエディタ31は、編集操作部311およびシナリオ実行操作部312を有する。編集操作部311は、ユーザのシナリオ管理のために、当該シナリオで自動化される操作の内容を示すシナリオ管理画面4(
図3等)をUI24のディスプレイ243に表示し、シナリオ管理画面4に対するユーザの操作を受け付ける。シナリオ実行操作部312は、ユーザからシナリオの実行を指示する操作を受け付ける。ユーザは、シナリオの実行を指示する操作として、シナリオに含まれる一部のアクティビティActあるいは全部のアクティビティActを選択する。シナリオ実行操作部312はアクティビティActの選択を受け付け、選択されたアクティビティActに応じたシナリオの実行を示すシナリオ実行指示Ceを実行部35に送る。
【0022】
シナリオ作成部33は、シナリオ管理画面4に対するユーザの操作に応じてシナリオを作成する。より詳細には、ユーザ操作により、アクティビティActにより自動化される人間の各種操作の内容に係る設定を、アクティビティActへの設定として受け付け、当該設定に基づいてアクティビティActを生成する。また、シナリオ作成部33は、生成したアクティビティActに基づいてシナリオ実行指示Cgを実行部35に送る。本実施例では、シナリオ作成部33は、アクティビティActが生成されるごとに、生成した当該アクティビティActの実行を示すシナリオ実行指示Cgを実行部35に送る。なお、シナリオ実行指示Cgは、所定の数のアクティビティActが生成されるごとに実行部35に送られてもよいし、生成されたアクティビティActの実行を求める操作がシナリオ管理画面4に実行されることに応じて実行部35に送られてもよい。また、シナリオ作成部33は、アクティビティActの種類に応じて、当該アクティビティActを対象に含まないシナリオ実行指示Cgを、実行部35に送ってもよい。
【0023】
実行部35は、エディタ31からのシナリオ実行指示Ceあるいはシナリオ作成部33からのシナリオ実行指示Cgに基づき、シナリオの一部あるいは全部を実行する。デバッガ37は、実行部35がシナリオを実行するときに、実行部35がシナリオの実行に使用する変数を管理する。このデバッガ37は、監視部371および保持部372を有する。監視部371は、実行部35による変数の実体値の取得を監視する。保持部372は、監視部371の指示に基づき、実行部35が取得した実体値を保持する。
【0024】
図3はディスプレイに表示されるシナリオ管理画面の一例を模式的に示す図である。なお、
図3に示すシナリオ管理画面4は一例に過ぎず、種々の変更が可能である。また、以下の図で示すシナリオ管理画面4についても同様に変更が可能である。
図3に示すように、シナリオ管理画面4は、ユーティリティー操作欄41、モード選択欄43およびシナリオ表示欄45を有する。ユーティリティー操作欄41は、新たに作成したシナリオを、名前を付けて保存するためのボタン411と、編集したシナリオを上書き保存するためのボタン412と、シナリオの一部あるいは全部を実行するためのボタン413とを有する。
【0025】
モード選択欄43は、シナリオ作成モードおよびシナリオ編集モードの一方を選択する操作を受け付ける。つまり、ユーザは、モード選択欄43のシナリオ作成欄431に設けられた展開縮小ボタンを操作(クリック)して、シナリオ作成欄431を展開することで、シナリオ作成モードを選択できる。また、ユーザは、モード選択欄43のシナリオ編集欄432に設けられた展開縮小ボタンを操作(クリック)して、シナリオ編集欄432を展開することでシナリオ編集モードを選択できる。
【0026】
図4A~
図4Gはシナリオ作成モードにおいてシナリオ管理画面に実行できる操作の一例を模式的に示す図である。これらの図では、シナリオ作成欄431が展開される一方、シナリオ編集欄432が縮小されている。シナリオ作成モードでは、シナリオの作成に使用できる各種のアクティビティActを示すアイコンがシナリオ作成欄431に表示される。アクティビティActとしては、
・CSV(Comma-Separated Values)形式等で記載された表の取得を示すアクティビティ
・当該表の値を所定の条件で絞り込むアクティビティ
・当該表から値を抽出するアクティビティ
・当該値を出力先(表、ウェブページ、メールアドレス等)に出力するアクティビティ
・所定のウェブページにアクセスするアクティビティ
・ウェブページから画像や文章を取得するアクティビティ
等の種々の具体例が挙げられる。そして、ユーザは、シナリオ作成欄431のアクティビティActをシナリオ表示欄45に配置することで、シナリオを構成するアクティビティActを選択できる。こうして、シナリオ表示欄45に配置された各アクティビティActを含むシナリオを作成することができる。なお、ユーザは、シナリオ作成欄431のアクティビティActをシナリオ表示欄45にドラッグする、シナリオ作成欄のアクティビティActをダブルクリックする、など様々な操作により、シナリオ作成欄431のアクティビティActをシナリオ表示欄に配置させることができる。
【0027】
また、シナリオ作成モードでは、表編集や、ウェブスクレイピングといった作業目的に応じてアクティビティActがユニットUとしてユニット化されている。したがって、ユーザは、作業目的に応じたユニットUをシナリオ表示欄45に配置(ドラッグ)することで、ユニットUを構成するアクティビティActを含むシナリオを作成できる。これによって、シナリオ作成に要するユーザの負担を軽減できる。ただし、シナリオ作成モードにおいて、アクティビティActがユニット化されていることは必須ではない。
【0028】
シナリオ作成モードにおいてユーザがシナリオ表示欄45にアクティビティActを配置する操作や、アクティビティActの内容(例えば、使用する変数V)を決定する操作は、シナリオ作成部33(
図2)に入力される。そして、シナリオ作成部33は、当該操作を受け付けて、シナリオを作成する。これによって、シナリオ表示欄45におけるアクティビティActの配列順序に従って各アクティビティActを実行するシナリオが作成される。
【0029】
また、シナリオ作成部33は、シナリオ表示欄45に配置されたアクティビティActの実行を示すシナリオ実行指示Cgを実行部35に送り、実行部35は当該アクティビティActを実行する。つまり、シナリオ作成モードでは、シナリオ作成に並行して当該シナリオに含まれるアクティビティActが実行される。そのため、ユーザは、シナリオ表示欄45に配置したアクティビティActの動作を確認しながら、シナリオを構成するアクティビティActを決定できる。特に、アクティビティActで使用される変数Vの実体値Eが、アクティビティActの実行に伴って取得される。本実施例において、アクティビティの実行に伴う実体値の取得とは、実体値が、当該アクティビティ以外のアクティビティを実行するときに参照可能に、所定の格納領域に保持されることを示す。これによって、ユーザは当該変数Vの実体値Eを確認しつつシナリオを作成できる。この実体値Eの取得について、
図4A~
図4Gの例を用いて具体的に説明する。なお、シナリオ作成モードにおけるアクティビティActの実行については、ユーザから実行の可否の指示を受け付ける構成であっても良い。例えば、他のファイルへのデータ書き込みを行う、メールを送信する、など、シナリオ作成の段階で実行することが業務上の影響を及ぼすようなアクティビティについては、ユーザに実行の可否を選択させる構成であってもよい。
【0030】
図4Aでは、表を抽出するアクティビティAct(1)と、当該表から値を抽出するアクティビティAct(2)とが、シナリオを構成するアクティビティActとして選択されている(すなわち、シナリオ表示欄45に配列されている)。アクティビティAct(1)では、変数V_tが宣言される。ユーザは、当該変数V_tの実体値E_tとして取得すべき表(データ)のパスを入力欄51に入力できる。そして、入力欄51にパスが入力されると、当該パスの表を変数V_tの実体値E_tとして取得するアクティビティAct(1)が設定される。こうしてアクティビティAct(1)が設定されると、シナリオ作成部33は、当該アクティビティAct(1)の実行を示すシナリオ実行指示Cgを、実行部35に送る。そして、実行部35が当該アクティビティAct(1)を実行することで、変数V_tの実体値E_tが取得される。この際、実行部35により取得された変数の実体値をメモリ部22に格納する変数管理が実行されるが、この変数管理の詳細については後述する。
【0031】
アクティビティAct(2)では、変数V_v1が宣言され、変数V_v1の実体値E_v1が取得される。ユーザは、当該変数V_v1の実体値E_v1の取得を、入力欄52に入力することにより設定できる。本実施例では、ユーザが入力欄52を選択(クリック)すると、ユーザは入力欄52へ直接入力するか、選択肢から指定して入力欄52へ入力するか、を選択できる。本実施例では、ユーザは「・直接入力」と「・表:V_tの値」との二つの選択肢から一つを選択する。ユーザは、「・直接入力」を選択すると、入力欄52への直接入力をすることが出来る。また、ユーザは、「・表:V_tの値」を選択すると、当該選択により、任意の変数を引数として実体値E_v1を取得することと、変数V_tを引数とすることと、の指定ができる。特に、本実施例では、アクティビティAct(2)において引数として使用できる変数の候補Fが表示される。候補Fとして表示される変数は、例えば、シナリオを実行する際に、当該アクティビティを実行する時点で実体値が取得されている変数である。本実施例ではアクティビティAct(2)を実行する時点で既にアクティビティAct(1)が実行されるため、アクティビティAct(1)の実行により実体値E_tが取得される変数V_tが候補Fとして表示される。なお、候補Fとして表示される変数は、入力欄52の型に応じて表示されても良い。
【0032】
図4Bでは、選択肢「・表:V_tの値」が選択された場合、すなわち、引数を使って実体値E_v1を取得することと、当該引数として使用可能な変数の候補Fのうちから変数V_t(表)が選択された場合が示されている。本実施例では、アクティビティAct(1)において、実体値E_tとして表が取得されるため、変数V_t(表)に含まれる値を実体値E_v1として取得することが選択された場合が示されている。つまり、
図4Bのシナリオ管理画面4では、複数の候補Fから選択された変数V_tの実体値E_t(表)が表示される。したがって、ユーザは、アクティビティAct(2)の引数として選択した候補Fがどのような実体値E_tを取得する変数であるか、を確認できる。また、本実施例における変数V_tは表である。したがって、ユーザは、表示される実体値E_t(表)に含まれるセルの一つを指定することで、入力欄52に、変数V_t(表)に含まれるセルから変数V_v1の実体値E_v1を取得することを設定できる。
図4Cでは、変数V_tの実体値E_tのうちから、ユーザにより1行目でc列目の「3」が入ったセルが指定された場合が示されている。この状態で、OKボタンが操作(クリック)されると、変数V_tの実体値E_tとして取得されるデータ(実体データ)のうちから1行目でc列目の値を、変数V_v1の実体値E_v1として取得するアクティビティAct(2)が設定される(
図4D)。こうしてアクティビティAct(2)が設定されると、シナリオ作成部33は、当該アクティビティAct(2)の実行を示すシナリオ実行指示Cgを、実行部35に送る。そして、実行部35が当該アクティビティAct(2)を実行することで、変数V_v1の実体値E_v1が取得される。なお、本実施例では、変数V_tの実体値E_tが表示されるが、入力欄52が受け付ける型に応じて実体値E_tが表示される構成であっても良い。例えば、本実施例におけるアクティビティAct(2)は値を抽出するアクティビティActであり、入力欄52では、変数V_tに含まれる値が抽出されるような入力を受け付けるため、ユーザが変数V_t中の抽出元を指定しやすいように実体値E_tが表示される。アクティビティAct(2)が変数V_tの実体値E_tとして取得されるデータを特に加工せず任意のファイルに出力するようなアクティビティである場合、入力欄52では出力されるデータが正しく指定される入力がされれば良いため、必ずしも実体値E_tを確認する必要が無い。このように入力欄52が受け付ける方に応じて、実体値E_tが表示されるか否か、また表示される場合にその表示態様が変わる構成であっても良い。
【0033】
図4Eでは、アクティビティAct(1)、Act(2)に加えて、メールを送るアクティビティAct(3)が、シナリオを構成するアクティビティActとして選択されている。
図4Eに示される例では、メールアドレスと添付データの参照先とが変数として指定され、ユーザがアクティビティAct(3)を設定することにより、各変数を宣言することと、当該変数を引数としてメールを送信することとが設定される。アクティビティAct(3)では、メールアドレスとしての変数V_v2が宣言され、ユーザは、当該変数V_v2の実体値E_v2の取得を入力欄53への入力で設定できる。さらに、添付データのファイルパスとしての変数V_v3が宣言され、変数V_v3の実体値E_v3の取得を、入力欄54への入力で設定できる。特に、
図4Fに示すように、ユーザが入力欄54を選択(クリック)すると、変数V_v3の実体値E_v3として取得できる候補Fが表示される。具体的には、変数V_t(表)に含まれる値と、変数V_v1とが、候補Fとして表示される。そして、入力欄53、54のそれぞれに入力がされ、変数V_v2の実体値E_v2の取得と、変数V_v3の実体値E_v3の取得とが設定されると、各実体値E_v2、E_v3が取得されて、実体値E_v2に示されるメールアドレスE_v2宛に実体値E_v3に示される添付データが添付されたメールを送るアクティビティAct(3)が設定される(
図4G)。これに対して、シナリオ作成部33は、当該アクティビティAct(3)の実行を示すシナリオ実行指示Cgを、実行部35に送る。そして、実行部35が当該アクティビティAct(3)を実行することで、変数V_v2、V_v3の実体値E_v2、E_v3が取得される。なお、シナリオ作成モードでアクティビティAct(3)を実行する際には、メールの送信は行わなくても構わない。これによって、不要なメールが送信されるのを回避できる。
【0034】
ところで、上述の通り、シナリオ作成モードの実行と並行して、取得された変数Vの実体値Eを管理する変数管理が実行される。続いては、
図5、
図6および
図7を用いて、この変数管理について説明する。ここで、
図5は変数管理の実行時における演算部の各機能部の動作を示すブロック図であり、
図6は変数管理のために実行部が実行する制御の一例を示すフローチャートであり、
図7は変数管理のために監視部が実行する制御の一例を示すフローチャートである。
【0035】
図5に示すように、シナリオ作成モードにおいて、メモリ部22には第一格納領域R1と第二格納領域R2とが確保される。
【0036】
第一格納領域R1は、実行部35によりアクセス可能な領域である。実行部35はアクティビティActを実行することによって、変数Vの実体値Eを第一格納領域R1に保持させる。このとき、第一格納領域R1に保持される実体値Eは、実行部35が変数Vを含むアクティビティを実行するときに参照される。すなわち、ある一のアクティビティAct(例えばアクティビティAct(1))を実行することによって第一格納領域R1に保持される実体値Eは、別のアクティビティAct(例えばアクティビティAct(2))を実行するときに参照可能に、保持される。第一格納領域R1は、実行部35が、シナリオを実行するときにアクセス可能な領域としてメモリ部22に確保されるため、実行部35がシナリオを実行するタイミングに対応する期間確保され、当該期間が終了するときに解放される。シナリオ作成モードでは、随時、シナリオ作成部33からシナリオ実行指示Cgが実行部35に送られるため、シナリオ作成モードの間、メモリ部22に第一格納領域R1が確保されてもよい。また、シナリオ実行操作部312より送られるシナリオ実行指示Ceに基づいて実行部35がシナリオを実行するときは、実行部35がシナリオ実行指示Ceに示されるアクティビティの実行を開始してからシナリオ実行指示Ceに示されるアクティビティ全ての実行を完了するまでの間、メモリ部22に第一格納領域R1が確保されてもよい。
【0037】
第一格納領域R1には、デバッガ37もアクセス可能である。上述の通り、デバッガ37は監視部371と保持部372とを有する。監視部371は実行部35により変数Vの実体値Eが取得される、すなわち、変数Vの実体値Eが第一格納領域R1に保持されるのを監視する。そして、保持部372は、監視部371が監視結果に応じて生成する指示に基づいて、第一格納領域R1と第二格納領域R2とにアクセスして、第一格納領域R1に保持される実体値Eを第二格納領域R2に保持させる。
【0038】
第二格納領域R2は、メモリ部22、すなわち、揮発性記憶素子の所定領域に確保される領域であり、デバッガ37の保持部372によりアクセス可能な領域である。第二格納領域R2に保持される実体値Eは、当該実体値Eを参照する変数Vと関連付けられる。より詳細には、第二格納領域R2は、実行部35によりアクティビティActが実行されるときに当該アクティビティActに含まれる変数Vとして参照される実体値Eを、当該変数Vと関連付けて、保持する。第二格納領域R2は、変数Vの実体値Eが第一格納領域R1に保持されるのに応じて実体値Eを保持させる保持部372によってアクセス格納な領域としてメモリ部22に確保されるため、少なくとも、第一格納領域R1がメモリ部22に確保される期間は、メモリ部22に確保される。これに加えて、後述するように、第二格納領域R2はエディタ31によってアクセス可能な領域でもあるため、第一格納領域R1がメモリ部22に確保される期間以外にも、メモリ部22に確保される。
【0039】
シナリオ作成モードが開始されると、
図6に示すように、実行部35はアクティビティActにおいて変数が宣言されたかを確認する(ステップS101)。そして、変数Vの宣言を確認すると(ステップS101で「YES」)、実行部35は、宣言された変数Vに対して第一格納領域R1をメモリ部22に確保する(ステップS102)。続いて、実行部35は、当該変数Vの実体値Eを第一格納領域R1に取得する(ステップS103)。すなわち、当該変数Vの実体値Eを、実行部35により参照可能に、第一格納領域R1に保持させる。実体値Eは、当該変数Vが不要となるまで、第一格納領域R1に保持される。一方、当該変数Vが不要となると(ステップS104で「YES」)、実行部35は第一格納領域R1を解放して、実体値Eはメモリ部22から消去される。なお、シナリオ作成モードで宣言される変数Vが不要になるタイミングとしては、代表的には、ユーザがシナリオ作成モードを終了する操作を行って、実行部35がシナリオ作成モードから離脱するタイミングが挙げられる。
【0040】
また、シナリオ作成モードが開始されると、
図7に示すように、監視部371は実行部35による変数Vの実体値Eの取得を監視する(ステップS201)。実行部35による変数Vの実体値Eの取得が確認されると(ステップS201で「YES」)、監視部371は、ステップS202、S203を保持部372に実行させる。つまり、保持部372は、メモリ部22に第二格納領域R2を確保して(ステップS202)、第一格納領域R1の実体値Eを第二格納領域R2にコピーする(ステップS203)。これによって、実体値Eが変数Vと関連付けられて第二格納領域R2に保持される。
【0041】
図8は
図6および
図7のフローチャートに基づき実行される変数管理の動作を模式的に示す図である。
図8を用いて上述の動作を時系列に沿って整理しておく。作成中のシナリオに含まれるアクティビティActで変数Vが宣言されると、実行部35は、当該変数Vに対応する第一格納領域R1をメモリ部22に確保して(ステップS102)、当該変数Vの実体値Eを第一格納領域R1に取得する(ステップS103)。また、監視部371は、実体値Eの取得を確認すると、メモリ部22での第二格納領域R2の確保と(ステップS202)、第一格納領域R1から第二格納領域R2への実体値Eのコピーとを(ステップS203)、保持部372に実行させる。これによって、実体値Eは変数Vと関連付けられて、第二格納領域R2に保持される。ステップS105では、変数Vが不要になったのに伴って、第一格納領域R1が解放される。この第一格納領域R1の解放後においても、第二格納領域R2には実体値Eが保持されている。
【0042】
なお、シナリオ作成モードで複数の変数Vが宣言される場合には、複数の変数Vのそれぞれについて、
図6および
図7のフローチャートが実行される。つまり、
図4A~
図4Eに示す例では、変数V_t、変数V_v1、変数V_v2および変数V_v3のそれぞれについて、
図6および
図7のフローチャートが実行される。その結果、メモリ部22では、
図9に示す実体値Eが保持されることとなる。ここで、
図9はメモリ部に保持される実体値の一例を模式的に示す図である。
図4A~
図4Eの例について
図6および
図7のフローチャートを実行すると、
図9に示すように、第二格納領域R2(1)、R2(2)、R(3)、R(4)には、変数V_t、V_v1、V_v2、V_v3に関連付けられて、これらの実体値E_t、E_v1、E_v2、E_v3が保持される。
【0043】
ところで、
図3を用いて説明した通り、シナリオ管理画面4のモード選択欄43では、シナリオ作成モードの他に、シナリオ編集モードを選択できる。そして、シナリオ編集モードを選択することで、上記の手順でシナリオ作成モードにより作成したシナリオを編集することができる。
【0044】
図10A~
図10Eはシナリオ編集モードにおいてシナリオ管理画面に実行できる操作の一例を模式的に示す図である。これらの図では、シナリオ編集欄432が展開される一方、シナリオ作成欄431が縮小されている。また、
図11はシナリオ編集モードの実行時における演算部の各機能部の動作を示すブロック図である。
【0045】
図11に示すように、シナリオ編集モードでは、メモリ部には、第二格納領域R2が確保される。
図11は、シナリオ作成モードが終了した後にシナリオ編集モードに移行したときの演算部の各機能部の動作を示し、シナリオ作成モードにおける演算部の各機能部の動作を示す
図5に対して、第一格納領域R1は解放されてメモリ部22から消失している一方、第二格納領域R2はメモリ部22に継続的に確保される。第二格納領域R2は、保持部372によって、メモリ部22に継続的に確保される。これにより、第二格納領域R2には、実行部35がアクティビティActを実行するときに変数Vに関連付けて保持された実体値Eが継続的に保持される。
【0046】
第二格納領域R2は、上述した保持部372に加え、エディタ31によりアクセス可能な領域である。エディタ31は、第二格納領域R2にアクセスして、変数Vと関連付けて保持される実体値Eを参照する。
図11に示すように、エディタ31は、実行部35を介さず、第二格納領域R2にアクセスする。このため、エディタ31は、実行部35によるシナリオの実行と並行して、変数Vに関連付けた保持される実体値Eを参照することができる。また、エディタ31は、実行部35によりシナリオが実行される間以外にも、変数Vに関連付けて保持される実体値Eを参照することができる。第二格納領域R2はシナリオを管理するためのエディタ31によってアクセスされるため、第二格納領域R2は、少なくとも、実行部35によるアクティビティActの実行が開始されてから、エディタ31によりシナリオを管理するための操作を受け付ける期間が終了するまでの間、メモリ部22に確保される。本実施例では、第二格納領域R2は、演算部21によるシナリオ管理プログラム12の実行を開始したときにメモリ部22に確保され、演算部21によるシナリオ管理プログラム12の実行が終了するときに解放される。
【0047】
シナリオ作成モードにおいてユーザがシナリオ表示欄45にアクティビティActを配置する操作や、アクティビティActの内容を編集する操作は、編集操作部311(
図11)に入力される。そして、編集操作部311は、シナリオ表示欄45に対する操作を受け付けて、当該操作に応じてシナリオを編集する。
【0048】
図10Aでは、
図4A~
図4Eで例示したシナリオ作成モードによって作成されたシナリオが編集対象として選択されて、シナリオ表示欄45に表示されている。また、シナリオ編集欄432では、シナリオに対して追加できる各種のアクティビティActを示すアイコンが表示されている。
【0049】
図10Bでは、シナリオに含まれる複数のアクティビティAct(1)~Act(3)のうち、アクティビティAct(2)への編集操作が示されている。具体的には、アクティビティAct(2)で宣言される変数V_v1の実体値E_v1の取得に関するデータが編集されている。特に、ユーザによる入力欄52の選択(クリック)によって、アクティビティAct(2)で引数として使用できる候補Fが表示されている。
【0050】
図10Cでは、引数を用いて実体値E_v1を取得することと、当該引数として候補Fのうちから変数V_tが選択された場合が示されている。つまり、
図10Cのシナリオ管理画面4では、候補Fから選択された変数V_tの実体値E_tが表示される。すなわち、候補Fから変数V_tが選択されることにより、表示対象として変数V_tが指定される。変数V_tは、複数の値から構成される表である実体値E_tを参照するため、実体値E_tの表示として、当該表に含まれる複数の値が表示される。このとき、編集操作部311(
図11)は、第二格納領域R2に保持されている実体値E_tを読み出して、当該実体値E_tをシナリオ管理画面4に表示する。これによって、実体値E_tを取得するためのアクティビティAct(1)の実行を省略しつつ、アクティビティAct(2)の編集で実体値E_tを確認することができる。
【0051】
図10Cに示されるシナリオ管理画面4において、ユーザは、この実体値E_tに含まれる値として、実体値E_tとして表示される表に含まれるセルの一つを指定する操作を行う。編集操作部311は、表に含まれるセルが指定される操作を受け付けると、当該操作に基づいて変数V_v1の実体値E_v1の参照先を変更する。すなわち、入力欄52に参照先を示す情報を直接入力するのに代えて、複数の値から構成される実体値E_tの表示に対する操作を受け付けることによって、変数V_tの参照先のデータに含まれる複数の値のうちの所望の値を参照するアクティビティが設定される。具体的には、
図10Dでは、変数V_tの実体値E_tのうちから、2行目でb列目の「5」が選択された場合が示されている。この状態で、OKボタンが操作(クリック)されると、変数V_tとして取得される実体値E_tを構成する複数の値のうちから2行目でb列目の値を、変数V_v1の実体値E_v1として取得するようにアクティビティAct(2)の内容が変更される(
図10E)。こうして、アクティビティAct(2)を実行するときに変数V_v1の実体値E_v1として取得されるデータを変更できる。
【0052】
図12はシナリオ編集モードにおいて編集操作部が実行する変数表示の一例を示すフローチャートである。上述の
図10B、
図10Cおよび
図10Dに示した変数Vの実体値Eの表示は、
図12のフローチャートに従って実行される。ステップS301では、編集操作部311は、ユーザにより表示を要求する変数Vの指定があるかを確認する。例えば、
図10Bに示した指定操作(候補Fから変数を選択する操作)がユーザによって実行されると(ステップS301で「YES」)、編集操作部311は、指定された変数Vの実体値Eが第二格納領域R2に格納されているかを確認する(ステップS302)。実体値が格納されている場合(ステップS302で「YES」の場合)には、
図10Cおよび
図10Dに示したように、編集操作部311は、指定された変数Vの実体値Eをディスプレイ243に表示する(ステップS303)。なお、
図10A~
図10Eの例では示していないが、変数Vの実体値Eがメモリ部22において第二格納領域R2に格納されていない場合も想定される。このような場合には、編集操作部311は、ステップS302で「NO」と判断して、変数Vの実体値Eが存在しない旨をディスプレイ243に表示する(ステップS304)。なお、本フローチャートでは、変数Vが指定されたときに変数Vの実体値Eが第二格納領域R2に格納されているかを確認するが、変数Vが指定されるより前に、表示されるシナリオに含まれる各変数Vについて第二格納領域R2に当該変数に関連付けられた実体値Eが保持されているか否かを判定して、第二格納領域R2に実体値Eが格納されているか否かに応じた表示がなされても良い。
【0053】
以上に説明する実施形態では、シナリオに含まれるアクティビティActの実行に伴って、実行部35はアクティビティActで参照する変数Vの実体値Eを第一格納領域R1に取得する(ステップS103)。すなわち、実行部35はアクティビティActで参照する変数Vの実体値Eを、他のアクティビティActを実行するときに参照可能に、第二格納領域R1に保持させる。また、保持部372が当該実体値Eを変数Vと関連付けて、シナリオを管理するためのエディタ31によってアクセス可能な第二格納領域R2に保持させる(ステップS203)。したがって、ユーザはシナリオを管理するときに、エディタ31によって、実行部35を介さずに変数Vの実体値Eにアクセスすることができる。
【0054】
また、第二格納領域R2は、第一格納領域R1の解放後も、実体値Eを保持する(
図8のステップS105)。かかる構成ではシナリオの作成が終了して(すなわち、シナリオ作成モードが終了して)、実体値Eを取得した第一格納領域R1が解放された後であっても、シナリオに含まれるアクティビティActで参照する変数Vの実体値Eを第二格納領域R2から読み出すことができる。したがって、第一格納領域R1が解放された後であってもユーザはシナリオを管理するときに、アクティビティActで参照される変数Vの実体値Eにアクセスすることができる。
【0055】
また、編集操作部311が具備されている。この編集操作部311は、シナリオにより自動化される操作の内容を示す表示として、シナリオに含まれる変数Vについて、当該変数Vに関連付けて第二格納領域R2に保持される実体値Eをディスプレイ243に表示する(
図10C、
図10D)。かかる構成では、ユーザは、管理対象となるシナリオに含まれる変数Vの実体値Eを確認しつつシナリオにより自動化される操作の内容を確認することができる。
【0056】
また、編集操作部311は、変数Vに関連付けて第二格納領域R2に保持される実体値Eが無い場合(ステップS302で「NO」の場合)には、その旨をディスプレイ243に表示する。かかる構成では、ユーザは、管理対象となるシナリオに含まれる変数Vの実体値Eの有無を容易に把握することができる。
【0057】
また、シナリオに含まれるアクティビティActの設定を受け付けてアクティビティActを作成するシナリオ作成部33が具備されている。このシナリオ作成部33は、作成したアクティビティActに基づいてシナリオ実行指示Cgを実行部35に送る。かかる構成では、作成中のシナリオに設定されたアクティビティActの実行に伴って、当該アクティビティActで使用される変数Vの実体値Eを取得して(ステップS103)、第二格納領域R2に保持しておくことができる(ステップS203)。アクティビティActの設定は、例えば、アクティビティActの内容の決定を含む。なお、シナリオ作成部は、シナリオ表示欄へのアクティビティActの配置(作成したアクティビティActの処理順の設定)など、シナリオの作成に係る操作を受け付けることができる。このとき、シナリオ実行指示Cgは、作成したアクティビティActに基づくものに限られず、シナリオの作成状況に応じたシナリオ実行指示Cgが送られても良い。
【0058】
また、編集操作部311は、表示対象となる変数Vを指定する変数指定操作(ステップS301)を受け付けると、変数Vに関連付けられた実体値Eを第二格納領域R2から読み出してディスプレイ243に表示する。かかる構成では、ユーザは、ディスプレイ243を介して変数指定操作を編集操作部311に対して実行するといった簡単な作業により、変数Vの実体値Eを確認することができる。
【0059】
また、実行部35が第一格納領域R1に変数Vの実体値Eを取得する、すなわち第一格納領域R1に実体値Eを保持させることを監視する監視部371が具備されている。この監視部371は、実行部35により第一格納領域R1へ変数Vの実体値Eが保持されたことを確認する(ステップS201)と、保持部372が、第一格納領域R1の実体値Eを第二格納領域R2に保持させる(ステップS203)。かかる構成では、実行部35により取得された変数Vの実体値Eの第二格納領域R2への保持を監視部371の機能によって確実に実行できる。
【0060】
ちなみに、
図5に示すように、演算部21に構成される各機能部311、312、33、35、371、372は、個別のプロセスで実現されている。具体的には、実行部35は、実行部プロセス(第一プロセス)としてアクティビティActを実行し、保持部372は、当該実行プロセスと異なる保持プロセス(第二プロセス)として、第一格納領域R1に取得される実体値Eを変数Vと関連付けて第二格納領域R2に保持させる。このような構成では、アクティビティActの実行と実体値Eの保持とが別々のプロセス(実行プロセスおよび保持プロセス)で実行される。これによれば、実行部35によるアクティビティActの実行と並行して、保持部372による第二格納領域R2への実体値Eを保持させることができるため、実行部35によるアクティビティActの実行への影響が低減される。したがって、実行部35によるアクティビティActの実行への影響を押さえながら、アクティビティActの実行完了に伴って実行プロセスが終了した後も、保持プロセスによって実体値Eを第二格納領域R2に保持しておくことができる。その結果、シナリオを管理する際に、エディタ31がシナリオで参照される変数Vの実体値Eにアクセスすることが可能となる。
【0061】
ところで、シナリオにおいて、複数の変数Vに同じ名称が付される場合が想定される。変数名称管理を実行することで、同じ名称の複数の変数Vが区別されて管理される。
【0062】
図13は変数名称管理の内容を模式的に示す図である。
図13の例では、変数Var_a、変数Var_bおよび変数Var_aが順番に宣言されており、1回目の宣言の変数と3回目の変数の宣言とが同一である。そのため、これらの変数Var_aそれぞれの実体値Eを変数と関連付けて第二格納領域R2に保持するにあたって、変数名そのものを実体値Eに関連付けると、名称が競合してしまう。そこで、ここで説明する変数名称管理では、監視部371(および保持部372)は、変数Vが宣言される度に、当該変数Vに対して異なる識別子ID1、ID2、ID3を付して、識別子ID1、ID2、ID3それぞれと実体値Eとを関連付けて当該実体値Eを第二格納領域R2に保持する。このような識別子ID1、ID2、ID3による変数Vの識別は、変数Vのスコープに基づく変数Vの識別に相当する。変数Vのスコープとは、シナリオにおける、当該変数Vが有効な範囲である。変数Vのスコープに基づき変数Vが識別されることにより、変数名称が同じで、異なる範囲で有効な変数が区別される。また、実体値Eは識別子ID1、ID2、ID3と関連付けて第二格納領域R2に保持されることは、変数Vのスコープと関連付けて当該変数Vの実体値Eが第二格納領域R2に保持されることに相当する。
【0063】
図14は変数の実体値の取得に伴って実行される変数名称管理の一例を示すフローチャートである。実行部35がシナリオを構成するアクティビティActの行(すなわち、アクティビティActを規定するプログラムの行)を実行すると(ステップS401)、監視部371は、行の実行が成功したかを確認する(ステップS402)。行の実行が失敗すると(ステップS402で「NO」)、
図14のフローチャートが終了する一方、行の実行が成功すると(ステップS402で「YES」)、監視部371は、ステップS401で実行された行の変数Vを宣言する変数宣言部を特定する。これは、変数Vを宣言するノード(構文解析におけるノード)を特定することに相当する。
【0064】
ステップS404では、監視部371は、ステップS403で特定された変数宣言部に対して識別子IDが既に付与されているか否かを確認する。識別子IDが既に付与されている場合(ステップS404で「YES」の場合)には、保持部372は、当該識別子IDに関連付けて第二格納領域R2に記憶されている実体値Eを、最新に取得した実体値Eに更新する(ステップS405)。一方、識別子IDが付与されていない場合(ステップS404で「NO」の場合)には、監視部371は、変数宣言部に対して識別子IDを付与して(ステップS406)、保持部372は、変数宣言部で宣言された変数Vの実体値Eを当該識別子IDに関連付けて第二格納領域R2に格納する。
【0065】
このように、
図13および
図14に示す例では、保持部372は、変数Vのスコープと関連付けて実体値Eを第二格納領域R2に保持する(ステップS405、S406、S407)。かかる構成では、複数の変数Vに同じ名称が付されていた場合であっても、当該変数Vに関連付けられたスコープに基づき、当該変数Vの実体値Eを識別することができる。
【0066】
換言すれば、保持部372は、変数Vを宣言するノード(すなわち、変数宣言部)と実体値Eとを関連付けることで、変数Vのスコープと実体値Eとを関連付ける(ステップS403、S406)。このように変数宣言のノードを用いることで、変数Vのスコープと実体値Eとを的確に関連付けることができる。
【0067】
また、第二格納領域R2は、変数Vについて取得された最新の実体値Eを保持する(ステップS405)。かかる構成では、新たな実体値Eが取得される度に、第二格納領域R2の実体値Eが更新されるため、ユーザは常に最新の実体値Eを確認することができる。
【0068】
ところで、上記の実施形態では、ユーザがシナリオを管理する一例としてのシナリオ編集モードにおいて、ディスプレイ243に変数Vの実体値Eが表示されることで、ユーザの編集作業がアシストされる。特に
図10Bの例等では、ユーザが変数V_v1に係るアクティビティAct(2)を編集するにあたって、引数となりうる候補Fがディスプレイ243に表示される。この際、編集対象となるアクティビティActをスコープに含む変数V(
図10Bの例では変数V_t)が候補Fとして表示され、当該候補Fから選択された変数Vの実体値Eが表示される。続いては、このような実体値表示を可能にする制御の一例について説明する。
【0069】
図15はシナリオ編集モードにおける実体値表示のための制御の一例を示すフローチャートである。ステップS501では、編集操作部311は、ユーザによって編集対象として選択されているアクティビティAct(編集対象アクティビティAct)の構文を解析する。そして、編集操作部311は、編集対象アクティビティActを含むスコープを取得して(ステップS502)、編集対象アクティビティActをそのスコープに含む変数Vのリストを取得する(ステップS503)。これは、編集対象アクティビティActにおいて使用可能な変数Vのリストの取得に相当する。
【0070】
また、ステップS502、S503と並行して、編集操作部311は、編集対象アクティビティActのうち、選択箇所の変数Vの型を取得する(ステップS504)。具体的には、
図10Bの例によれば、編集対象アクティビティAct(2)のうちから入力欄52(選択箇所)が選択されているため、入力欄52で受け付ける型が取得される。ここで、入力欄52で受け付ける型とは、当該入力欄52への入力内容によってアクティビティAct(2)で扱われる、数値、文字、日付あるいは表などのデータの形式を示す。
【0071】
ステップS505では、編集操作部311は、ステップS503で取得された変数のうちから、ステップS504で取得された型を有する変数Vのリストを作成して、当該リストをディスプレイ243に表示する。こうして、
図10Bに例示するような候補Fが表示される。
【0072】
ステップS506では、編集操作部311は、候補Fのうちから一の変数Vを選択するユーザの選択操作を受け付ける。そして、編集操作部311は、選択された変数Vの識別子IDを取得して、当該識別子IDに関連付けられて第二格納領域R2に保持されている実体値Eを確認する(ステップS507)。該当の実体値Eが存在する場合(ステップS508で「YES」の場合)、編集操作部311は、実体値Eをディスプレイ243に表示する(ステップS509)。一方、該当の実体値Eが存在しない場合(ステップS508で「NO」の場合)、編集操作部311は、実体値Eが存在しない旨をディスプレイ243に表示する(ステップS510)。
【0073】
図16は
図15に示す制御の結果の一例を模式的に示す図である。
図16の例では、それぞれ変数Vを宣言する6個のアクティビティAct(11)~Act(16)を順番に実行するシナリオを編集する場面が示されている(シナリオ編集モード)。アクティビティAct(11)~Act(16)のうち、5個のアクティビティAct(11)、Act(13)~Act(16)で宣言される変数Vの型は文字であり、1個のアクティビティAct(12)で宣言される変数Vの型は数値である。そして、アクティビティAct(14)で宣言される変数V(string3)が編集箇所として選択されている。当該アクティビティAct(14)をスコープに含む変数Vは、アクティビティAct(11)、Act(12)、Act(13)の変数string1、num1、string2となる。ただし、アクティビティAct(14)で扱われる変数V(string3)の型は文字であるため、当該型と一致する変数string1、string2が、候補Fとして表示される。
【0074】
ここで、型が文字の変数Vを宣言するアクティビティActに注目すると、
図16の例では、変数string1、string2、string4、string5(第一変数)を宣言する非編集対象の第一アクティビティAct(11)、Act(13)、Act(15)、Act(16)と、編集対象の第二アクティビティAct(14)とが、編集操作部311によってディスプレイ243に表示されている。この際、非編集対象のアクティビティAct(11)、Act(13)、Act(15)、Act(16)のうち、アクティビティAct(11)、Act(13)で宣言される変数string1、string2は、編集対象のアクティビティAct(14)をスコープに含む一方、アクティビティAct(15)、Act(16)で宣言される変数string4、string5は、編集対象のアクティビティAct(14)をスコープに含まない。これに対して、編集操作部311は、編集対象のアクティビティAct(14)で使用される変数V(string3)の候補Fとして、当該アクティビティAct(14)をスコープに含む変数string1、string2を表示する一方、当該アクティビティAct(14)をスコープに含まない変数string4、string5を表示しない。かかる構成では、ユーザが編集対象のアクティビティAct(14)で参照する変数V(string3)を設定する際に、当該アクティビティAct(14)で参照可能な変数V(string1、string2)のみが候補Fとして表示される。したがって、ユーザは、変数Vの設定作業を容易に実行することができる。
【0075】
ところで、シナリオ編集モードにおいては、シナリオを構成する複数のアクティビティActのうち、一部のアクティビティActを選択的に実行することができる(部分実行)。特に、上記の実施形態では、変数Vの実体値Eが第二格納領域R2に保持されている。そのため、部分実行対象のアクティビティActが、それより前の先行アクティビティActで宣言される変数Vを使用する場合には、当該変数Vの実体値Eを第二格納領域R2から読み出して使用することで、先行アクティビティActを実行することなく、部分実行対象のアクティビティActのみを実行できる。続いては、このような部分実行を可能にする制御の一例について説明する。
【0076】
図17はシナリオ編集モードにおける部分実行のための制御の一例を示すフローチャートである。ステップS601では、シナリオ実行操作部312は、部分実行対象のアクティビティActを指定するユーザの操作を受け付ける。ステップS602では、シナリオ実行操作部312は、部分実行対象のアクティビティActの先頭行に対して構文解析を実行する。そして、シナリオ実行操作部312は、当該先頭行を含むスコープを有する変数Vの変数宣言部の識別子IDのリスト(IDリスト)を取得する(ステップS603)。
【0077】
シナリオ実行操作部312は、IDリストの識別子IDをカウントするためのカウント値Nをゼロにリセットして(ステップS604)、カウント値Nをインクリメントする(ステップS605)。そして、当該リストのうち、N番目の識別子IDに関連付けられて第二格納領域R2に保持される実体値Eが存在するかが、シナリオ実行操作部312によって確認される(ステップS606)。N番目の識別子IDに対して実体値Eが存在する場合(ステップS606で「YES」の場合)には、シナリオ実行操作部312は、実体値Eに対応する変数Vを宣言する変数宣言アクティビティActを生成してから(ステップS607)、ステップS608に進む。一方、N番目の識別子IDに対して実体値Eが存在しない場合(ステップS606で「NO」の場合)には、ステップS607を実行せずに、ステップS608に進む。ちなみに、この場合には、識別子IDの実体値Eが存在しない旨をディスプレイ243に表示してもよい。
【0078】
ステップS608では、カウント値NがIDリストに含まれる識別子IDの個数(Nmax)に到達したかがシナリオ実行操作部312によって確認される。カウント値Nが個数Nmax未満の場合(ステップS608で「NO」の場合)には、ステップS605~S608が繰り返される。一方、カウント値Nが個数Nmaxの場合(ステップS608で「YES」の場合)には、シナリオ実行操作部312は、ステップS607で生成した変数宣言アクティビティActを、部分実行対象のアクティビティActの前に付与して部分シナリオを生成する(ステップS609)。さらに、シナリオ実行操作部312は、生成した部分シナリオの実行を要求するシナリオ実行指示Ceを実行部35に送り、実行部35は、シナリオ実行指示Ceに従って部分シナリオを実行する(ステップS610)。
【0079】
このステップS610では、実行部35は、第二格納領域R2に保持される変数Vの実体値Eを使用して、部分実行対象のアクティビティActを実行する。具体的には、実行部35は、第二格納領域R2から読み出した実体値Eを第一格納領域R1に格納して、部分実行対象のアクティビティActの実行に当該実体値Eを使用する。
【0080】
本実施例において、ステップS607で生成される変数宣言アクティビティActは、実行部35に実行されることによって、変数Vの宣言と、変数Vの実体値Eの取得と、がされるアクティビティである。変数Vが宣言されることにより、少なくとも変数Vが宣言される当該アクティビティより後で変数Vが有効であること、すなわち、当該アクティビティより後に変数Vのスコープがあること、が示される。また、変数Vの実体値Eが取得されることにより、当該変数Vが有効な範囲で、変数Vの実体値として実体値Eが参照可能に、第一格納領域R1に保持される。本実施例では、ステップS607で生成される変数宣言アクティビティActが実行されることにより、宣言される変数Vの実体値Eが取得されるため、少なくとも変数宣言アクティビティActより後の範囲である変数Vの有効な範囲で実体値Eが参照可能に、第一格納領域R1に保持される。
【0081】
図10Eに示すアクティビティAct(2)が部分実行対象のアクティビティActとして指定されるユーザ操作を受け付ける場合の、部分実行の制御を説明する。
【0082】
まず、
図10Eに示されるシナリオにおいて、アクティビティAct(1)は、シナリオ管理プログラム12以外のアプリケーションから値を取得する操作に対応する。アクティビティAct(1)は、当該操作において取得される値を変数V_tの実体値E_tとして取得し、実体値E_tは、第一格納領域R1に保持される。また、
図10Eに示されるシナリオにおいてアクティビティAct(2)は、値を処理する操作に対応し、アクティビティAct(1)に含まれる変数V_tを使用するアクティビティAct(2)である。換言すれば、アクティビティAct(2)は、実行部35により実行されるとき、変数V_tの実体値E_tとして、アクティビティAct(1)が実行されることにより第一格納領域R1に保持される実体値E_tを参照する、アクティビティである。なお、
図10Eに示されるアクティビティAct(1)は、変数V_tを宣言するため、当該アクティビティより後のアクティビティ、つまりアクティビティAct(2)以降に変数V_tのスコープがあることが示される。
【0083】
シナリオ実行操作部312は、アクティビティAct(2)が部分実行対象として指定されるユーザ操作を受け付けると、アクティビティ(2)に含まれる変数V_tを宣言する変数宣言アクティビティActを生成する。そしてシナリオ実行操作部312は、生成した変数V_tを宣言する変数宣言アクティビティActと、部分実行対象として指定されるアクティビティAct(2)とで構成される部分シナリオを生成し、当該部分シナリオの実行を指示するシナリオ実行指示Ceを実行部35に送る。したがって、シナリオ実行操作部312は、アクティビティAct(2)が部分実行対象として指定されるユーザ操作を受け付けると、アクティビティAct(2)に対応するアクティビティActが実行対象として指定されるシナリオ実行指示Ceとして、変数V_tの変数宣言アクティビティActとアクティビティAct(2)とを選択されたシナリオ実行指示Ceを実行部35に送る。このとき、変数V_tを宣言する変数宣言アクティビティActは、入力欄51に入力されたパスを参照して実体値E_tを取得するアクティビティAct(1)と異なり、第二格納領域R2に保持される実体値E_tを取得するアクティビティActである。すなわち、変数宣言アクティビティActは、第二格納領域R2に保持される実体値E_tを参照して、変数V_tの実体値E_tを第一格納領域R1に保持させるアクティビティActである。実行部35は、第二格納領域R2から読み出した実体値E_tを第一格納領域R1に保持させたあと、部分実行対象のアクティビティAct(2)の実行の際に第一格納領域R1に保持される当該実体値E_tを参照する。
【0084】
このように、シナリオ実行操作部312は、シナリオ表示欄45に表示されたシナリオを、ユーザから選択されたシナリオとして受け付けて、選択された当該シナリオに含まれるアクティビティActの選択を受け付ける(ステップS601)。さらに、シナリオ実行操作部312は、選択されたアクティビティActに対応するアクティビティAct(つまり、変数宣言アクティビティActおよび選択されたアクティビティAct)の実行を指示するシナリオ実行指示Ceを実行部35に送る。かかる構成では、シナリオに含まれる複数のアクティビティActのうちから選択したアクティビティActを部分的に実行して、当該アクティビティActの動作を確認することができる。
【0085】
シナリオ管理プログラム12以外のアプリケーションから値を取得する操作に対応し、当該値として変数Vの実体値Eを取得するアクティビティActと、当該変数Vを使用するアクティビティActと、を含むシナリオにおいて、当該変数Vを使用するアクティビティActは、第一格納領域R1に保持される実体値Eを参照するアクティビティActである。シナリオ実行操作部312は、部分実行対象として指定されるアクティビティActに第一格納領域R1に保持される実体値Eを参照するアクティビティActが含まれる場合、第二格納領域R2を参照して当該実体値Eを第一格納領域R1に保持させるアクティビティActを生成する。かかる構成では、実行部35は、第一格納領域R1に保持される実体値Eを参照せずに、部分実行対象として指定されるアクティビティActを実行することができる。例えば第一格納領域R1に保持される実体値Eが第二格納領域R1に保持される実体値Eに即時に反映されないなど、第一格納領域R1に保持される実体値Eと第二格納領域R2に保持される実体値Eとに差異がある場合に、第二格納領域R2の実体値Eを参照するアクティビティActを実行させることができる。
【0086】
また、シナリオ作成モードが終了し第一格納領域R1が解放された後など、第一格納領域R1に保持される実体値Eがない状態で、かつ、部分実行対象として指定されるアクティビティActに、第一格納領域R1に保持される実体値Eを参照するアクティビティActが含まれる一方、第一格納領域R1に実体値Eを保持させるアクティビティActが含まれない場合がある。この場合に、実行部35は、第一格納領域R1に保持される実体値Eを参照するアクティビティで使用される変数Vに関連付けて第二格納領域R2に保持される実体値Eを第一格納領域R1に保持させてから、第一格納領域R1に保持される実体値Eを参照するアクティビティActを実行する。このように、第二格納領域R2に保持された変数Vの実体値Eを活用することで、第一格納領域R1に実体値Eが保持されていない状態からでも、第一格納領域R1に保持される実体値Eを参照するアクティビティActを、シナリオに含まれる第一格納領域R1に実体値Eを保持させるアクティビティActを実行せずに部分的に実行できる。
【0087】
なお、本実施例においては、シナリオ実行操作部312により生成される、第二格納領域R2を参照して当該実体値Eを第一格納領域R1に保持させるアクティビティActは、部分実行対象として指定されるアクティビティActに追加して実行されるが、部分実行対象のアクティビティActに第一格納領域R1に実体値Eを保持させるアクティビティActが含まれる場合に、当該アクティビティActに代えて、シナリオ実行操作部312により生成される、第二格納領域R2に保持される実体値Eを参照して第一格納領域R1に保持させるアクティビティActが、実行されてもよい。かかる構成では、シナリオにおいて第一格納領域R1に実体値Eを保持させるアクティビティActを実行せずに、部分実行対象として指定されるアクティビティActを実行することができる。シナリオにおいて第一格納領域R1に実体値Eを保持させるアクティビティActが、実行環境に依存するアクティビティである場合に、実行環境に依存せず指定されるアクティビティActを実行することができる。また、シナリオにおいて第一格納領域R1に実体値Eを保持させるアクティビティActが実行に時間がかかるアクティビティである場合に、指定されるアクティビティActを実行するのにかかる時間を短縮することができる。さらに、シナリオにおいて第一格納領域R1に実体値Eを保持させるアクティビティActが外部に影響を与えるアクティビティである場合、外部に影響を与えることなく、指定されるアクティビティActを実行することができる。
【0088】
以上に説明するように本実施形態では、サーバ11のストレージ部111が本発明の「記録媒体」の一例に相当し、シナリオ管理プログラム12が本発明の「シナリオ管理プログラム」の一例に相当し、端末装置2が本発明の「シナリオ管理装置」および「コンピュータ」の一例に相当し、ディスプレイ243が本発明の「ディスプレイ」の一例に相当し、エディタ31が本発明の「管理部」の一例に相当し、シナリオ作成部33が本発明の「シナリオ作成部」の一例に相当し、実行部35が本発明の「実行部」の一例に相当し、監視部371が本発明の「監視部」の一例に相当し、保持部372が本発明の「保持部」の一例に相当し、アクティビティActが本発明の「アクティビティ」の一例に相当し、シナリオ実行指示Cgが本発明の「シナリオ実行指示」の一例に相当し、第一格納領域R1が本発明の「第一格納領域」の一例に相当し、第二格納領域R2が本発明の「第二格納領域」の一例に相当する。
【0089】
なお、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない限りにおいて上述したものに対して種々の変更を加えることが可能である。例えば、変数Vの実体値Eを第二格納領域R2に格納するタイミングは、シナリオ作成モードの実行時に限られず、変更してもよい。つまり、上記の実施形態では、シナリオ作成モードで実行部35がアクティビティActを実行した際に第一格納領域R1に取得された実体値Eが第二格納領域R2に格納されている。しかしながら、シナリオ作成モードの終了後であってシナリオ編集モードの開始前に、変数Vの実体値Eを第二格納領域R2に格納するように変更してもよい。この変形例では、作成済みのシナリオの実行を指示するシナリオ実行指示Ceがシナリオ実行操作部312から実行部35に送られて、当該シナリオのアクティビティActの実行によって第一格納領域R1に取得された実体値Eが、保持部372によって第二格納領域R2に保持される。
【0090】
つまり、シナリオ実行操作部312は、ユーザから作成済みのシナリオの実行を示すシナリオ実行操作を受け付け、受け付けたシナリオ実行操作に基づいてシナリオ実行指示Ceを実行部35に送る。かかる構成では、ユーザは、作成済みのシナリオを実行することで、当該シナリオに含まれるアクティビティActで使用される変数Vの実体値Eを取得して、第二格納領域R2に保持しておくことができる。そして、シナリオ編集モードにおいて、第二格納領域R2から読み出した実体値Eをディスプレイ243で確認できる。
【0091】
なお、変数Vの実体値Eを保持する第二格納領域R2の具体的構成は適宜変更できる。したがって、メモリ部22ではなく、ストレージ部23に第二格納領域R2を確保して、変数Vの実体値Eを当該第二格納領域R2に不揮発的に保持してもよい。すなわち、第二格納領域R2が不揮発性記憶素子であってもよい。
【0092】
また、アクティビティActの実行と実体値Eの保持とが別々のプロセス(実行プロセスおよび保持プロセス)で実行されることは必須ではない。したがって、保持部372は、実行部35がアクティビティActを実行する実行プロセスと同一のプロセスで、第一格納領域R1に取得される実体値Eを変数Vと関連付けて第二格納領域R2に保持させてもよい。かかる構成では、例えば
図5において、実行部35と保持部372とが一つの機能ブロックで実現され、当該機能ブロックは、変数Vが不要になったのに伴って第一格納領域R1を解放するとともに、第一格納領域R1の解放後においても第二格納領域R2を確保する。
【0093】
同様に、演算部21に構成される各機能ブロック(
図5)を別々のプロセスで実行する必要はない。したがって、エディタ31と実行部35とを別々のプロセスで実行せずに、これらを同一のプロセスで実行してもよい。あるいは、逆に、一の機能ブロックを複数に分割してもよい。例えば、エディタ31は、UI24へのユーザ操作を受け付ける機能を備える必要はなく、当該機能をエディタ31から分離して別のモジュールに担わせてもよい。
【0094】
また、
図5の機能ブロック31、33、35、37の全てを端末装置2の演算部21に構成する必要はなく、一部の機能ブロック(例えば、実行部35等)をサーバ11のプロセッサに構成してもよい。この場合、端末装置2とサーバ11とが協働して本発明の「シナリオ管理装置」として機能する。
【産業上の利用可能性】
【0095】
この発明は、ユーザがコンピュータを用いて実行していた作業を自動化することでユーザの作業負担の軽減を図るRPAの技術全般に適用可能である。
【符号の説明】
【0096】
11…サーバ
111…ストレージ部(記録媒体)
12…シナリオ管理プログラム
2…端末装置(シナリオ管理装置、コンピュータ)
243…ディスプレイ
311…編集操作部
33…シナリオ作成部
35…実行部
371…監視部
372…保持部
Act…アクティビティ
Cg…シナリオ実行指示
R1…第一格納領域
R2…第二格納領域