以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
<実施形態1>
図1は、画像処理システムの一例として、フォトアルバムを作成するシステムの構成の一例を示す図である。フォトアルバムを作成するシステムは、情報処理装置100と、画像処理システムと、プリントシステム160とを有する。図1において、フォトアルバムを作成する画像処理システムは、認証サーバー110、注文サーバー120、データサーバー130、ダウンローダーPC140、ダウンローダーPC150を含む。認証サーバー110、注文サーバー120、データサーバー130、ダウンローダーPC140、ダウンローダーPC150は、それぞれ、例えば、一般的なパーソナルコンピュータで構成される。
情報処理装置100は、注文サーバー120と、データサーバー130と、ネットワークを介して接続されている。
認証サーバー110は、ダウンローダーPC140及びダウンローダーPC150とそれぞれ、ネットワークを介して接続されている。
注文サーバー120は、ダウンローダーPC140及びダウンローダーPC150とそれぞれ、ネットワークを介して接続されている。
データサーバー130は、ダウンローダーPC140及びダウンローダーPC150とそれぞれ、ネットワークを介して接続されている。
また、ダウンローダーPC140と、ダウンローダーPC150とは、ネットワークを介して接続されている。
情報処理装置100は、顧客の端末装置であり、例えば、PC、スマートフォン等から構成される。また、情報処理装置100は、フォトアルバムを作成するためのアプリケーションソフトウェア(アルバムアプリともいう)を有している。ユーザは、フォトアルバムを作成するためのアプリケーションソフトウェアを用いて、フォトアルバム用の画像データを生成し、アルバムの制作を注文することができる。なお、フォトアルバム用の画像データは、情報処理装置100に保存されている画像データ又はクラウド上の画像データを用いて、画像データに基づく画像を1以上配置したレイアウト画像を複数生成することで、生成される。
認証サーバー110は、注文サーバー120へのアクセスに際して必要となる認証情報を保持するサーバーである。
注文サーバー120は、注文を受け付ける受付サーバーであり、顧客により発注された注文をリスト化した注文一覧を保持する。すなわち、注文を受けると、注文サーバー120の注文一覧に追加される。 データサーバー130は、各注文データの内容を保持するサーバーである。注文データは、顧客により発注された注文情報と、フォトアルバム用の画像データと、画像データをフォトアルバムの各ページに面付けするためのレイアウト情報とを含む。本実施形態では、アルバムの画像に関するデータ(画像データ及びレイアウト情報)をアルバムデータともいう。注文情報は、注文識別情報と、配送情報と、成果物情報を含む。注文識別情報は、当該注文を識別するための情報であって、注文日時や注文番号や発注者情報などにより構成される。配送情報は、プリントシステム160において製造された成果物の配送先に関する情報であって、配送番号と、納期と、配送先住所などにより構成される。成果物情報は、当該注文に含まれる成果物に関する情報であって、フォトアルバムの商材種別と、数量などにより構成される。各DCSはアルバムデータをデータサーバー130からダウンロードする。本実施形態では、ネットワークトラフィックを考慮して、顧客が注文したフォトアルバム用の1つの注文データは、分割して保持されている。
ここで、注文サーバー120の注文の受付について説明する。
(1)情報処理装置100のアルバムアプリにおいて、ユーザが注文ボタンを選択すると、アルバムアプリは、注文サーバー120に対して、データをアップロードしてよいか問い合せをする。
(2)問合せを受けた注文サーバー120が、データをアップロードしてよいという応答をアルバムアプリに送信する。
(3)応答を受けたアルバムアプリは、分割したデータの1つ目の保存先を注文サーバー120に問い合わせる。
(4)問合せを受けた注文サーバー120は、アップロード先のURL(データサーバ130の所定のURL)をアルバムアプリに応答する。
(5)アルバムアプリは、指定されたURLにデータをアップロードする。
(3)〜(5)の処理を繰り返すことにより、注文1つ分のデータをアップロードする。
ダウンローダーPC140及びダウンローダーPC150は、画像処理を実行する画像処理サーバー(画像処理装置)である。 ダウンローダーPC140は、ダウンローダークライアントサービス(以下、DCS)141と、ダウンロードフォルダ142と、インポーターサービス143と、入稿フォルダ144と、を有する。さらに、ダウンローダーPC140は、ダウンローダーアプリ145と、ダウンローダーホストサービス(以下、DHS)146と、を有する。
ダウンローダーPC150は、DCS151と、ダウンロードフォルダ152と、インポーターサービス153と、を有する。
DHS146は、管理対象のダウンローダーPCが提供する各種機能の実行を制御するサービスアプリケーションである。より具体的には、DHS146は、DCS141及びDCS151の制御を行う。
DCS141は、ホストであるダウンローダーPC140上で動作するDHS146からの指示を受けて、注文サーバー120から注文一覧をダウンロードするサービスアプリケーションである。さらに、DCS141は、ホストであるダウンローダーPC140上で動作するDHS146からの指示を受けて、データサーバー130から注文データをダウンロードする。注文データのダウンロード処理には時間がかかる。そのためDHS146から指示を受けたDCSは、DHSと非同期でダウンロード処理を開始する。
インポーターサービス143は、ダウンローダー処理においてダウンロードされたデータをプリントシステム160向けのデータに変換して(入稿データ変換処理)出力するサービスアプリケーションである。ダウンロードフォルダ142に出力されたダウンロード完了ファイルを確認したら、それに紐づく注文データをダウンロードフォルダ142から取り込んで、プリントシステム160向けのデータを入稿フォルダ144に出力する。すなわち、プリントシステム160が処理可能なデータに変換して、入稿フォルダ144に出力する。具体的には、ダウンロードフォルダ142から取り込んだ注文データ(画像データ)を復号化し、画像変換を行い、面付け処理を行い、注文情報を変換して得られた処理済みの画像データを含む処理済みアルバムデータを、入稿フォルダ144に出力する。入稿フォルダ144のパス情報は、インポーターサービス143の設定ファイルに記載して、インポーターサービス143が起動時にその設定ファイルを読み込むことで、パスが設定される。
また、DCS151は、DCS141と同様の機能を有し、ダウンロードフォルダ152は、ダウンロードフォルダ142と同様の機能を有し、インポーターサービス143は、インポーターサービス153と同様の機能を有するので、説明を省略する。入稿フォルダ144は、ダウンローダーPC140のインポーターサービス143からの入稿データを受付けるだけでなく、ダウンローダーPC150のインポーターサービス153からの入稿データを受付ける。
ダウンローダーアプリ145は、ダウンロード指示やダウンロード状況の確認を行うためのアプリケーションであり、ダウンローダーPC140の表示部に、ダウンロードの指示やダウンロードの状況を確認するための表示画面を提供する。プリントシステム160は、入稿フォルダ144から送信された処理済みアルバムデータを受信して、ユーザが注文したフォトアルバムを作成する。まず、印刷は、プリントシステムに含まれる画像形成装置において実行される。処理済みのアルバムデータは、例えば、印刷設定等が記載されているプリントチケットと、処理済み画像データを含む。そして、印刷したものを製本して、アルバムを制作する。
ここで、アルバムの注文処理について説明する。
情報処理装置100が、アルバムアプリを介して、フォトアルバムの作成依頼を指示すると、注文をした顧客の情報(顧客情報)が注文サーバー120へ送信されると共に、注文データがデータ―サーバー130へ送信される。
ここで、注文の割り振り及びダウンロード処理について説明する。
DHS146は、DCS141に注文一覧の取得指示を送信する。なお、DHS146は、ダウンローダーアプリ145が起動していなくても、定期的に自動で注文一覧の取得指示を送信する。
DCS141は、注文一覧の取得指示を受信すると、注文サーバー120から注文一覧の情報を取得し、DHS146へ送信する。
DHS146は、注文一覧を解釈して、DCSのいずれにも割り当てられていない注文を、DCSに割り当てる。すなわち、DHS146は、注文サーバー120が受付けた複数の注文を、複数の画像処理サーバーに注文単位で振り分け(割り当て)する。
また、DHS146は、DCSの状態及び各注文のステータスを定期的に監視する(監視処理)。なお、監視処理で監視するDCSの状態については、詳細は後述するが、DCSの接続状態、DCSステータス、使用中フラグ等である。DHS146は、ダウンロード処理を行っておらず且つ待機状態になっているDCSに対して、ダウンロード処理の指示をする。DHS146は、DCSに指示を送信した場合、DCSのダウンロード処理完了の応答を待たずに、自身の処理を続行する。
DCSは、自身に割当てられた注文の注文データをデータサーバー130から取得する。具体的には、DCS(141,151)は、DHS146から注文のダウンロード指示を受けると、認証サーバー110から認証情報を取得して、注文サーバー120にアクセスして、注文データのURLを取得する。そして、DCS(141,151)は、取得したURLに基づき、データサーバー130から注文データをダウンロードする。本実施形態では、注文情報は、分割されているため、分割されたファイルそれぞれに対してURLの取得及びダウンロードを実行する。次に、分割ファイルを結合してデータの妥当性をチェックサムなどを用いて確認する。DCS141は、結合した結果のデータを、注文データとしてダウンロードフォルダ142に出力する。また、DCS151は、結合した結果のデータを、注文データとしてダウンロードフォルダ152に出力する。
DHS146は、監視処理によりDCSが注文データのダウンロードを完了したことを検知した場合、そのダウンロードが完了したDCSに対して、ダウンロード完了処理を指示する。
DCS(141,151)は、ダウンロード完了処理の指示を受信した場合、ダウンロード完了処理を行う。なお、ダウンロード完了処理とは、ダウンロードフォルダ(142,152)に、ダウンロード完了ファイル(トリガファイル)を保存する処理である。すなわち、DCSは、該当する注文データに紐づくダウンロード完了ファイルをダウンロードフォルダ(142,152)に出力する。なお、ダウンロードフォルダ(142,152)のパスは、PC毎に設定する。ダウンロードフォルダ142のパスの情報はDCS141の設定ファイルに記載しておき、これをDCS141が起動時に読み込むことで、パスが設定される。ダウンロードフォルダ152のパスの情報はDCS151の設定ファイルに記載しておき、これをDCS151が起動時に読み込むことで、パスが設定される。すなわち、DHS146は、ダウンロードフォルダ(142,152)のパスを関知しない。
また、DHS146は、DCSがダウンロード完了処理を終了した場合、監視処理によりそれを検知することができる。DHS146がDCSによるダウンロード完了処理が終了したことを検知したら、注文サーバー120に対して、ダウンロードが完了したことを通知する。
インポーターサービス(143、153)の処理は、上述した通りである。インポーター処理が完了した後はインポート完了ファイルを入稿フォルダ144に出力する。後段のプリントシステムは、このインポート完了ファイルが出力されたことを受けて適切なタイミングでプリントシステム160における処理を開始する。
このように、本実施形態では、注文サーバー120が受付けた複数の注文を、複数の画像処理サーバーに注文データ単位で振り分けて、並列して画像処理を実行する。本実施形態では、ダウンローダーPC140が、ホストとして機能し、ダウンロードを行うDCSを自動的に選んで当該DCSが動作するPC(PC140もしくはPC150)をクライアントPCとして処理を実行する。なお、図1では、画像処理サーバーを2つとしたが、これに限定されず、3以上であってもよい。 図2(a)は、認証サーバー110のハードウェア構成の一例を表す図である。なお、ここでは、認証サーバー110の構成を例に挙げて説明するが、注文サーバー120、データサーバー130、ダウンローダーPC140、ダウンローダーPC150もそれぞれ同様の構成を有する。
図2に示す通り、認証サーバー110は、RAM211、HDD212、操作部213、CPU214と、通信制御部215と、表示部216とを有する。また、認証サーバー110は、少なくとも図2に示す各ブロックを互いに通信可能に接続するバス217を含む。
RAM211は、CPU214の作業領域として用いられ、また、各データの一時格納領域として用いられる。
CPU214は、認証サーバー110の全体を制御する制御部である。
HDD(ハードディスクドライブ)212は、不揮発性の記憶部であり、各種データや、CPU214が実行するためのプログラムを記憶する。なお、HDD212の代わりに、可搬性CD−ROMまたは内部据付のROM等が記憶部として用いられてもよい。
操作部213は、ユーザインターフェースであり、ハードキーやタッチパネル等の入力部を含む。表示部216は、各種情報を表示する表示部である。なお、タッチパネルの場合は、表示部216と操作部213との少なくとも一部が一体となっている。
通信制御部215は、外部装置との通信接続を可能とする。例えば、外部装置から、画像データ等を受信する。
ここで、情報処理装置100は、例えば、PC、スマートフォン等からなり、上述した認証サーバー110と同様のハードウェア構成を有している。そして、HDD212に、画像をレイアウトするアプリケーションソフトウェアが、コンピュータプログラムの1つとして保存されている。なお、アプリケーションソフトウェアは、例えば、外部装置からダウンロードして、HDD212に保存される。
図2(b)は、プリントシステム160に含まれる画像形成装置200のハードウェア構成の一例を表す図である。画像形成装置200は、CPU201、ROM202、RAM203、HDD204、通信制御部205、操作部206、画像処理部207、エンジン制御部208を備え、それぞれがシステムバス209を介して接続される。
CPU201は、マイクロプロセッサ形態の中央演算処理部である。CPU201は、プログラムの実行やハードウェアの起動により画像形成装置200全体の動作を制御する。ROM202は、CPU201が実行するためのプログラムや画像形成装置200の各種動作に必要な固定データを格納する。RAM203は、CPU201がワークエリアとして用いられたり、種々の受信データの一時格納領域として用いられたり、各種設定データを記憶させたりする。HDD204は、CPU201が実行するためのプログラム、印刷データ、画像形成装置200の各種動作に必要な設定情報を、内蔵するハードディスクに記憶させたり、読み出したりすることが可能である。
操作部206は、ユーザが種々の操作を行うためのハードキーやタッチパネル、またユーザに種々の情報を提示(通知)するための表示部を含む。また、ユーザへの情報の提示は、音声発生器からの音響情報に基づく音響(ブザー、音声等)を出力することによっても行うこともできる。
画像処理部207は、画像形成装置200で扱う印刷データ(例えば、ページ記述言語で表されたデータ)の画像データ(ビットマップ画像)への展開(変換)や画像処理を行う。入力された印刷データに含まれる画像データの色空間(たとえばYCbCr)を、標準的なRGB色空間(たとえばsRGB)に変換する。また、画像データに対し、画像形成装置200が印刷処理可能な画素数への解像度変換、画像解析、画像補正等、様々な画像処理が必要に応じて施される。これらの画像処理によって得られた画像データは、RAM203または、HDD204に格納される。
エンジン制御部208は、CPU201等から受信した制御コマンドに応じて、印刷データに基づく画像をシート上に印刷する処理の制御を行う。印刷データに応じて印刷ヘッドの駆動制御を行い、印刷ヘッドからインクを吐出させ、シート上に画像を形成させる。
ここで、図3を用いて、ダウンローダーアプリ145が提供する画面について説明する。図3は、ダウンローダーPC140の表示部に表示されるダウンローダーアプリ145が提供する確認画面である。DHS146が、注文サーバー120から注文一覧の情報を取得すると、ダウンローダーアプリ145は、取得した注文一覧の情報に基づいて、図3(a)に示す管理画面を表示する。なお、取得した注文一覧の情報は、ダウンローダーPC140のメモリに保存されており、注文毎に、入稿番号、注文ステータス、決済ステータス、ダウンロード完了日時、部数等の情報を含む。なお、注文一覧はメモリではなく、HDDに保存してもよい。
管理画面は、注文サーバー120が受付けた注文一覧(301〜305)と、自動ダウンロード設定ボタン306と、ダウンロードボタン307と、を表示する。注文一覧は、注文毎に後述する各種情報を表示する。図3(a)では、各種情報として、入稿番号301、注文ステータス302、決済ステータス303、ダウンロード完了日時304、部数305を表示する。なお、各種情報はこれらに限定されるものではない。入稿番号301は、注文データを識別するための情報である。注文ステータス302は、注文済、ダウンロード済、出荷済、キャンセル済のいずれかのステータスとなる。「注文済」は、顧客が注文した状態であって、ダウンロード処理が行われていない注文である。「ダウンロード済」は、注文がされた後、ダウンロード処理が行われた状態であって、出荷が完了していない注文である。「出荷済」は、出荷が完了した注文である。「キャンセル済」は、キャンセルされた注文である。決済ステータス303は、未決済、決済、不明のいずれかのステータスとなる。注文サーバー120から取得した注文のうち、決済が済んでいない注文を「未決済」とし、決済が済んでいる注文を「決済」とする。そのいずれにも該当しないものを「不明」とする。
ユーザが画面上で、対象とする注文を選択して、ダウンロードボタン307をクリックすると、ダウンローダーアプリ145は、DHS146に該当する注文のダウンロードを指示する。このように、ユーザの選択に基づく操作を「手動ダウンロード」と呼ぶ。
また、本実施形態では、ダウンローダーPC(140、150)には、自動ダウンロード機能がある。自動ダウンロード機能とは、指定した時間帯になったら、未ダウンロードの注文を自動的にダウンロードするものである。
ユーザが自動ダウンロード設定ボタン306をクリックすると、図3(b)に示すような自動ダウンロードの設定画面を表示する。
設定画面は、前述した自動ダウンロードの条件を設定するための画面である。自動ダウンロードを行いたい場合には、「定期的に自動ダウンロードを行う」という表示501に対応するチェックボックスを有効にする。自動ダウンロードを行わない場合は、「自動ダウンロードしない」という表示504に対応するチェックボックスを有効にする。すなわち、チェックボックスは、いずれか一方のみが選択可能である。
「定期的に自動ダウンロードを行う」のチェックボックスが選択された場合には、さらに条件を設定することができる。図4(b)では、1つ目の条件として、自動ダウンロードを行う時間間隔を設定することができる。表示部502に、設定したい時間を入力することができる。例えば、60分ごとにダウンロードを行いたい場合は、「60」を入力すればよい。
また、図4(b)では、2つ目の条件として、未決済の注文について自動ダウンロードを行うか否かを設定することができる。「未決済の注文をダウンロードする」という503に対応するチェックボックスを有効にすると、未決済の注文について自動ダウンロードを行うことができるようになる。一方、チェックボックスにチェックをしない場合は、未決済の注文について自動ダウンロードを行わない。
図4を用いて、各画像処理サーバー(ダウンローダーPC140、ダウンローダーPC150)のDCSが実行するダウンロード処理について説明する。なお、図4に示すフローは、各画像処理サーバーのCPU214がメモリに格納されたプログラムをRAM211にロードすることにより実行される。ここでは、ダウンローダーPC140を例に挙げて説明する。
図4に示すように、DCS141は、DHS146から当該注文のダウンロード指示を受けると、認証サーバー110から認証情報を取得して、注文サーバー120にアクセスして、注文データのURLを取得する(S301)。
次に、DCS141は、取得したURLに基づき、データサーバー130から注文データの注文情報をダウンロードする。本実施形態では、注文情報は、分割されているため、分割されたファイルそれぞれに対してURLの取得及びダウンロードを実行する(S302)。
次に、分割ファイルを結合してデータが妥当であるか確認する。具体的には、データの妥当性をチェックサムなどを用いて確認する(S303)。
データが妥当であった場合は、DCS141は、結合した結果のデータを、注文データとしてダウンロードフォルダ142に出力する。DCS141は、注文データを出力したあと、該当する注文データに紐づくダウンロード完了ファイルをダウンロードフォルダ142に出力する(S304)。なお、ダウンロードフォルダ142に出力する条件は、後述するモードに応じて異なる。
これにより、ダウンロード処理は、終了する。
図5を用いて、各画像処理サーバー(ダウンローダーPC140、ダウンローダーPC150)のインポーターサービスが実行するインポーター処理について説明する。なお、図5に示すフローは、各画像処理サーバーのCPU214がメモリに格納されたプログラムをRAM211にロードすることにより実行される。ここでは、ダウンローダーPC140を例に挙げて説明する。
図5に示すように、インポーターサービス143は、インポーター設定ファイルを参照する(S501)。インポーター設定ファイルとは、インポーターサービス143が参照するフォルダを設定するものである。前述したように、インポーターサービスは、起動時に前述の設定ファイルを参照する。
次に、インポーターサービス143は、ダウンロードフォルダ142へのダウンロード完了ファイルの出力を定期的に監視する(S502)。すなわち、ダウンロードフォルダ142にアクセスし、ダウンロード完了ファイルが保存されているか確認する。
次に、ダウンロード完了ファイルが存在することを確認した場合、プリントシステム160向けの注文データに変換処理を行う(S503)。すなわち、ダウンロード完了ファイルを、プリントシステム160へ入稿するデータに変換する(入稿データ変換処理)。
変換してできた注文データ(入稿データ)を、入稿フォルダ144に出力する(S504)。
これにより、インポーター処理は、終了する。
図6を用いて、図3(b)に示す画面において、未決済の注文を自動ダウンロードする設定にした場合の自動ダウンロードの動作モードについて説明する。
本実施形態では、図6に示すように、未決済の注文に対する自動ダウンロードの動作モードが3つある。
モード1は、自動ダウンロードの実行時に、未ダウンロードの注文データのうち決済済みの注文だけをダウンロードフォルダにダウンロードするモードである。
モード2は、自動ダウンロードの実行時に、未ダウンロードの注文データであれば、未決済の注文をダウンロードするが、ダウンロード完了ファイルは、ダウンロードフォルダ(142,152)に出力しないモードである。ダウンロードフォルダ(142,145)にダウンロード完了ファイルを出力しないため、インポーターサービスの取り込み対象とはならない。このモードでは、インポーターサービスに取り込まれないため、入稿フォルダ144には注文データが出力されず、プリントシステム160へはデータは送信されない。すなわち、モード2は、ダウンロード処理は行うが、インポーター処理を開始しないモードである。インポーター処理が開始されるためには、当該注文の決済ステータスが、未決済から決済に変わる必要がある。決済ステータスが、決済に変わったと判定されると、ダウンロード完了ファイルをダウンロードフォルダに出力され、インポーターの取り込み対象となる。
モード3は、自動ダウンロードの実行時に、未ダウンロードの注文データであれば、未決済の注文をダウンロードし、ダウンロード完了ファイルもダウンロードフォルダ(142,152)に出力するモードである。インポーターの取り込み対象となる。したがって、入稿フォルダ144に注文データが出力される。
前述のモード2に対する処理について述べる。DHS146は、図13に示すような、管理対象のDCS(141,151)がダウンロードした各注文のリストを作成し、ダウンローダーPC140内のメモリに保持する。このリストに保持されている注文については、注文サーバー120を定期的にポーリングすることで、決済ステータスの変化を監視する。以後は、ダウンロード済み、かつ、ダウンロード完了ファイルをダウンロードフォルダに出力していない注文のリストを「ダウンロード完了ファイル未作成リスト」とする。当該リストにおいて、ダウンロード済み、かつ、ダウンロード完了ファイルをダウンロードフォルダに出力していない注文の注文番号を管理する。詳細については、後述する。ユーザが注文を決済すると、注文サーバー120において、注文の決済ステータスが「未決済」から「決済」に変わる。決済に変わった注文については、インポーター処理を開始させるために、ダウンロード完了ファイルをダウンロードフォルダ142に出力し、ダウンロード完了ファイル未作成リストから当該注文を削除する。
自動ダウンロード対象の注文であるか否かは、注文一覧を参照して判断する。具体的には、注文ステータスが未ダウンロードであり、かつ、決済ステータスが未決済であれば、自動ダウンロード対象の注文であると判断する。自動ダウンロードの対象となる注文を特定するフローを図8に基づき説明する。
図8は、画像処理サーバーであるダウンローダーPC140のDHS146が実行する特定処理である。なお、図8に示すフローは、ダウンローダーPC140のCPU214がメモリに格納されたプログラムをRAM211にロードすることにより実行される。
まず、ダウンローダーアプリ145が、DHS146にダウンロード指示をすることにより、DHS146が管理対象のダウンローダーPCのうち動作しているダウンローダーPCのDCSを介して注文サーバー120から注文一覧を取得する(S801)。
取得した注文に含まれる注文の分だけ以下のループ処理を行う。
まず、着目する注文の注文ステータスが未ダウンロードであるかを判断する(S803)。未ダウンロードであると判定した場合(S803で、はい)、着目する注文(処理対象の注文)の決済ステータスが決済済みであるかを判断する(S804)。
決済ステータスが決済済みであると判定した場合(S804で、はい)、S806へ進む。
決済ステータスが決済済みではないと判定した場合(S804でいいえ)、未決済の注文の自動ダウンロード要否が「要」となっているか判定する(S808)。未決済の注文の自動ダウンロード要否が「要」となっていると判定した場合、すなわち、未決済の注文を自動ダウンロード対象とする設定になっている場合(S808で、はい)、S806へ進む。
S806では、ダウンロード処理待ちキューに当該注文が存在していないか判定する(S806)。ダウンロード処理待ちキューは、DHS146がダウンローダーPC140内で管理しているキューであり、管理対象のDCSに割り当てられる注文の全てを管理するキューである。ここで、着目する注文は自動ダウンロード対象となる。自動ダウンロード対象の注文は、処理待ちのキューに入れるが、複数の注文がダウンロード待ちのキューに存在していると、当該注文がすぐにダウンロード処理されるとは限らない。また、何らかの理由でダウンロードが実行されずに当該注文がキューに存在している可能性もあるため、S806の判定を行う。着目する注文が存在していないと判定された場合(S806ではい)、当該着目する注文をダウンロード処理待ちキューに追加し(S807)、S809へ進み、着目する注文の処理を終了し、ループの先頭に戻る。
未決済の注文の自動ダウンロード要否が「否」となっていると判定した場合、すなわち、未決済の注文を自動ダウンロード対象とする設定になっていない場合(S808で、いいえ)、S809へ進み、着目する注文の処理を終了し、ループの先頭に戻る。
ループの先頭に戻った際は、着目対象の注文を変更する。このようにして、注文一覧に含まれる注文の分の処理が終了すると、特定処理を終了する。
ここで、図7を用いて、DHS146が保持している監視対象のDCSのリストについて説明する。DHS146は、監視対象のDCSの状態をリスト(以後「DCSリスト」とする)として保持している。本実施形態では、ダウンローダーPC140のDCS141と、ダウンローダーPC150のDCS151とが、監視対象のDCSとなる。DHS146は、DCSリストを参照して、ダウンロード可能な状態のDCSを特定する。
DCSリストは、接続相手となる監視対象の各PCを識別する情報と、各PCの状態に関する情報を含む。図7では、監視対象のDCSが4つである場合を例に挙げて説明する。図7に示すように、本実施形態では、DCSリストは、IPアドレスと、ポート番号と、ホストPC情報と、接続状態と、DCSステータスと、使用中フラグと、ダウンロード対象の注文番号からなる。ホストPC情報とは、ホストPCであるか、クライアントPCであるかの区別をするための情報である。接続状態とは、DHS146が該当PCと接続しているか、接続していないかの区別をするための情報であって、「接続」、「非接続」の状態がある。
DCSステータスとは、DCSがどのような状態であるかを区別するための情報である。DCSは、データをダウンロードする処理に時間がかかる。そのため、DHS146からダウンロードの指示(API)を受けると、実際のダウンロードの処理を開始する前にDHS146にAPIを返す。この状態が「非同期処理中」であり、対象のDCSが注文データをダウンロード処理中であることを示す。DCSは、APIを返したあとで、DCSは非同期処理にて実際のダウンロード処理を行う。「待機中」は、DCSが注文データをダウンロード可能な状態であるが、注文データをダウンロードしていない状態であることを示す。「非同期処理完了」は、DCSが注文データをダウンロード完了した直後から、状態がリセットされるまでの間の状態であることを示す。「不明」とは、DHSがDCSの状態を判定できない状態であることを示す。
使用中フラグとは、DCSを使用中か否かを区別するために用いられる情報である。前述したようにDHS146は、DCSにダウンロードの指示などの各種の指示をするが、当該DCSが処理中であれば、前述の指示をすることができない。DHS146がダウンロード指示を割り当てるDCSを決定し、DCSに指示をかけ、DCSがその指示を受けて処理を開始するまでの「時間」は、非同期処理中のステータスにならない。一方でDHS146は、前述の「時間」の間にも次のダウンロードの割り当てを行う可能性がある。したがって、前記DCSに再び割り当てを行うことを防止するために、ダウンロードの指示を割り当てるDCSを決定したら、その段階で使用中フラグを「使用中」に変更する。なお、前記段階から、ダウンロード完了処理を終了する段階(図12のS1212)までが「使用中」となり、DCSを使用していない場合、すなわち、上記の使用中以外は、「未使用」となる。ダウンロード対象の注文番号は、どの注文データをDCSがダウンロードしているかを示すものである。
DHS146が管理対象のDCSのうち特定のDCSに注文データのダウンロードを指示すると、指示をうけたDCSがダウンロード処理を行う。DHSは、DCSのステータスを監視する。
DHS146は、DCSリストのDCSステータスを見て、当該DCSのDCSステータスが非同期処理完了状態であることを確認すると、ダウンロードを行ったDCSにダウンロード完了の指示をする。
図9を用いて、DHS146がDCSリストを参照して、ダウンロード可能な状態のDCSに対してダウンロードの指示をかけるフローについて説明する。なお、図8に示すフローは、DHS146が実行する処理であり、ダウンローダーPC140のCPU214がメモリに格納されたプログラムをRAM211にロードすることにより実行される。
DHS146は、管理中のDCSリストをダウンローダーPC140のメモリから取得する(S901)。
そして、ダウンロード処理待ちキューに入っている注文の数だけ、次のループ処理(S902〜S907)を行う。DCSリストのDCSステータスが待機中となっているDCSがあるか判定する(S903)。DCSステータスが待機中のDCSが存在しないと判定した場合(S903で、いいえ)、DCS側の処理が進んでステータスが変更されるのを待つために、100ミリ秒のウェイト処理を行う(S904)。そして、S907へ進み、着目する注文の処理を終了し、ループの先頭に戻る。
DCSステータスが待機中のDCSが存在すると判定された場合(S903で、はい)、S905に進んで、待機中のDCSのうちで、DCSリストの最上位にあるDCSを、ダウンロード処理の指示対象と決定する(S905)。そして、当該DCSに対して、DCSリストの情報を更新する(S906)。更新の内容は、指示対象となったDCSの使用中フラグの状態を使用中に変更することと、ダウンロード対象の注文番号を設定することである。そして、S907へ進み、着目する注文の処理を終了し、ループ処理の先頭に戻る。
ループの先頭に戻った際は、着目対象の注文を変更する。このようにして、ダウンロード処理待ちキューの注文の分の処理が終了すると、ダウンロードの指示処理を終了する。
図10を用いて、DHSからダウンロードの指示を受けたDCSが注文データをダウンロードするフローについて説明する。すなわち、DCSの実行する処理について説明する。
まず、DCSは自身のステータスを「非同期処理中」に変更する(S1001)。上述したように、DCSは、DHS146からの指示(API)を受けて、DHSとは非同期でダウンロード処理を行うためである。なお、DHS146は、このDCSのステータスを定期的に監視して、図7を用いて説明したDCSリストのDCSスタータスにそれにより得られた結果を保持する。
次に、認証サーバー110からトークンを取得する(S1002)。
取得したトークンを用いて注文サーバー120にアクセスをして、分割ファイル数と、のちほど結合する際にデータの妥当性を確認するために用いるチェックサムとを取得する(S1003)。分割ファイル数とは、1つの注文がいくつのファイルに分割されているかを示すものである。
次に、分割ファイル数分のループ処理を行う(S1004〜S1009)。DHS146からダウンロードキャンセルの指示を受けたか判定する(S1005)。これはダウンロード中にダウンロードキャンセルの処理を実行することができるためであり、キャンセルの指示は、ユーザがダウンローダーアプリ145が提供する画面を介して行うことができる。もしくは、後述するように、DHS146がシャットダウンする際にキャンセルの指示をすることもある。キャンセルの指示を受けたと判定した場合(S1005で、はい)、ループ処理を抜けて、S1013へ進む。
キャンセル指示を受けていないと判定した場合は(S1005で、いいえ)、注文サーバー120から分割ファイルの保存先URLを取得する(S1006)。そして、取得したURLに基づきデータサーバー130にアクセスして、分割ファイルをダウンロードする(S1007)。次に、分割ファイルのダウンロードが成功したか否かを判定する(S1008)。ダウンロードに失敗したと判定した場合(S1008で、いいえ)、ループ処理を抜けて、S1013に進む。ダウンロードに成功したと判定した場合(S1008で、はい)、S1009へ進み、着目する分割ファイルの処理を終了し、ループの先頭に戻る。すべての分割ファイルをダウンロードしたら、ダウンロードした分割ファイルを結合する(S1010)。そして結合して得られたデータの妥当性を確認するために、チェックサムが一致しているか判定する(S1011)。チェックサムが一致していなかった場合(S1011で、いいえ)、データは妥当ではないと判定し、S1013へ進む。
チェックサムが一致していた場合(S1011で、はい)、データは妥当であると判定し、ダウンロード結果に「成功」を設定する(S1012)。そして、DCSのステータスを「非同期処理中」から「非同期処理完了」に変更して(S1015)、処理を終了する。
S1013では、ダウンロード済みのファイルを削除する。すなわち、キャンセル指示を受けた場合(S1005で、はい)、ダウンロードが失敗した場合(S1008で、いいえ、S1011で、いいえ)、ダウンロード済みのファイル(取得済みのファイル)を削除する。そして、ダウンロード途中で中止したため、ダウンロード結果に「失敗」を設定する(S1014)。
図11を用いて、DHS146のステータスの監視処理について説明する。DHS146は、DHS146がシャットダウンするまでの間に、DCSのステータスが変わることを監視する。そして、この監視処理のスレッドは、DCSごとに存在する。
DHS146は、DCSリストから監視対象となるDCSのIPアドレスとポート番号を取得する(S1101)。
次に、以下のループ処理を行う(S1102〜1117)。
まず、DCSリストから監視対象のDCSの接続状態を取得する(S1103)。取得した接続状態が「接続」であるか判定する(S1104)。「接続」であった場合(S1104で、はい)、そのまま、当該DCSのステータスを取得する(S1110)。「接続」でなかった場合は(S1104で、いいえ)、DCSを初期化して「接続」にするための処理を行い(S1105からS1109)、当該DCSのステータスを取得する(S1110)。S1105では、初期化処理を行う対象のDCSのインスタンスを取得する。なお、インスタンスとは、メモリ上に存在するDCSの実体である。インスタンスが取得できたか判定する(S1106)。インスタンスが取得できた場合は(S1106で、はい)、当該DCSに対して初期化指示をかける(S1107)。そして、初期化が成功したか否かを判定する(S1108)。初期化が成功した場合は(S1108で、はい)、DCSの接続状態を「接続」に更新し(S1109)、S1110へ進む。
なお、インスタンスが取得できなった場合(S1106で、いいえ)、S1114へ進む。また、S1108において、初期化に失敗した場合(S1108で、いいえ)、S1114へ進む。
S1110で取得したDCSのステータスが「非同期処理中」から「非同期処理完了」に変更されたか否か判定する(S1111)。非同期処理完了に変更されたと判定した場合(S1111で、はい)、当該DCSのダウンロード処理が完了していることを意味するため、その先の処理をDCSに指示する(S1112)。具体的には、ダウンロード完了処理スレッドに対してダウンロード完了処理を指示する。そして、S1113へ進む。なお、ダウンロード完了処理については、詳細は後述する。S1113では、図7を用いて説明したDCSリストのDCSステータスを更新し、次に、S1114へ進む。
S1114では、DCSリストにおいてDCSの接続状態が「接続」になっているかを判定する。
DCSの接続状態が「接続」である場合(S1114で、はい)5秒ウェイトし(S1115)、ループの終端へ進む。「接続」状態ではない場合(S1114で、いいえ)、60秒ウェイトし(S1116)、ループ処理の終端へ進む。
上述した処理は、DHS146がシャットダウンするまで実行する。なお、DHS146がシャットダウンすると、ステータス監視処理を終了する。
上述したように、DHS146は、接続が確認できたDCSに対して、ダウンロード完了処理を指示すると共に、DCSリストのDCSステータスを更新する。また、管理対象のDCSのうち接続しているDCSに対しては5秒ごとに接続確認を行い、管理対象のDCSのうち接続していない場合は60秒ごとに接続確認を行う。このように、DHS146は、DCSリストにリストアップしているDCSに対して、定期的に接続を確認している。
S1112では、DHS146は、ダウンロードが完了してDCSステータスが非同期処理完了状態になったDCSに対して、ダウンロード完了のための処理を指示する。なお、ダウンロード完了の処理を行わない限り、ダウンロード完了ファイルが出力されず、インポーター処理が開始しない。
図12を用いて、DHS146が実行するダウンロード完了処理について説明する。
DHS146は、ダウンロード結果をDCSから取得する(S1201)。このダウンロード結果とは、図10のS1012及びS1014においてDCSが設定した情報である。
ダウンロードが成功しているか否かを判定する(S1202)。ダウンロードが成功していると判定した場合(S1202で、はい)、DCSに対して、ダウンロード完了処理を指示する(S1203)。なお、DCSは、ダウンロード完了処理の指示を受けると、この指示に対する応答を、DHS146に同期処理で返却する。
S1204では、その返却結果を見て、ダウンロード完了処理が成功しているか判定する(S1204)。
ダウンロード完了処理が成功していると判定すれば(S1204で、はい)、対象となる注文についての決済ステータスが「決済済み」であるかを判定する(S1205)。
なお、ダウンロード完了処理が成功していないと判定した場合(S1202で、いいえ)、S1210へ進み、DCSにダウンロード済みのファイルの削除を指示する。また、ダウンロード完了通知が成功していない場合(S1204で、いいえ)、S1210へ進み、DCSにダウンロード済みのファイルの削除を指示する。そして、S1211へ進む。
対象となる注文についての決済ステータスが「決済済み」ではない場合(S1205で、いいえ)、未決済注文のダウンロード完了ファイルの出力要否が「要」であるか判定する(S1206)。未決済の注文について、ダウンロード完了ファイルを出力するモード3である場合は、S1206の判断結果が「はい」に該当する。また、未決済の注文に対してダウンロード完了ファイルを出力しないモード2である場合は、S1206の判断結果が「いいえ」に該当する。
決済済みの注文である場合(S1205で、はい)と、未決済の注文でダウンロード完了ファイルを出力するモード(S1206で、はい)の場合、S1207に進む。
S1207では、DCSに対して、DHS146がダウンロード完了ファイルの出力を指示し、S1208において、ダウンロード完了ファイルの出力が成功したか判定をする。
ダウンロード完了ファイルの出力が失敗した場合(S1208で、いいえ)と、未決済の注文のダウンロード完了ファイルの出力要否が「要」ではない場合(S1206で、いいえ)、S1209へ進む。
S1209では、ダウンロード完了ファイル未作成リストに、注文を追加し、S1211へ進む。なお、ダウンロード完了ファイル未作成リストとは、ダウンロード済み、かつ、ダウンロード完了ファイルをダウンロードフォルダに出力していない注文と、当該注文が割り当てられたDCSを管理するためのリストである。
S1211では、DCSにステータスのリセットを指示する。すなわち、DCSのステータスを待機中に更新する。そして、S1212では、DCSリストの情報を更新する。具体的には、使用中フラグを「未使用」に変更し、ダウンロード対象の注文番号を削除する。そして、処理を終了する。
自動ダウンロードモードがモード2の場合、すなわち、未決済の注文に対してはダウンロード処理までを行い、ダウンロードした注文の決済ステータスが「決済」に変わった時点で、すでに当該注文のダウンロードを行ったPCが起動していない場合がある。この場合には、ダウンロード完了ファイルをダウンロードフォルダに出力することができない。これに対し、本実施形態では、ダウンロードをどのDCSに対して指示したかをリストとして保持しており、S1209において、ダウンロード完了ファイル未作成リストに、当該注文を追加する。このように、ダウンロード完了ファイル未作成リストに、ダウンロード済み、かつ、ダウンロード完了ファイルをダウンロードフォルダに出力していない注文の注文番号だけでなく、図13に示すように当該注文のダウンロードを行ったDCSの情報を保持する。
図13のダウンロード完了ファイル未作成リストでは、注文番号と、IPアドレスとを管理している。すなわち、このリストでは、注文のダウンロードを行ったダウンローダーPCのIPアドレスを、当該注文と関連付けている。このため、IPアドレスからダウンロードを行ったダウンローダーPCを特定でき、当該PCで動作しているDCSを特定することができる。すなわち、各注文をダウンロードしたDCSを特定し、そのDCSに対して、ダウンロード完了ファイルを出力する指示をするので、DHS146は、当該注文がどのダウンロードフォルダに出力されているかを知らなくともよいことになる。
図14を用いて、DHS146が注文一覧を取得する処理について説明する。本実施形態では、DHS146が、現在管理している注文一覧と、注文サーバー120上にある注文一覧との差異を特定し、削除やキャンセルといった差分のある注文について、適切な処理を行う。ダウンロード途中の処理や、ダウンロード済みの注文に対する処理が含まれている。
まず、DHS146が管理している注文一覧をダウンローダーPC140のメモリから取得する(S1401)。この注文一覧を「A」とする。
次に、注文サーバー120から注文一覧を取得する(S1402)。DHS146が管理対象のダウンローダーPCのうち動作しているダウンローダーPCのDCSに対して、注文サーバー120から注文一覧(この注文一覧を「B」とする)を取得する指示をして、注文一覧「B」を取得する。注文一覧「B」は、最新の注文状態を示すものとなる。
S1401及びS1402において、注文一覧が取得できたかを確認する(S1403)。注文一覧が取得できていなければ(S1403で、いいえ)以後の処理は行わず、処理を終了する。
S1401及びS1402において、注文一覧が取得できたと判定した場合(S1403で、はい)、S1404に進み、AとBの差分を比較する。
AとBの注文のうち差分が生じている注文の分だけ、S1405〜S1414の処理を行う。
S1406において、着目する注文が削除された注文であるか判定する。AにあってBに無い注文であれば、それは削除された注文であると判定され(S1406で、はい)、S1408に進む。AにもBにもある注文であれば、削除された注文ではないと判定され(S1406で、いいえ)、注文ステータスが「キャンセル」に変更されたか判定する(S1407)。注文ステータスがキャンセルに変更された場合は(S1407で、はい)、S1408に進む。
S1408では、ダウンロード待ちのキューに該当の注文が存在しているか否か判定する。
ダウンロード待ちのキューに該当の注文が存在している場合(S1408で「はい」)の場合、まだ当該注文をダウンロードしていない状態なので、S1410に進んで、ダウンロード処理待ちキューから当該注文を削除する。そして、S1414へ進む。
ダウンロード待ちのキューに該当の注文が存在していない場合(S1408で「いいえ」)、現在ダウンロード処理中であるか否か判定する(S1409)。ダウンロード処理中であると判定した場合(S1409で「はい」)、S1411に進み、DCSリストを参照して当該注文のダウンロードを指示したDCSに対して、ダウンロードキャンセルを指示する。そして、S1414へ進む。
ダウンロード処理中でない場合(S1409で「いいえ」)、S1412に進み、ダウンロード完了ファイル未作成リストに当該注文が存在しているか判定する。当該注文が存在している場合(S1412で「はい」)、S1413に進んで、当該注文をダウンロード完了ファイル未作成リストから削除する。そして、S1414へ進む。
差分のある注文に対して上記の処理を行ったら、DHS146が管理しているAをBで上書きする(S1415)。
次にダウンロード完了ファイル未作成リストに存在する注文の数だけ、S1416からS1423までのループ処理を行う。
注文ステータスが「キャンセル」以外か否か判定する(S1417)。
「キャンセル」以外ではないと判定した場合(S1417で「いいえ」)、ループの終端へ進む。
「キャンセル」以外であると判定した場合(S1417で「はい」)、当該注文の決済ステータスが「決済済み」であるか否か判定する(S1418)。「決済済み」でなければ(S1408で「いいえ」)、当該注文に未決済注文のダウンロード完了ファイルを出力するモードであるか否か判定する(S1419)。ここでは、未決済注文のダウンロード完了ファイル出力要否が「要」であるか判定する。自動ダウンロードがモード2の場合(未決済の注文に対しては自動ダウンロードを行うがダウンロード完了ファイルを出力しない)、S1419が「いいえ」に該当する。自動ダウンロードがモード3の場合(未決済の注文に対して自動ダウンロードを行い、ダウンロード完了ファイルを出力する)、S1419が「はい」に該当する。
S1419で「いいえ」の場合は、ループの終端へ進む。
S1419で「はい」の場合は、DCSにダウンロード完了ファイルの出力を指示する(S1420)。そしてダウンロード完了ファイルを出力する指示が成功したか否か判定し(S1421)、指示が成功しているならば(S1421で「はい」)、ダウンロード完了ファイル未作成リストから当該注文を削除し(S1422)、ループの終端へ進む。
ダウンロード完了ファイル未作成リストに存在する注文の数だけループ処理を実行するまで、ループ処理の先頭に戻る。
上述したように、本実施形態では、DHS146が各DCSを定期的に監視している(S1104)。そしてダウンロード完了ファイルの出力を指示する時点でDCSが起動していない場合(S1106)、定期的な監視の中で、起動していないDCSが起動することを確認できた時点で、当該DCSに対してダウンロード完了ファイルの指示を行う(S1112)。そして指示が成功した時点で、ダウンロード完了ファイル未作成リストの更新をする(S1422)。
次に、ダウンロード処理中に、DHS146や管理対象のDCSがシャットダウンする場合の対策について説明する。本実施形態では、DHS146と、複数のPCの間で非同期に連携しているDCSとの間で、DHSやDCSがシャットダウンする場合に、ダウンロード処理を確実に中止する。すなわち、DCSを監視するDHS146がシャットダウンする場合、シャットダウン前に管理していた情報を不正に参照してしまうことを抑制する。
具体的には、DHSがシャットダウンする場合、シャットダウンする際の処理として下記の(1)〜(4)を実行し、その後のDHSの再起動の際の処理として、下記の(5)〜(7)を行う。
(1)DHS146がシャットダウンする際に、ダウンロード指示をかけている各DCSに対してダウンロードキャンセル指示をかける。DCSは、キャンセル指示を受けると、ダウンロード処理を中止する。ダウンロード済みの注文データが1ファイルでもあれば削除する。
(2)次に、管理している各DCSに対して終了指示をかける。
(3)DCSは、終了指示を受けると、注文データのダウンロード処理中だった場合はダウンロード処理を中止する。ダウンロード済みの注文データが1ファイルでもあれば削除する。ダウンロードを完了し、ダウンロード完了通知の待機中だった場合は、ダウンロード済みの注文データを削除する。
(4)DHS146の終了処理を行う。
(5)DHS146が再起動した場合、DHS146の初期化処理を行う。
(6)管理対象の各DCSに対して初期化指示をかける。
(7)DCSは、初期化指示を受けると、注文データのダウンロード中であればダウンロード処理を中止する。ダウンロード済みの注文データが1ファイルでもあれば削除する。ダウンロードを完了し、ダウンロード完了通知の待機中だった場合は、ダウンロード済みの注文データを削除する。
DHS146のシャットダウン処理について、図15を用いて説明する。
DHSが管理しているDCSリストを取得する(S1501)。
そして、DCSリストに含まれるDCSの分だけループ処理を行う(S1502〜1507)。
まず、着目するDCSが非同期処理中であるか判定する(S1503)。非同期処理中であると判定した場合(S1503で「はい」)、DCSにダウンロード処理のキャンセルを指示する(S1504)。その後、S1505へ進む。なお、DCSがこのキャンセルの指示を受信すると、図10のS1005において、「はい」となる。
非同期処理中でないと判定した場合(S1503で「いいえ」)、S1505へ進む。
S1505では、着目するDCSに対して終了処理を指示し、ループ処理の終端へ進む(S1506)。
DCSリストに含まれるDCSの分だけループが終了したら、DHSの終了処理を行う(S1507)。DHSの終了処理では、DCSリスト及び注文一覧の情報を削除する。これにより、DHS146のシャットダウン処理を終了する。
図16を用いて、DHSから終了処理の指示を受けたDCSの終了処理について説明する。この処理は、DHSから終了処理の指示を受けたDCSそれぞれにおいて実行される。
DCSは、自身が現在非同期処理中であるか判定する(S1601)。非同期処理中の場合(S1601で「はい」)、現在DCSが注文データをダウンロードしていることになるので、ダウンロード処理を中止する(S1602)。そして、ダウンロード済みのファイルを削除し(S1604)、S1605へ進む。
非同期処理中ではない場合(S1601で「いいえ」)、ダウンロード完了通知の待機中であるか判定する(S1603)。ダウンロード完了通知の待機中であった場合(S1603で「はい」)、ダウンロード済みのファイルを削除し(S1604)、S1605へ進む。ダウンロード完了通知の待機中ではない場合(S1603で「いいえ」)、そのままS1605へ進む。S1605では、DCSのステータスを「イニシャライズ前」に変える。そして、DCSの終了処理を終了する。
このように、DCSがシャットダウンする場合は、ダウンロード済みのファイルがあっても、ダウンロード完了通知を通知していない場合は、ダウンロード済みのファイルを削除する。
図17を用いて、再起動後のDHS146の処理について説明する。
DHS146の初期化処理を行う(S1701)。ここで、初期化処理では、DCSリストの再作成及び注文一覧の情報の再取得を行う。図15のS1507において、DCSリスト及び注文一覧の情報が削除されているためである。なお、初期化処理の段階では、ダウンロード完了ファイル未作成リストは削除されているので存在しない。
DHS146が管理するDCSリストを取得する(S1702)。
そしてDCSリストに含まれるDCSの分だけループ処理を行う(S1703〜S1705)。DCSに初期化処理を指示し、次のDCSに対して同様の処理を行う。
DCSリストに含まれるDCSの分だけDCSの初期化処理を指示すると、DHS146の初期化処理を終了する。
上述した再起動処理では、注文一覧及びDCSリストが再作成される。その後、上述したように、DHS146が注文を管理対象のDCSに割当てる。このとき、シャットダウン処理をする際にダウンロードが完了していない注文については、シャットダウン処理により、注文が割当てられていたDCSから削除されているので、再度、同じDCSに割当ててもよいし、他のDCSに割当ててもよい。なお、再割り当ての際には、DHS146は、接続状態が「接続中」のDCSに注文を割当てる。以上より、異なるDCSに重複して注文が割当てられることがない。
図18を用いて、DCSの初期化処理について説明する。なお、DCSの初期化処理は、DHS146から初期化処理の指示を受けることにより開始する。例えば、S1107により、指示を受けた場合や、S1704により処理を受けた場合が挙げられる。また、DCS毎に実行される。
DCSは、現在非同期処理中であるか判定する(S1801)。非同期処理中である場合(S1801で「はい」)、現在DCSが注文データをダウンロードしていることになるため、ダウンロード処理を中止する(S1802)。そして、ダウンロード済みのファイルを削除し(S1804)、S1805へ進む。
非同期処理中ではない場合(S1801で「いいえ」)、ダウンロード完了通知の待機中であるか判定する。ダウンロード完了通知の待機中であった場合(S1803で「はい」)は、ダウンロード済みのファイルを削除し(S1804)、S1805へ進む。S1805では、DCSのステータスを「イニシャライズ済み」に変え、DCSの初期化処理を終了する。
このように、DCSが初期化処理をする場合は、ダウンロード済みのファイルがあっても、ダウンロード完了通知を通知していない場合は、ダウンロード済みのファイルを削除する。
本実施形態では、注文データのダウンロードが完了しただけでは、プリントシステム160に、注文データが出力されないようになっている。DCSは注文データのダウンロードが完了した後に、DHS146からの指示を受けてダウンロード完了ファイルを出力し、これが後段のインポーター処理に対するトリガファイルとなる。インポーター処理が完了することによって、プリントシステムが処理を開始できるようなる。なお、ダウンローダーPC150のDCSについても、DHS146からの指示を受けることで、同様の処理を行う。
また、DHS146がシャットダウンしてしまった場合に、DCSに割り振られた注文に対する処理が失敗したり、再起動後に重複して他のDCSに割り振られたりしないようにしている。具体的には、現在ダウンロードの指示をかけているDCSに対する終了指示を実行し、管理している全てのDCSに対する終了指示をする。
DHS146が、例えば、Windowsのサービス等を利用している場合、OSのシャットダウンによってDHS146がシャットダウンする。しかしながら、DHS146がOSからシャットダウンのイベントを受けて処理を行うが、所定の時間までしかDHSの処理をOSが待ってくれず、OSが先にシャットダウンしてしまう可能性がある。これに対し、本実施形態では、さらに、S1504やS1505の処理が正常に完了できなかったとしても、図17に示すDHS146が再起動時に行う処理や図18に示すDCSが再起動時に初期化処理をする。これにより、注文データのダウンロード処理を確実に中止することができる。
上記では、DHS146がシャットダウンをする場合について説明した。しかしながら、これに限定されず、何らかの原因により、DCS151のみがシャットダウンする場合は、図16の処理を実行し、DCS151が再起動をする際には、DHS146から初期化処理の指示(S1107)により、図18の処理を実行すればよい。
また、本実施形態では、DCSがシャットダウンする場合の対策を行っている。図11を用いて説明した通り、DHSはDCSリストで管理している各DCSの接続状態を定期的に監視している。S1103ではDCSリストから対象となるDCSの接続状態を取得しているが、ここにおいてDCSと接続できない場合(S1106で「いいえ」)、S1112のダウンロード完了ファイルの出力指示を行わない。すなわち、DCSが注文データのダウンロードを完了しても、DHSからダウンロード完了通知の指示(S1203)や、ダウンロード完了ファイルの出力指示(S1207)を行わない。したがって、インポーター処理によって後段のプリントシステムに注文データが出力されることがない。
また、本実施形態では、DHS146と管理対象のDCSの通信接続が切れた場合も、再割り振りできるようにしている。DCSに注文が割り振られた後に通信接続が切れて、DCSリストの接続状態が「非接続」となった場合、「非接続」となったDCSに割当てられたダウンロード対象の注文番号(図7参照)に対応する注文を、DCSに再割り当てする。このとき、他の接続状態が「接続」となっているDCSに再割り当てする。すなわち、図11のS1106で「いいえ」の後に、当該DCSに注文が割当てられている場合は、当該注文を他のDCSに再割り振りする。なお、通信接続が切れる場合とは、通信障害があった場合や、DCSが何らかの原因によりシャットダウンしてしまった場合等が挙げられる。なお、接続が切れていたDCSと再接続した場合(S1106で「はい」)、当該DCSに対して初期化指示をする(S1107)。そして、初期化指示を受けたDCSは図18を用いて説明した初期化処理を行う。したがって、DCSに既にダウンロード済みのファイルは削除される。以上より、異なるDCSに重複して注文が割当てられることがない。
上述したように、本実施形態では、DHSは、非接続状態から接続状態になる場合に、ダウンロード処理を中止するとともにダウンロード済みのファイルを削除する。非接続状態から接続状態になる場合とは、例えば、通信ができなくなってから再度通信ができるようになった場合(S1104でいいえ、S1106ではいとなる場合)や、シャットダウンしてから再起動する場合が挙げられる。シャットダウンしてから再起動をする場合は、シャットダウン処理のとき(図16参照)と、初期化処理のとき(図18参照)のいずれの場合も、ダウンロード処理を中止するとともにダウンロード済みのファイルを削除するものとしたが、これに限定されない。例えば、いずれか一方で実行するようにしてもよい。
本実施形態では、上述したように、いずれかのDCSがシャットダウンしても、他のDCSに割り振りを行うことができる。したがって、シャットダウンしたDCSに割り振られていた注文の処理が実行されずに止まってしまうのを抑制することができる。また、このとき、注文が重複してDCSに割り振られることがないため、無駄な処理を実行するのを抑制することができる。
また、本実施形態では、各DCSは注文が割当てられると注文データのダウンロードを実行し、トリガファイルとなるダウンロード完了ファイルが出力されてから、インポーター処理を行う。具体的には、決済前であっても時間のかかる注文データのダウンロードを先に終了させつつ、決済が終了した時点でダウンロード完了ファイルを出力して、インポーター処理を行う。これにより、決済後にすぐにプリントシステムに処理を実行させることができる。
<他の実施形態>
本発明は、上述した実施形態に限定されるものではない。例えば、上述した実施形態では、ダウンローダーPC140が、ダウンローダーアプリ145及びDHS146を有するものとしたが、ダウンローダーPC以外の装置が、ダウンローダーアプリ145及びDHS146を有するものとしてもよい。すなわち、注文一覧を監視し、各ダウンローダーPCに注文を割り振る装置は、ダウンローダーPC以外の装置であってもよい。
また、入稿フォルダ144は、ダウンローダーPCが保持するものとしたが、これに限定されず、ダウンローダーPC以外の装置が保持するようにしてもよい。
上述した実施形態は、以下の処理を実行することによっても実現される。すなわち、上述した実施形態の機能を実現するソフトウエア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPUやMPU等)がプログラムを読み出して実行する処理である。また、プログラムは、1つのコンピュータで実行させても、複数のコンピュータを連動させて実行させるようにしてもよい。また、上記した処理の全てをソフトウエアで実現する必要はなく、処理の一部または全部をASIC等のハードウェアで実現するようにしてもよい。また、CPUも1つのCPUで全ての処理を行うものに限らず、複数のCPUが適宜連携をしながら処理を行うものとしてもよい。