(57)【要約】【課題】ワークフローを容易に作成することを可能とする情報処理装置を提供する。【解決手段】本発明の情報処理装置は、ワークフローを作成および編集するワークフロー作成画面２０１を表示し、ワークフロー作成画面２０１に対するユーザの操作を検知する。ワークフロー作成画面２０１に対して、ワークフローパーツ２１１〜２２０を配置し、配置されたワークフローパーツを実行する順序に従い接続線で繋げることによりワークフローを作成および編集するための編集領域２０２の表示を更新する操作が行われたと検知されると、情報処理装置は、配置されたワークフローパーツであって、連続する２つのワークフローパーツ５０１および７０３のうち、ワークフローパーツ５０１の出力情報が、ワークフローパーツ７０３の入力情報の条件と合致しない場合、空領域８０４を挿入する。【選択図】図８
2019008666.tif 000002
【特許請求の範囲】
【請求項１】
所定の順序に従って所定の処理を実行するワークフローを作成および編集する画面を表示する表示制御手段と、
前記画面に対するユーザの操作を検知する検知手段と、を有し、
前記画面は、ワークフローを構成する各処理を表すパーツを配置し、配置されたパーツを実行する順序に従い接続線で繋げることにより前記ワークフローを作成および編集するための編集領域を含み、
前記検知手段により前記画面に対して前記編集領域の表示を更新する操作が行われたと検知されると、前記表示制御手段は、
前記配置されたパーツであって、連続する２つのパーツのうち、先に実行されるパーツの出力情報が、後に実行されるパーツの入力情報の条件と合致しない場合、該２つのパーツの間に、他のパーツが配置される必要があることを示す空領域を挿入する
ことを特徴とする情報処理装置。
【請求項２】
前記検知手段により前記画面に対して前記領域の表示を更新する操作が行われたと検知されると、前記表示制御手段は、
前記配置されたパーツのうち、先頭のパーツが、ワークフローによる処理の起点となる所定の条件を満たさない場合、前記先頭のパーツの前に、他のパーツが配置される必要があることを示す空領域を挿入する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記検知手段により前記画面に対して前記領域の表示を更新する操作が行われたと検知されると、前記表示制御手段は、
前記配置されたパーツのうち、最後尾のパーツが、ワークフローによる処理の終点となる所定の条件を満たさない場合、前記最後尾のパーツの後ろに、他のパーツが配置される必要があることを示す空領域を挿入する、
ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記画面は、ワークフローに配置することが可能なパーツの一覧を表示する領域を含み、
前記検知手段により前記画面に対して前記編集領域に表示されたパーツを選択する操作が行われたと検知されると、前記表示制御手段は、
前記選択されたパーツの前に配置されたパーツの出力情報と、前記選択されたパーツの後ろに配置されたパーツの入力情報とに基づき、前記一覧を表示する領域において、前記選択されたパーツの位置に配置することが可能なパーツか否かを、表示の順番および表示状態を変えて表示する
ことを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記検知手段により前記画面に対して前記編集領域に表示されたパーツを選択する操作が行われたと検知されると、前記表示制御手段は、
前記一覧を表示する領域において表示されるパーツのうち、該パーツの入力情報の条件と、前記選択されたパーツの前に配置されたパーツの出力情報が合致するか、または、前記一覧を表示する領域において表示されるパーツのうち、該パーツの出力情報が、前記選択されたパーツの後ろに配置されたパーツの入力情報の条件と合致するかの、少なくとも一方を満たすパーツを、前記一覧を表示する領域において上部に表示する
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記検知手段により前記画面に対して前記編集領域に表示されたパーツを選択する操作が行われたと検知されると、前記表示制御手段は、
前記一覧を表示する領域において表示されるパーツのうち、該パーツの入力情報の条件と、前記選択されたパーツの前に配置されたパーツの出力情報が合致するパーツに対して、前記一覧を表示する領域において、前記入力情報の条件と合致していることを示す第１の表示を行い、
前記一覧を表示する領域において表示されるパーツのうち、該パーツの出力情報が、前記選択されたパーツの後ろに配置されたパーツの入力情報の条件と合致するパーツに対して、前記一覧を表示する領域において、前記出力情報が合致していることを示す第２の表示を行う
ことを特徴とする請求項４または５に記載の情報処理装置。
【請求項７】
所定の順序に従って所定の処理を実行するワークフローを作成および編集する画面を表示する表示制御工程と、
前記画面に対するユーザの操作を検知する検知工程と、を有し、
前記画面は、ワークフローを構成する各処理を表すパーツを配置し、配置されたパーツを実行する順序に従い接続線で繋げることにより前記ワークフローを作成および編集するための編集領域を含み、
前記検知工程にて前記画面に対して前記編集領域の表示を更新する操作が行われたと検知されると、
前記表示制御工程にて、前記配置されたパーツであって、連続する２つのパーツのうち、先に実行されるパーツの出力情報が、後に実行されるパーツの入力情報の条件と合致しない場合、該２つのパーツの間に、他のパーツが配置される必要があることを示す空領域を挿入する
ことを特徴とする情報処理装置の制御方法。
【請求項８】
請求項７に記載の制御方法をコンピュータにより実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、制御方法、およびプログラムに関する。
【背景技術】
【０００２】
複数の操作や処理を一連の処理フローとしてコンピュータに実行させるワークフローシステムが知られている。ワークフローシステムを利用することによりオフィス業務における繰り返し実行される単純作業や定型化された作業を自動化し、作業にかかる負荷を省力化できる。
【０００３】
ワークフローシステムでは、所定の順序で所定の処理を実行するワークフローを構成する各処理をワークフローパーツ（アイコン）として表現する。ワークフローパーツを並べ、組み合わせることにより、ワークフローにおける処理とデータの流れを定義する。
【０００４】
特許文献１は、ワークフローのサブグループ化を行い、そのサブグループワークフローをエクスポートおよびインポートするワークフローエディタを開示している。さらに、特許文献１は、ワークフローエディタにおいて、インポートされたサブワークフローと入出力データとを接続する際に、サブワークフローと接続可能な入出力データであるかの接続性のチェックが行われることが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１１２３９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１で行われる接続性のチェックでは、あらかじめ作成されたサブワークフローの入力および出力それぞれについて接続可能な入出力データの構造体を保持している。すなわち、特許文献１での接続性のチェックは、ワークフローパーツを一から並べ、組み合わせてワークフローを初めから作成する場合については考慮されていない。
【０００７】
ワークフローシステムは、複雑であり、ワークフローを作成するには数多くのスキルが求められる。例えば、ワークフローシステムで使用される数多くのワークフローパーツのそれぞれの機能を理解する必要がある。また、ワークフローパーツのそれぞれが何を入力データとして受け付け、何を出力データとして差し出すか、すなわち各ワークフローパーツの入出力インタフェイスを理解する必要がある。
【０００８】
また、ワークフローの作成において、ワークフローパーツの各処理をどのような条件を満たしていれば実行するかまたは実行しないかを示す条件分岐や、並列処理などを設定することもありうる。このように、ワークフローの作成は、プログラミングに類する行為であり、プログラミングスキルのない者には困難な作業である。
【０００９】
本発明は、ワークフローを容易に作成することを可能とする情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一実施形態の情報処理装置は、所定の順序に従って所定の処理を実行するワークフローを作成および編集する画面を表示する表示制御手段と、前記画面に対するユーザの操作を検知する検知手段と、を有し、前記画面は、ワークフローを構成する各処理を表すパーツを配置し、配置されたパーツを実行する順序に従い接続線で繋げることにより前記ワークフローを作成および編集するための編集領域を含み、前記検知手段により前記画面に対して前記編集領域の表示を更新する操作が行われたと検知されると、前記表示制御手段は、前記配置されたパーツであって、連続する２つのパーツのうち、先に実行されるパーツの出力情報が、後に実行されるパーツの入力情報の条件と合致しない場合、該２つのパーツの間に、他のパーツが配置される必要があることを示す空領域を挿入する。
【発明の効果】
【００１１】
本発明の情報処理装置によれば、ワークフローを容易に作成することを可能とする。
【図面の簡単な説明】
【００１２】
【図１】情報処理装置の構成を示す図である。
【図２】ワークフロー作成画面の一例を示す図である。
【図３】ワークフローエディタの動作を説明するためのフローチャートである。
【図４】各ワークフローパーツの動作とインタフェイスを示す図である。
【図５】ワークフローエディタが表示する画面の一例である。
【図６】ワークフローエディタが表示する画面の一例である。
【図７】ワークフローエディタが表示する画面の一例である。
【図８】ワークフローエディタが表示する画面の一例である。
【図９】ワークフローエディタが表示する画面の一例である。
【図１０】ワークフローエディタが表示する画面の一例である。
【図１１】ワークフローエディタが表示する画面の一例である。
【図１２】ワークフローエディタが表示する画面の一例である。
【図１３】ワークフローエディタが表示する画面の一例である。
【図１４】ワークフローエディタが表示する画面の一例である。
【図１５】ワークフローエディタの動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態について図面などを参照して説明する。
【００１４】
（第１実施形態）
図１は、本発明の一実施形態に係る情報処理装置の構成を示す図である。
図１に示す情報処理装置は、ＣＰＵ１０１、メモリ１０２、表示部１０３、入力装置１０４、記憶装置（ＨＤＤ／ＳＤＤ）１０５、通信部１０６、およびバス１１０を備える。
【００１５】
ＣＰＵ１０１は、情報処理装置の制御を司る制御部である。ＣＰＵ１０１は、キーボードやマウス等の入力装置１０４等を介してユーザからの指示を受け付け、それに基づき後述するワークフローエディタ等の各種プログラムを実行し、表示部１０３の表示制御を行う。記憶装置１０５には、ＣＰＵ１０１の動作処理手順、例えば、コンピュータの立ち上げ処理や基本入出力処理、後述するワークフローエディタ等が記憶されている。また、記憶装置１０５は、各種プログラムの実行により作成されたデータや、処理対象とするデータ等を記憶する。
【００１６】
メモリ１０２は、ＣＰＵ１０１のメインメモリとして機能する。メモリ１０２は、各種プログラム実行中のデータやプログラムを一時記憶し、作業領域として用いられる。通信部１０６は、他のデバイスやコンピュータと通信するために用いられる。表示部１０３には、後述するワークフローエディタの画面が表示される。上述した情報処理装置の各構成要素は、バス１１０を介して相互に接続されている。
【００１７】
なお、本実施形態に係る情報処理装置は、例えば、ＰＣ、サーバ装置、複合機等のデバイスである。また、例えば、クラウドサーバが、後述するワークフローエディタによるワークフローの編集機能をサービスとして登録し、任意のクライアント装置である情報処理装置が外部ネットワークを介して該サービスを利用する形態であってもよい。また、ワークフローを作成する情報処理装置は、該作成されたワークフローを実行するワークフローシステムに含まれていてもよく、また含まれていなくてもよい。
【００１８】
図２は、本実施形態に係るワークフロー作成画面の一例を示す図である。
ワークフロー作成画面２０１は、ワークフローエディタを実行することにより表示される。ワークフローエディタでは、一連の処理を構成する各処理をパーツ（アイコン）として表現する。このパーツをワークフローパーツと呼ぶ。
【００１９】
例えば、ＦＡＸを受信した際に、その受信データをある特定のファイルサーバの特定のフォルダにＰＤＦ形式のファイルとして保存する一連の処理を考える。また、この一連の処理では、ファイルに保存する際には、ＦＡＸを受信した日時をファイル名とする。上述した一連の処理は、以下の処理から構成される。
【００２０】
上述した一連の処理は、以下の５つの構成要素となる処理に分解できる。「ＦＡＸを画像データとして受信する」、「画像データをＰＤＦファイルに変換する」、「受信日時を指定文字列として取り出す」、「指定文字列をＰＤＦファイルのファイル名とする」、および「ファイルサーバの指定フォルダにＰＤＦファイルを移動する」。
【００２１】
ワークフローエディタでは、これら構成要素がワークフローパーツとして表現される。このように、ワークフローパーツを並べ、組み合わせて、処理とデータの流れを定義したワークフローを作成する。ワークフローを実行することにより、一連の処理を構成する所定の処理が所定の順序に従って実行される。
【００２２】
ワークフロー作成画面２０１では、ワークフローパーツを一覧表示する領域２０２、およびワークフローパーツを並べ、組み合わせることによりワークフローを作成する編集領域２０３を備える。領域２０２では、スクロールや領域サイズの変更が可能であり、一覧表示するワークフローパーツの種類や個数を変更できる。ワークフローパーツ２１１〜２１７は、領域２０２に一覧表示されるワークフローパーツの一例である。
【００２３】
なお、図２に示したワークフローパーツは一例であり、これに限られるものではない。ワークフローパーツは、作成されるワークフローやワークフローシステムに応じて異なる場合がある。編集領域２０３では、ワークフローパーツを配置し、各ワークフローパーツを矢印（接続線）で繋ぐことにより、処理および各処理の順序を定義したワークフローが作成される。
【００２４】
各ワークフローパーツを繋げる矢印により、ワークフローパーツの示す処理を実行する順序が決まる。具体的には、矢印の始点から終点の向きに処理は実行される。図２に示す例では、スキャン２２１が一連の処理の起点となり、ＯＣＲ２２２、特定文字座標検出２２３、の順に処理が実行されることを示している。矢印は、編集領域２０３に配置された各ワークフローパーツの座標に応じてワークフローエディタが自動的に繋げてもよく、また、ユーザが手動で所望の順番に繋げてもよい。
【００２５】
図３は、ワークフローエディタの動作を説明するためのフローチャートである。
詳細には、図３では、ワークフロー作成画面において、ユーザによる編集領域２０３の表示を更新する操作を検知した場合のワークフローエディタの動作を説明する。ワークフローエディタは、ＣＰＵ１０１により実行される。なお、編集領域２０３の表示を更新する操作とは、領域２０２から編集領域２０３へワークフローパーツを追加した場合や、配置済みのワークフローパーツの配置を変更した場合、編集領域２０３からワークフローパーツを削除した場合などの操作を指す。
【００２６】
ステップＳ３０１にて、ワークフローエディタは、編集領域２０３に配置済みのワークフローパーツを、矢印で繋がれた順にリストとして取得する。ステップＳ３０２にて、ワークフローエディタは、ステップＳ３０１にて取得したリストから処理対象として、先頭の、すなわちワークフローの起点となる位置に配置されたワークフローパーツを取得する。
【００２７】
そして先頭のワークフローパーツが、ワークフローによる処理の起点となりうるワークフローパーツか判定する。処理の起点となりうるワークフローパーツとは、該ワークフローパーツの処理により、ワークフローが示す一連の処理を開始できることである。各ワークフローパーツが処理の起点となりうるか否かの詳細については、図４を用いて説明する。
【００２８】
ステップＳ３０２にて先頭のワークフローパーツが処理の起点となりうると判定された場合、処理はステップＳ３０４に進み、処理の起点となりえないと判定された場合、処理はステップＳ３０３に進む。ステップＳ３０３にて、ワークフローエディタは、編集領域２０３に配置済みのワークフローパーツの先頭に空領域を挿入して表示する。
【００２９】
空領域とは、例えば、図６の６０２のようなワークフローパーツのことであり、編集領域２０３に表示されているワークフローでは、処理の起点となりうるワークフローパーツが欠けていることを表している。これにより、ユーザは、処理の起点となりうる何等かの処理をワークフローに追加する必要があることがわかる。
【００３０】
ステップ３０４にて、ワークフローエディタは、リストにおいて処理対象のワークフローパーツに続くワークフローパーツがあるか判定する。次のワークフローパーツがあると判定された場合、処理はステップＳ３０５に進み、次のワークフローパーツがないと判定された場合、処理はステップＳ３０９に進む。ステップＳ３０５にて、ワークフローエディタは、処理対象のワークフローパーツに続くワークフローパーツをステップＳ３０１にて取得したリストから取得する。
【００３１】
そして、ステップ３０６にて、ワークフローエディタは、処理対象のワークフローパーツと、該ワークフローパーツに続くワークフローパーツとの出力情報と入力情報のインタフェイスが一致するか判定する。詳細には、ワークフローエディタは、連続する２つのワークフローパーツのうち、処理の上流にあるワークフローパーツの出力情報と、処理の下流にあるワークフローパーツの入力情報のインタフェイスが一致するか判定する。
【００３２】
なお、出力情報と入力情報のインタフェイスが一致するインタフェイスが一致するとは、入力情報とするデータの属性（タイプ）と一致するデータが、出力情報として出力されることである。データの属性は、例えば、データのメタ情報としてデータに付与されるが、これに限られるものではない。
【００３３】
また、出力情報として出力されるデータが複数ある場合、入力情報とするデータの属性が一致するデータが少なくとも出力されていれば、他の属性のデータが出力情報に含まれていても、出力情報と入力情報のインタフェイスが一致するものとする。ただし、入力情報と出力情報の属性が完全に一致する場合のみ、出力情報と入力情報のインタフェイスが一致するとしてもよい。
【００３４】
連続する２つのワークフローパーツの出力情報および入力情報のインタフェイスが一致すると判定された場合、処理はステップＳ３０４に戻る。そして、ワークフローエディタは、処理対象をステップＳ３０５で取得したワークフローパーツとして、それに続くワークフローパーツがあるか判定（ステップＳ３０４）し、以降、上述した各ステップの処理を繰り返す。一方、連続する２つのワークフローパーツの出力情報および入力情報のインタフェイスが一致しないと判定された場合、処理はステップＳ３０７に進む。
【００３５】
ステップＳ３０７にて、ワークフローエディタは、連続する２つのワークフローパーツの間に空領域を挿入して表示する。これにより、ユーザは、ワークフロー作成画面２０１にて、連続する２つの処理として並べたワークフローパーツの、入出力インタフェイスが一致しておらず、直接繋げることができないことがわかる。そして、何等かの処理をワークフローに追加する必要があることがわかる。
【００３６】
ステップＳ３０７の処理が完了すると、処理は、ステップステップ３０４に戻る。そして、ワークフローエディタは、処理対象をステップＳ３０５で取得したワークフローパーツとして、それに続くワークフローパーツがあるか判定（ステップＳ３０４）し、以降、上述した各ステップの処理を繰り返す。
【００３７】
ステップＳ３０９にて、ワークフローエディタは、リストから処理対象のワークフローパーツがワークフローによる処理の終点となりうるワークフローパーツか判定する。これは、ステップＳ３０９で処理対象となるワークフローパーツが、ステップＳ３０４の判定において、続くワークフローパーツがないと判定されたことによる。処理対象のワークフローパーツが編集領域２０３に表示されたワークフローの最後尾の位置に配置されたワークフローパーツであることがわかる。
【００３８】
そこで、最後尾のワークフローパーツが処理の終点となりうるワークフローパーツか判定する。終点となりうるワークフローパーツとは、該ワークフローパーツの処理により、ワークフローが示す一連の処理を完了できることである。例えば、一連の処理の結果が所定の場所に出力されるような場合である。各ワークフローパーツが処理の終点となりうるか否かについての詳細は、図４を用いて説明する。
【００３９】
ステップＳ３０９にて最後尾のワークフローパーツが処理の終点となりうると判定された場合、処理はステップＳ３１１に進み、処理の終点となりえないと判定された場合、処理はステップＳ３１０に進む。ステップ３１０にて、ワークフローエディタは、編集領域２０３に配置済みのワークフローパーツの最後尾に空領域を挿入して表示する。これにより、ユーザは、処理の終点となりうる何等かの処理をワークフローに追加する必要があることがわかる。
【００４０】
ステップ３１１にて、ワークフローエディタは、ユーザの入力を受け付ける。ステップＳ３１２にて、ワークフローエディタは、ユーザの入力が完了入力であるか編集領域２０３におけるワークフローパーツの表示の更新かを判定する。ユーザの入力が完了入力の場合、図３に示す処理を終了する。また、ユーザの入力が編集領域２０３におけるワークフローパーツの表示の更新の場合、処理はステップ３０１に戻り、以降の処理を繰り返す。
【００４１】
図４は、各ワークフローパーツの動作とインタフェイスについて説明する図である。
ワークフローエディタは、図４に示すデータを有し、図３や図１５に示す処理を実行する際に該データを参照する。ワークフローパーツのインタフェイスとは、そのワークフローパーツが必要とする入力情報およびワークフローパーツの処理が終了した際に出力される出力情報である。出力情報は、続くワークフローパーツに受け渡される。なお、図４に示す例は、動作やインタフェイスを単純化した例であり、実際にはより詳細に規定される場合がありうる。
【００４２】
図４に示す例では、各ワークフローパーツの「入力情報」を参照することにより、そのワークフローパーツがワークフローによる処理の起点になりうるか判定できる。例えば、本実施形態では、「入力情報」に、「起点」が含まれている場合に、そのワークフローパーツが処理の起点となりうる。
【００４３】
例えば、「１．１：スキャン」というワークフローパーツを用いることにより、コピー機や複合機を含むワークフローシステムにおいて、ユーザの操作によりスキャン処理が開始されたことを契機として開始されるワークフローを作成できる。なお、各ワークフローパーツがどのような条件で処理の起点となりうるか、またどのような種類のワークフローパーツが起点となりうるかは、ワークフローシステムの目的により変化するため、図４に示す例に限られるものではない。
【００４４】
また一方、図４に示す例では、各ワークフローパーツの「出力情報」を参照することにより、そのワークフローパーツがワークフローによる処理の終点になりうるか判定できる。例えば、本実施形態では、「出力情報」に、「終点」が含まれている場合に、そのワークフローパーツが処理の終点となりうる。例えば、「７．１：フォルダ保存」、「８．１：メール送信、および「１０．１：ＦＡＸ送信」というワークフローパーツを用いることにより、それぞれワークフローによる一連の処理を完了できる。
【００４５】
詳細には、「７．１：フォルダ保存」というワークフローパーツを用いることにより、「７．１：フォルダ保存」よりも上流のワークフローパーツが示す処理に応じて生成されたファイルを、所定のファイルシステムの所定のフォルダに保存することができる。すなわち、ワークフローによる処理の結果が電子データとして確定し、保存されたことを契機として完了するワークフローを作成できる。
【００４６】
なお、各ワークフローパーツがどのような条件で処理の終点となりうるか、またどのような種類のワークフローパーツが終点となりうるかは、ワークフローシステムの目的により変化するため、図４に示す例に限られるものではない。
【００４７】
図４において、入力情報に「起点」または出力情報に「終点」を含まないその他のワークフローパーツは、起点でも終点でもない処理を表す。これらのワークフローパーツは、自身よりも上流（入力側）において繋がる前のワークフローパーツから情報を受け取り、何等かの処理を実行し、その結果を自身よりも下流（出力側）において繋がる後ろのワークフローパーツに受け渡す。
【００４８】
例えば、「２．１：画像ノイズ除去」というワークフローパーツは、前のワークフローパーツから入力情報として「２．２：画像ファイル」を受け取る。また、「２．１：画像ノイズ除去」というワークフローパーツは、後のワークフローパーツへ出力情報として「２．３：処理済画像ファイル」を受け渡す。
【００４９】
なお、「入力情報」において「（設定）」を含むワークフローパーツは、該ワークフローを実行した際に、ユーザからの入力を受け付けることを表している。例えば、「７．１：フォルダ保存」というワークフローパーツの「入力情報」には、「７．２：任意のファイル、フォルダ位置（設定）」と記載されている。これは、前のワークフローパーツから入力情報として「任意のファイル」を受け取るとともに、受け取った「任意のファイル」を保存するフォルダ位置をユーザに指定させるためにユーザからの入力を受け付けることを表している。
【００５０】
ユーザからの入力は、ワークフローシステムのユーザインタフェイスを用いて行われる。言い換えると、「（設定）」という文言を含む入力情報は、自身の前に実行される処理に対応するワークフローパーツから入力される情報ではないといえる。なお、入出力情報の種類は、ワークフローシステムによってワークフローパーツごとに詳細に定義される。
【００５１】
また、上述した入力情報や出力情報は一例であって、これに限られるものではない。各ワークフローパーツがどのような入力情報を必要とするか、どのような出力情報を出力するか等の条件、およびどのような種類のワークフローパーツがあるかは、ワークフローシステムの目的により変化する。
【００５２】
図５〜図１１は、ワークフローエディタが表示する画面の一例である。
ワークフロー作成画面２０１上にてユーザが操作を行うと、ワークフローエディタが図３に示した処理に従ってワークフロー作成画面２０１の表示を制御する。図５〜図１１は、その様子を説明した図である。
【００５３】
図５は、ユーザがワークフロー作成画面２０１において、領域２０２からワークフローパーツ２１１（「スキャン」）を編集領域２０３に配置したときの図である。編集領域２０３に配置されたワークフローパーツ２１１をワークフローパーツ５０１とする。なお、領域２０２からワークフローパーツを編集領域２０３に配置するには、例えば、ワークフローパーツを領域２０２から編集領域２０３へドラッグアンドドロップすることにより可能であるが、これに限られるものではない。ここでは、操作方法を限定するものではない。
【００５４】
図６は、ワークフローエディタがユーザによる図５の操作に応じて図３の処理を実行した後の図である。図５において編集領域２０３に配置されたワークフローパーツ５０１は、「スキャン」であり、図４を参照すると、「スキャン」は、起点となりうるワークフローパーツであることがわかる。ワークフローエディタが、図３のフローチャートに従って処理を実行すると、ステップＳ３０２の処理において、先頭のワークフローパーツが処理の起点となりうると判定される。
【００５５】
このため、ステップＳ３０３の処理は実行されず、図６において、ワークフローパーツ５０１（「スキャン」）の前に空領域は挿入されず、ワークフローパーツ５０１は、先頭のワークフローパーツのままである。次に、ステップＳ３０４の処理において、ワークフローパーツ５０１に続くワークフローパーツがないと判定され、処理はステップＳ３０９に進む。
【００５６】
ステップ３０９の処理では、処理対象となる最後尾のワークフローパーツは、ワークフローパーツ５０１（「スキャン」）であり、図４を参照すると、「スキャン」は、終点となりえないワークフローパーツであることがわかる。このため、ステップＳ３０９の処理において、最後尾のワークフローパーツが処理の終点となりえないと判定される。このため、ステップＳ３１０の処理が実行され、図６において、ワークフローパーツ５０１（「スキャン」）の後ろ、すなわちワークフローの最後尾に空領域６０２が挿入される。
【００５７】
図７は、図６に続いて、ユーザが、編集領域２０３の空領域６０２に対して領域２０２からワークフローパーツ２１６（「墨消し」）を配置する際の図である。編集領域２０３に配置されたワークフローパーツ２１６をワークフローパーツ７０３とする。
【００５８】
図８は、ワークフローエディタがユーザによる図７の操作に応じて図３の処理を実行した後の図である。
ワークフローエディタが、図３のフローチャートに従って処理を実行すると、ステップＳ３０６において、連続する２つのワークフローパーツの出力情報および入力情報のインタフェイスが一致しないと判定される。
【００５９】
詳細には、図７において編集領域２０３に配置されたワークフローパーツ７０３は、「墨消し」である。この場合、連続する２つのワークフローパーツとは、ワークフローパーツ５０１（「スキャン」）とワークフローパーツ７０３（「墨消し」）のことである。図４を参照すると、「墨消し」の入力情報は、「座標情報、画像ファイル」であり、「スキャン」の出力情報は、「スキャン済み画像ファイル」、すなわち画像ファイルのみである。
【００６０】
よって、ステップＳ３０６において、連続する２つのワークフローパーツの出力情報および入力情報のインタフェイスが一致しないと判定される。このため、ステップＳ３０７の処理が実行され、図８において、ワークフローパーツ５０１（「スキャン」）とワークフローパーツ７０３（「墨消し」）の間に空領域８０４が挿入される。
【００６１】
また、ワークフローエディタが、図３のフローチャートに従って処理を実行すると、ステップＳ３０９において、処理対象となる最後尾のワークフローパーツは、ワークフローパーツ７０３（「墨消し」）である。図４を参照すると、「墨消し」は、終点となりえないワークフローパーツであることがわかる。このため、ステップＳ３０９の処理において、最後尾のワークフローパーツが処理の終点となりえないと判定される。以降の処理は、図６における空領域６０２が挿入される場合と同様のため、その説明を省略する。
【００６２】
図９は、図８に続いて、ユーザが編集領域２０３の空領域８０４に対して領域２０２からワークフローパーツ２１５（「特定文字座標検索」）を配置する際の図である。編集領域２０３に配置されたワークフローパーツ２１５をワークフローパーツ９０５とする。
【００６３】
図１０は、ワークフローエディタがユーザによる図９の操作に応じて図３の処理を実行した後の図である。ワークフローエディタが、図３のフローチャートに従って処理を実行すると、ステップＳ３０６において、連続する２つのワークフローパーツの出力情報および入力情報のインタフェイスが一致しないと判定される。
【００６４】
詳細には、図９において編集領域２０３に配置されたワークフローパーツ９０５は、「特定文字座標検索」である。この場合、連続する２つのワークフローパーツは、ワークフローパーツ５０１（「スキャン」）とワークフローパーツ９０５（「特定文字座標検索」）のことである。図４を参照すると、「特定文字座標検索」の入力情報は、「文字情報＋座標情報、文字列フォーマット（設定）、画像ファイル」であり、「スキャン」の出力情報は、「スキャン済み画像ファイル」、すなわち画像ファイルのみである。
【００６５】
なお、上述したように、「（設定）」を含む項目は、矢印で繋がれた前のワークフローパーツから入力される情報ではないため、インタフェイスが一致するか否かの判定において考慮する必要はない情報である。しかし、「特定文字座標検索」の入力情報として「文字情報＋座標情報」が依然不足しており、ステップＳ３０６において、連続する２つのワークフローパーツの出力情報および入力情報のインタフェイスが一致しないと判定される。
【００６６】
このため、ステップＳ３０７の処理が実行され、図１０において、ワークフローパーツ５０１（「スキャン」）とワークフローパーツ９０５（「特定文字座標検索」）の間に空領域１００６が挿入される。なお、図３の処理を実行するにあたり、ステップＳ３０１にて、図９における編集領域２０３に配置済みのワークフローパーツが矢印で繋がれた順にリストとして取得されている。
【００６７】
このリストに従って図３の処理を順に実行すると、処理対象がワークフローパーツ９０５（「特定文字座標検索」）の際に、ステップＳ３０６において、連続する２つのワークフローパーツの出力情報および入力情報のインタフェイスは一致すると判定される。これは、処理対象がワークフローパーツ９０５（「特定文字座標検索」）の場合、連続する２つのワークフローパーツは、ワークフローパーツ９０５（「特定文字座標検索」）とワークフローパーツ７０３（「墨消し」）のことである。
【００６８】
そして、図４を参照すると、「特定文字座標検索」の出力情報は、「座標情報、画像ファイル」であり、「墨消し」の入力情報は、「座標情報、画像ファイル」であることからインタフェイスが一致するためである。そこで、２つのワークフローパーツの間には空領域が挿入されないままである。また、空領域６０２については、図８で説明した場合と同様であるため、その説明を省略する。
【００６９】
図１１は、完成したワークフローの一例を示す図である。
上述したように、編集領域２０３の空領域に領域２０２からワークフローパーツを配置し、空領域を埋める操作を繰り返すことでワークフローは作成される。図１１に示すように、矢印で繋がった２つのワークフローパーツ間の出力情報および入力情報のインタフェイスの整合性が取れると、ワークフローが完成する。
【００７０】
なお、本実施形態では、１つのワークフローパーツが１つのワークフローパーツへ１対１で繋がるワークフローの例を図示したが、これに限られるものではない。例えば、複数のワークフローパーツが１つのワークフローパーツと繋がる場合、すなわち複数のワークフローパーツの出力情報を１つのワークフローパーツの入力情報とする場合にも本発明は適用できる。また、１つのワークフローパーツが複数のワークフローパーツと繋がる場合、すなわち１つのワークフローパーツの出力情報を複数の異なるワークフローパーツの入力情報とする場合にも本発明は適用できる。
【００７１】
（第２実施形態）
図１２〜図１４は、第２実施形態に係るワークフローエディタが表示する画面の一例である。
第１実施形態では、ユーザが領域２０２から編集領域２０３へワークフローパーツを配置する際のワークフローエディタの動作について説明した。本実施形態では、編集領域２０３において、ユーザが空領域を選択した場合のワークフローエディタの動作について説明する。
【００７２】
図１２は、図６に示したワークフロー作成画面おいて、ユーザが空領域６０２を選択状態にしたときの図である。なお、編集領域２０３上の空領域６０２やその他のワークフローパーツを選択状態とする方法は、特に限定するものではない。本実施形態では、例えば、空領域６０２やその他のワークフローパーツに対してクリック等の操作を行うことにより選択状態とすることができる。
【００７３】
空領域６０２を選択状態とすると、図１２に示すように、空領域６０２の周囲が太枠１２０１で囲まれ、選択状態であることを示す状態となる。また、空領域６０２を選択状態にすると、領域２０２の領域２０２の表示が更新され、図１２に示すように、領域２０２上のワークフローパーツの表示の順番と各ワークフローパーツの表示状態とが変化する。
【００７４】
詳細には、選択状態の空領域６０２に配置することに適しているワークフローパーツが領域２０２の上部に配置され、各ワークフローパーツの枠線等の表示状態が変化する。なお、配置することに適しているワークフローパーツとは、編集領域２０３において、空領域にそのワークフローパーツを配置した場合に、入出力インタフェイスの整合性が取れた状態となるワークフローパーツのことである。
【００７５】
例えば、図１２において、空領域６０２の前（入力側）において繋がるワークフローパーツ５０１は、「スキャン」であり、図４を参照すると、「スキャン」の出力情報は、「スキャン済み画像ファイル」、すなわち「画像ファイル」である。そこで、ワークフローエディタは、領域２０２において、空領域６０２に配置することに適しているワークフローパーツをユーザが選択しやすいように、画像ファイルを入力情報とするワークフローパーツを領域２０２の上部に配置する。
【００７６】
また一方、ワークフローエディタは、空領域６０２にそのまま配置するには適さない、すなわち画像ファイルを入力情報としないワークフローパーツを領域２０２の下部に配置する。また、下部に配置するワークフローパーツについては、例えば、目立たないような表示状態に変更してもよい。例えば、ワークフローパーツを薄く表示したり、図１２に示すようにワークフローパーツの周囲を点線で表示したりしてもよい。これにより、ユーザは、選択状態の空領域６０２に配置するに適しているワークフローパーツか否かを領域２０２における表示の順番や表示の状態から判断できる。
【００７７】
さらに、図１２に示すように、領域２０２において、各ワークフローパーツを選択状態の空領域に配置した際に、各ワークフローパーツの入力情報および出力情報が空領域と適合するか否かを、ワークフローパーツを囲む枠線で表してもよい。例えば、ワークフローパーツ２１３、２１４、２１７〜２２０は、それぞれ枠線の上部に太線が引かれている。これは、ワークフローパーツを選択状態の空領域６０２に配置した際に、該ワークフローパーツの入力側のインタフェイスが選択状態の空領域６０２の入力側のインタフェイスと一致していることを示している。
【００７８】
空領域６０２の入力側のインタフェイスとは、すなわち、空領域６０２の前（入力側））において繋がるワークフローパーツ（ここではワークフローパーツ５０１）の出力情報のことである。また、空領域６０２の入力側のインタフェイスが一致するとは、空領域６０２に配置するワークフローパーツの入力情報とするデータの属性と一致するデータが、空領域６０２の前において繋がるワークフローパーツにより出力情報として出力されることである。
【００７９】
なお、出力情報として出力されるデータが複数ある場合、空領域６０２に配置するワークフローパーツの入力情報とするデータの属性が一致するデータが少なくとも出力されていれば、空領域の入力側のインタフェイスが一致するものとする。ただし、入力情報と出力情報の属性が完全に一致する場合のみ、空領域の入力側のインタフェイスが一致するとしてもよい。なお、本実施形態では、１つのワークフローパーツが１つのワークフローパーツへ１対１で繋がるワークフローの例について説明するが、第１実施形態の場合と同様に、これに限られるものではない。
【００８０】
また一方、ワークフローパーツ２１８〜２２０は、それぞれ枠線の下部に太線が引かれている。これは、ワークフローパーツを選択状態の空領域６０２に配置した際に、該ワークフローパーツの出力側のインタフェイスが選択状態の空領域６０２の出力側のインタフェイスと一致していることを示している。
【００８１】
空領域６０２の出力側のインタフェイスとは、すなわち、空領域６０２の後ろ（出力側）において繋がるワークフローパーツの入力情報のことである。また、空領域６０２の出力側のインタフェイスが一致するとは、空領域６０２の後ろにおいて繋がるワークフローパーツの入力情報とするデータの属性と一致するデータが、空領域６０２に配置するワークフローパーツの出力情報として出力されることである。
【００８２】
図１２に示す例では、空領域６０２の後ろに続くワークフローパーツはなく、空領域６０２は最後尾のワークフローパーツである。このため、空領域６０２の出力側のインタフェイスが一致するとは、空領域６０２に配置するワークフローパーツが処理の終点となりうることである。ワークフローパーツ２１８〜２２０は、処理の終点となりうるため、空領域６０２の出力側のインタフェイスが一致し、それぞれ枠線の下部に太線が引かれている。
【００８３】
なお、図１２では、空領域６０２の入力側のインタフェイスが一致するワークフローパーツを領域２０２の上部に配置したが、入力側および出力側のインタフェイスが一致するワークフローパーツをより上部に配置されるようにしてもよい。すなわち、ワークフローパーツ２１８〜２２０を、ワークフローパーツ２１２、２１３、２１４、２１７より上部に配置されるようにしてもよい。
【００８４】
また、空領域６０２の後ろ（出力側）において繋がるワークフローパーツが、選択中の空領域６０２に加えて他のワークフローパーツからも矢印で繋がれている場合もありうる。この場合、空領域６０２の後ろ（出力側）において繋がるワークフローパーツの全ての入力情報が空領域６０２に配置するワークフローパーツから与えられる必要はない。例えば、空領域６０２の後ろ（出力側）において繋がるワークフローパーツの入力情報のうち少なくとも１つが、空領域６０２に配置するワークフローパーツから与えられればよい。
【００８５】
図１３は、図８に示したワークフロー作成画面において、ユーザが空領域８０４を選択状態にしたときの図である。空領域８０４を選択状態とすると、図１３に示すように、空領域８０４の周囲が太枠１３０１で囲まれ、選択状態であることを示す状態となる。そして、図１２の場合と同様に、空領域８０４に配置することに適しているワークフローパーツが領域２０２の上部に配置され、領域２０２の各ワークフローパーツの表示状態が変化する。
【００８６】
図１２と図１３との違いは、空領域８０４の後ろ（出力側）にワークフローパーツ７０３（「墨消し」）が配置されていることである。図１２では、ワークフローパーツ５０１（「スキャン」）とインタフェイスが一致するワークフローパーツが領域２０２の上部に配置されていた。図１３では、それに加えて、ワークフローパーツ７０３（「墨消し」）とインタフェイスが一致するワークフローパーツが領域２０２の上部に配置される。
【００８７】
具体的には、図１２で領域２０２の上部に配置されていたワークフローパーツに加えて、ワークフローパーツ２１５（「特定文字座標検索」）が領域２０２の上部に配置されている。ワークフローパーツ２１５の下部には、太線が引かれている。これは、ワークフローパーツ２１５を選択状態の空領域８０４に配置した際に、ワークフローパーツ２１５の出力側のインタフェイスが選択状態の空領域８０４の出力側のインタフェイスが一致しているためである。
【００８８】
なお、領域２０２における表示は、ユーザがワークフローを作成する際の自由な操作を妨げるものではない。すなわち、図１２や図１３において、領域２０２の下部に配置されたワークフローパーツであっても、ユーザは、編集領域２０３に自由にそれらのワークフローパーツを配置することができる。
【００８９】
図１４は、図１２に続いて、ユーザが編集領域２０３の空領域６０２に対して領域２０２の下部からワークフローパーツ２１６（「墨消し」）を配置する際の図である。
このように、ユーザは、空領域６０２のインタフェイスが一致しないワークフローパーツであっても、自由にそのワークフローパーツを編集領域２０３に配置することができる。図１４の操作が行われると、ワークフローエディタは、図３の処理を実行し、上述したように、ワークフロー作成画面は図８に示した状態となる。
【００９０】
図１５は、ワークフローエディタの動作を説明するためのフローチャートである。
詳細には、図１５では、ワークフロー作成画面において、図１２〜図１４に示したように、ユーザによる編集領域２０３の空領域を選択状態とする操作を検知した場合のワークフローエディタの動作を説明する。
【００９１】
ステップ１５０１にて、ワークフローエディタは、ユーザの入力を受け付ける。ステップＳ１５０２にて、ワークフローエディタは、ユーザの入力が編集領域２０３に配置済みのワークフローパーツの選択かを判定する。ユーザの入力が編集領域２０３に配置済みのワークフローパーツの選択でない場合、処理はステップＳ１５０１に戻り、ユーザからの入力があるまで待機する。一方、ユーザの入力が編集領域２０３に配置済みのワークフローパーツの選択の場合、処理はステップＳ１５０３に進む。
【００９２】
ステップ１５０３にて、ワークフローエディタは、選択されたワークフローパーツの前にワークフローパーツがあるか判定する。言い換えると、ワークフローエディタは、選択されたワークフローパーツの入力側において他のワークフローパーツが繋がっているか判定する。選択されたワークフローパーツの前にワークフローパーツがある場合、処理はステップＳ１５０４に進み、選択されたワークフローパーツの前にワークフローパーツがない場合、処理はステップＳ１５０５に進む。
【００９３】
ステップ１５０４にて、ワークフローエディタは、選択されたワークフローパーツの入力側において繋がっているワークフローパーツの出力情報の属性を、該選択されたワークフローパーツの「入力情報フィルタ」に設定する。ステップ１５０５にて、ワークフローエディタは、選択されたワークフローパーツの「入力情報フィルタ」に「任意」と設定する。これは、選択されたワークフローパーツには、入力側において繋がるワークフローパーツがないため、入力側において満たす条件はなく、どのような入力情報を有していてもよい、ということを示している。
【００９４】
なお、ここで、入力側において繋がるワークフローパーツがないということは、選択されたワークフローパーツがワークフローにおいて先頭のワークフローパーツとなりうる。このため、「入力情報フィルタ」を「起点」として、処理の起点となりうるワークフローフィルタを入力側において満たすべき条件としてもよい。
【００９５】
ステップ１５０６にて、ワークフローエディタは、選択されたワークフローパーツの後ろに続くワークフローパーツがあるか判定する。言い換えると、ワークフローエディタは、選択されたワークフローパーツの出力側において他のワークフローパーツが繋がっているか判定する。選択されたワークフローパーツの後ろに続くワークフローパーツがある場合、処理はステップＳ１５０７に進み、選択されたワークフローパーツの後ろに続くワークフローパーツがない場合、処理はステップＳ１５０８に進む。
【００９６】
ステップ１５０７にて、ワークフローエディタは、選択されたワークフローパーツの出力側において繋がっているワークフローパーツの入力情報の属性を、該選択されたワークフローパーツの「出力情報フィルタ」に設定する。ステップ１５０８にて、ワークフローエディタは、選択されたワークフローパーツの「出力情報フィルタ」に「任意」と設定する。これは、選択されワークフローパーツには、出力側において繋がるワークフローパーツがないため、出力側において満たす条件はなく、どのような出力情報を有していてもよい、ということを示している。
【００９７】
なお、ここで、出力側において繋がるワークフローパーツがないということは、選択されたワークフローパーツがワークフローにおいて最後尾のワークフローパーツとなりうる。このため、「出力情報フィルタ」を「終点」として、処理の終点となりうるワークフローフィルタを出力側において満たすべき条件としてもよい。
【００９８】
ステップＳ１５０９にて、ワークフローエディタは、設定された「入力情報フィルタ」および「出力情報フィルタ」の少なくとも一方が合致するワークフローパーツを、ワークフローに用いられる全てのワークフローパーツの中から選別する。そして、ワークフローエディタは、選別したワークフローパーツを領域２０２の上部に表示する。
【００９９】
なお、選別したワークフローパーツを領域２０２の上部に表示する際に、「入力情報フィルタ」および「出力情報フィルタ」の両方が合致するワークフローパーツをより上部に表示してもよい。すなわち、「入力情報フィルタ」または「出力情報フィルタ」の一方が合致するワークフローパーツよりも両方が合致するワークフローパーツをユーザより選択しやすくなるように表示を制御してもよい。
【０１００】
また、ステップＳ１５０９にて、ワークフローエディタは、選別したワークフローパーツのうち、「入力情報フィルタ」と合致するワークフローエディタについては、そのワークフローパーツの枠線の上部に太線を引く。なお、「入力情報フィルタ」が「任意」に設定されている場合は、選別したワークフローパーツのうち、処理の「起点」になりうるワークフローパーツについてのみ、枠線の上部に太線を引いてもよい。
【０１０１】
同様に、ワークフローエディタは、選別したワークフローパーツのうち、「出力情報フィルタ」と合致するワークフローエディタについては、そのワークフローパーツの枠線の下部に太線を引く。なお、「出力情報フィルタ」が「任意」に設定されている場合は、選別したワークフローパーツのうち、処理の「終点」になりうるワークフローパーツについてのみ、枠線の下部に太線を引いてもよい。
【０１０２】
また一方、ワークフローエディタは、選別されなかったワークフローパーツを領域２０２の下部に表示する。そして、ワークフローエディタは、選別されなかったワークフローパーツの周囲を点線で表示する。そして、処理はステップＳ１５０１に戻り、ユーザからの入力があるまで待機する。
【０１０３】
なお、図１２〜図１４では、空領域を選択した場合について説明したが、図１５の処理は、空領域に限らず、編集領域２０３に配置済みのワークフローパーツであれば実行される。選択されたワークフローパーツが空領域でない場合、選択されたワークフローパーツの代わりに配置可能なワークフローパーツが領域２０２の上部に表示されることになる。これにより、一度作成したワークフローの一部を差し替えて別のワークフローを作成する場合等、ワークフローのカスタマイズが容易に可能となる。
【０１０４】
また、図１２〜図１４では、領域２０２においてワークフローパーツの一覧を縦に一列で表示しているが、これに限られるものではない。例えば、ワークフロー作成画面２０１の上部に領域２０２が表示され、ワークフロー作成画面２０１の下部に編集領域２０３が表示される場合、領域２０２においてワークフローパーツの一覧を横に一列で表示してもよい。
【０１０５】
この場合、図１５のステップＳ１５０９において、ワークフローパーツを「領域２０２の上部に表示する」際に、ワークフロー作成画面２０１の左上から右下の向きに従って配置するようにしてもよい。領域２０２におけるワークフローパーツの一覧の表示方法によって、どの位置を上部とするかは変わりうる。
【０１０６】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【０１０７】
以上、本発明の好ましい実施形態について説明したが、本発明は、これらの実施形態に限定されず、その要旨の範囲内で種々の変形および変更が可能である。
【符号の説明】
【０１０８】
２０１    ワークフロー作成画面
２０３    編集領域
８０４    空領域
【図１】
2019008666.tif 000003
【図２】
2019008666.tif 000004
【図３】
2019008666.tif 000005
【図４】
2019008666.tif 000006
【図５】
2019008666.tif 000007
【図６】
2019008666.tif 000008
【図７】
2019008666.tif 000009
【図８】
2019008666.tif 000010
【図９】
2019008666.tif 000011
【図１０】
2019008666.tif 000012
【図１１】
2019008666.tif 000013
【図１２】
2019008666.tif 000014
【図１３】
2019008666.tif 000015
【図１４】
2019008666.tif 000016
【図１５】
2019008666.tif 000017