(57)【特許請求の範囲】
【請求項１】
業務処理を実現するためのプログラムを生成するプログラム生成装置であって、
プロセッサ、メモリ及び入出力インタフェースを有し、
前記メモリは、
第１の処理が実行処理を呼び出す順序を示す第１のテンプレートと、前記実行処理を具体化する第２のテンプレートと、前記第１のテンプレート及び前記第２のテンプレートにおける第１の設定箇所に設定される複数の第１の入力項目を示す入力項目情報と、を保持し、
前記第１の処理が呼び出す前記実行処理に新たな処理を追加する指示と、前記第１の処理が前記新たな処理を呼び出す順序と、入力項目の指示とを、前記入出力インタフェースを介して受け付け、
前記新たな処理が実行する処理を示すテンプレートとして、前記第２のテンプレートを読み出し、
前記受け付けた指示が示す入力項目が前記複数の第１の入力項目に含まれる場合、前記複数の第１の入力項目に含まれる前記受け付けた指示が示す入力項目の数だけ、前記読み出した第２のテンプレートを複製し、
前記複製した第２のテンプレートにおける前記第１の設定箇所に、前記受け付けた指示が示す入力項目を設定した結果を第２のプログラムとして出力し、
前記複数の第１の入力項目の数だけ、前記第１のテンプレートを複製し、
前記複製した第１のテンプレートにおける前記第１の設定箇所に、前記第１の入力項目の各々を設定し、
前記受け付けた新たな処理を呼び出す順序に従って、前記受け付けた指示が示す入力項目を設定した第１のテンプレートが前記第２のプログラムを呼び出すように、前記受け付けた指示が示す入力項目を設定した第１のテンプレートを更新し、
前記更新した後、前記第１の入力項目を設定した第１のテンプレートを第１のプログラムとして出力することを特徴とするプログラム生成装置。
【請求項２】
請求項１に記載のプログラム生成装置であって、
前記第１のテンプレートが示す順序に前記実行処理の呼出し処理を挿入する、挿入箇所の候補を示す箇所情報を保持し、
前記入出力インタフェースを介して、前記箇所情報を出力し、
前記箇所情報から選択された挿入箇所の候補を、前記入出力インタフェースを介して受け付けることによって、前記第１の処理が新たな処理を呼び出す順番を受け付けることを特徴とするプログラム生成装置。
【請求項３】
請求項１に記載のプログラム生成装置であって、
前記入力項目情報は、前記複数の第１の入力項目と異なる一つの第２の入力項目を示し、
前記第２のテンプレートは、前記第２の入力項目を設定する第２の設定箇所を含み、
前記受け付けた指示が示す入力項目に前記第２の入力項目が含まれる場合、前記複製した第２のテンプレートにおける前記第１の設定箇所及び前記第２の設定箇所に前記受け付けた指示が示す入力項目を設定した結果を、前記第２のプログラムとして出力することを特徴とするプログラム生成装置。
【請求項４】
請求項３に記載のプログラム生成装置であって、
前記入出力インタフェースを介して、前記入力項目情報を出力し、
前記入力項目情報から選択された第１の入力項目の少なくとも一つ、及び、前記第２の入力項目を、前記入出力インタフェースを介して受け付けることを特徴とするプログラム生成装置。
【請求項５】
請求項１に記載のプログラム生成装置であって、
前記第２のテンプレートは、プログラムの動作を特徴づけるパラメータが設定される設定箇所を示す情報を含み、
前記入出力インタフェースを介して、前記パラメータを受け付け、
前記受け付けたパラメータを、前記複製した第２のテンプレートに設定することを特徴とするプログラム生成装置。
【請求項６】
請求項１に記載のプログラム生成装置であって、
前記メモリは、第２の処理が前記第１の処理を含む複数の処理を呼び出す順序を示す第３のテンプレートを保持し、
前記第１の処理が呼び出す処理に新たな処理を追加する指示を受け付けた場合、前記第３のテンプレートを第３のプログラムとして出力することを特徴とするプログラム生成装置。
【請求項７】
業務処理を実現するためのプログラムを生成するプログラム生成装置によるプログラム生成方法であって、
前記プログラム生成装置は、プロセッサ、メモリ及び入出力インタフェースを有し、
前記メモリは、第１の処理が実行処理を呼び出す順序を示す第１のテンプレートと、前記実行処理を具体化する第２のテンプレートと、前記第１のテンプレート及び前記第２のテンプレートにおける第１の設定箇所に設定される複数の第１の入力項目を示す入力項目情報と、を保持し、
前記プロセッサが、前記第１の処理が呼び出す前記実行処理に新たな処理を追加する指示と、前記第１の処理が前記新たな処理を呼び出す順序と、入力項目の指示とを、前記入出力インタフェースを介して受け付ける手順と、
前記プロセッサが、前記新たな処理が実行する処理を示すテンプレートとして、前記第２のテンプレートを読み出す手順と、
前記プロセッサが、前記受け付けた指示が示す入力項目が前記複数の第１の入力項目に含まれる場合、前記複数の第１の入力項目に含まれる前記受け付けた指示が示す入力項目の数だけ、前記読み出した第２のテンプレートを複製する手順と、
前記プロセッサが、前記複製した第２のテンプレートにおける前記第１の設定箇所に、前記受け付けた指示が示す入力項目を設定した結果を第２のプログラムとして出力する手順と、
前記プロセッサが、前記複数の第１の入力項目の数だけ、前記第１のテンプレートを複製する手順と、
前記プロセッサが、前記複製した第１のテンプレートにおける前記第１の設定箇所に、前記第１の入力項目の各々を設定する手順と、
前記プロセッサが、前記受け付けた新たな処理を呼び出す順序に従って、前記受け付けた指示が示す入力項目を設定した第１のテンプレートが前記第２のプログラムを呼び出すように、前記受け付けた指示が示す入力項目を設定した第１のテンプレートを更新する手順と、
前記プロセッサが、前記更新した後、前記第１の入力項目を設定した第１のテンプレートを第１のプログラムとして出力する手順と、を含むことを特徴とするプログラム生成方法。
【請求項８】
請求項７に記載のプログラム生成方法であって、
前記メモリは、前記第１のテンプレートが示す順序に前記実行処理の呼出し処理を挿入する、挿入箇所の候補を示す箇所情報を保持し、
前記プロセッサが、前記入出力インタフェースを介して、前記箇所情報を出力する手順と、
前記プロセッサが、前記箇所情報から選択された挿入箇所の候補を、前記入出力インタフェースを介して受け付けることによって、前記第１の処理が新たな処理を呼び出す順番を受け付ける手順と、を含むことを特徴とするプログラム生成方法。
【請求項９】
請求項７に記載のプログラム生成方法であって、
前記入力項目情報は、前記複数の第１の入力項目と異なる一つの第２の入力項目を示し、
前記第２のテンプレートは、前記第２の入力項目を設定する第２の設定箇所を含み、
前記プロセッサが、前記受け付けた指示が示す入力項目に前記第２の入力項目が含まれる場合、前記複製した第２のテンプレートにおける前記第１の設定箇所及び前記第２の設定箇所に前記受け付けた指示が示す入力項目を設定した結果を、前記第２のプログラムとして出力する手順を含むことを特徴とするプログラム生成方法。
【請求項１０】
請求項９に記載のプログラム生成方法であって、
前記プロセッサが、前記入出力インタフェースを介して、前記入力項目情報を出力する手順と、
前記プロセッサが、前記入力項目情報から選択された第１の入力項目の少なくとも一つ、及び、前記第２の入力項目を、前記入出力インタフェースを介して受け付ける手順と、を含むことを特徴とするプログラム生成方法。
【請求項１１】
請求項７に記載のプログラム生成方法であって、
前記第２のテンプレートは、プログラムの動作を特徴づけるパラメータが設定される設定箇所を示す情報を含み、
前記プロセッサが、前記入出力インタフェースを介して、前記パラメータを受け付ける手順と、
前記プロセッサが、前記受け付けたパラメータを、前記複製した第２のテンプレートに設定する手順と、を含むことを特徴とするプログラム生成方法。
【請求項１２】
請求項７に記載のプログラム生成方法であって、
前記メモリは、第２の処理が前記第１の処理を含む複数の処理を呼び出す順序を示す第３のテンプレートを保持し、
前記プロセッサが、前記第１の処理が呼び出す処理に新たな処理を追加する指示を受け付けた場合、前記第３のテンプレートを第３のプログラムとして出力する手順を含むことを特徴とするプログラム生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム生成装置に関する。
【背景技術】
【０００２】
通信事業者は、ＬＴＥ通信又はＷｉＭＡＸ通信などの通信回線の利用を可能にするサービス（通信サービス）を顧客に提供する際に、通信サービスの新規申込業務及び解約業務などの様々な業務を行っている。このような通信事業者が行う業務には、一定の業務の流れが存在するため、通信業者は、同様な内容の業務を定型化された処理によって実現することができる。
【０００３】
このため、通信事業者は、定型化された処理によって実現する業務を、定型処理を行うプログラムによってシステム化することが可能である。一般的に、定型処理を行うプログラムを開発する者は、定型処理を実現するプログラムを、自動的に生成する計算機システムを用いることが可能であり、その結果として定型処理を実現する計算機システムの開発効率を高めることができる。
【０００４】
以下において、計算機システムが、プログラムを実行することによって新たなプログラムを生成することをプログラムの自動生成と記載する。
【０００５】
計算機システムは、プログラムを生成するため、プログラムを特徴付ける入力情報を読み込み、読み込んだ入力情報を反映したプログラムを生成する。さらに、プログラム生成装置が、入力情報に応じて自動的に生成するプログラムが持つ処理ロジックを柔軟に変化させる技術が提案されている（例えば、特許文献１参照）。
【０００６】
特許文献１には、プログラムの自動生成において、入力情報の複数の項目にまたがる項目関連チェックを行うプログラムを生成する技術が開示されている。特許文献１に記載された技術は、入力項目に応じて追加生成するチェックロジックを動的に変化させることができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−０４１６７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に記載された技術は、入力項目に応じたバリエーションを有したプログラムとして追加生成できる処理の対象が、入力項目の関連をチェックする処理に限られる。
【０００９】
しかし、例えば、通信事業者が行う業務をプログラムによって実行するためには、通信サービスの新規加入及び解約などの様々な処理を実装する必要がある。そして、入力項目をチェックする行為は業務における一行為に過ぎないため、特許文献１に記載された技術を用いても、多くの業務がプログラムによって実装できない。
【００１０】
そのため、特許文献１に記載された技術では、入力項目の特徴を反映し、かつ、様々な処理を含む業務を実現するプログラムを自動的に生成することが困難である。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明は、業務処理を実現するためのプログラムを生成するプログラム生成装置であって、プロセッサ、メモリ及び入出力インタフェースを有し、前記メモリは、第１の処理が実行処理を呼び出す順序を示す第１のテンプレートと、前記実行処理を具体化する第２のテンプレートと、前記第１のテンプレート及び前記第２のテンプレートにおける第１の設定箇所に設定される複数の第１の入力項目を示す入力項目情報と、を保持し、前記第１の処理が呼び出す実行処理に新たな処理を追加する指示と、前記第１の処理が前記新たな処理を呼び出す順序と、入力項目の指示とを、前記入出力インタフェースを介して受け付け、前記新たな処理が実行する処理を示すテンプレートとして、前記第２のテンプレートを読み出し、前記受け付けた指示が示す入力項目が前記複数の第１の入力項目に含まれる場合、前記複数の第１の入力項目に含まれる前記受け付けた指示が示す入力項目の数だけ、前記読み出した第２のテンプレートを複製し、前記複製した第２のテンプレートにおける前記第１の設定箇所に、前記受け付けた指示が示す入力項目を設定した結果を、前記第２のプログラムとして出力し、前記複数の第１の入力項目の数だけ、前記第１のテンプレートを複製し、前記複製した第１のテンプレートにおける前記第１の設定箇所に、前記第１の入力項目の各々を設定し、前記受け付けた新たな処理を呼び出す順序に従って、前記受け付けた指示が示す入力項目を設定した第１のテンプレートが前記第２のプログラムを呼び出すように、前記受け付けた指示が示す入力項目を設定した第１のテンプレートが示す順序を更新し、前記更新した後、前記第１の入力項目を設定した第１のテンプレートを、前記第１のプログラムとして出力する。
【発明の効果】
【００１２】
本発明によれば、入力項目の特徴を反映し、かつ、様々な処理を含む業務を実現するプログラムを自動的に生成することができる。
【００１３】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１４】
【図１】本実施例のプログラム生成装置の物理的な構成の一つ目の例を示すブロック図である。
【図２Ａ】本実施例のプログラム生成装置が受け付ける顧客情報ｘｍｌの例を示す説明図である。
【図２Ｂ】本実施例のプログラム生成装置が受け付ける商品情報ｘｍｌの例を示す説明図である。
【図３Ａ】本実施例の顧客情報を示す説明図である。
【図３Ｂ】本実施例の商品情報を示す説明図である。
【図４】本実施例の業務プログラムの雛型となるプログラム生成テンプレートを示す説明図である。
【図５】本実施例の業務プログラムにおけるコンポーネントの呼出し順序を示す説明図である。
【図６】本実施例のプロセステンプレートに基づいて生成されるコンポーネントを示す説明図である。
【図７】本実施例のプログラム生成処理を示すフローチャートである。
【図８】本実施例のプログラム生成装置の物理的な構成の二つ目の例を示すブロック図である。
【図９】本実施例の追加処理情報を示す説明図である。
【図１０】本実施例の業務種別を示す説明図である。
【図１１】本実施例の呼出し処理を挿入可能な箇所の識別子を示す説明図である。
【図１２Ａ】本実施例のプロセス挿入箇所を示す説明図である。
【図１２Ｂ】本実施例のファンクション挿入箇所を示す説明図である。
【図１３】本実施例の追加設計情報を示す説明図である。
【図１４】本実施例の追加する処理の設計を入力するための追加処理設計ＧＵＩの例を示す説明図である。
【図１５】本実施例の追加生成テンプレートに基づいて生成されるコンポーネントを示す説明図である。
【図１６】本実施例のファンクションの呼出し処理が挿入されたプロセスを示す説明図である。
【図１７】本実施例の追加された処理を含む業務プログラムにおけるコンポーネントの呼出し順序を示す説明図である。
【図１８Ａ】本実施例の入力項目を受け付ける処理を示すフローチャートである。
【図１８Ｂ】本実施例の追加処理を実行するプログラムを生成する処理を示すフローチャートである。
【図１８Ｃ】本実施例の業務プログラムに追加処理を挿入する処理を示すフローチャートである。
【図１９】本実施例の追加処理設計ＧＵＩに入力された項目を示す説明図である。
【発明を実施するための形態】
【００１５】
まず、定型処理を行うプログラムの生成技術について説明する。以下に示す実施例では、通信事業者の主業務の一つである新規申込業務を実現するプログラムを自動生成する例について述べる。
【００１６】
新規申込業務とは、顧客が通信サービスの利用を新規で申し込んだ際に、申込時に入力される顧客情報及び商品情報に基づいて、通信事業者が通信サービスの利用開始手続きを行い、顧客が通信サービスを利用できるようにする業務処理を指す。ここで、顧客情報とは、例えば、「氏名」、「住所」及び「生年月日」など、顧客を特定するための情報である。また、商品情報とは、例えば、「ＬＴＥ通信サービス」及び「ＷｉＭＡＸ通信サービス」など、通信事業者が提供する商品又はサービスなどを特定するための情報である。
【００１７】
具体的には、新規申込業務には、以下で示す定型化されたサブ業務１〜４が存在する。
【００１８】
サブ業務１は、顧客からの通信サービスの利用の申込みを受け付ける業務（申込受付業務）である。
【００１９】
サブ業務２は、申込対象の通信サービスを顧客が利用できるように通信設備を設定し、通信サービスを開通させる業務（開通業務）である。
【００２０】
サブ業務３は、通信サービスの利用に関する契約情報を、通信サービスを提供する通信システムに登録する業務（契約完了業務）である。
【００２１】
サブ業務４は、顧客が利用した通信量に応じた顧客の課金額の計算を開始する業務（課金開始業務）である。
【００２２】
通信事業者が顧客に提供する通信サービスには複数の種類のサービスが存在し、通信システムは、サービスに従った処理を行う。新規申込業務において複数のサービスを同時に申し込まれた場合、通信システムは、申し込まれたすべてのサービスに対応する処理を行う。
【００２３】
以下、このような新規申込業務を実現するプログラムを自動生成するプログラム生成装置について説明する。
【００２４】
図１は、本実施例のプログラム生成装置１００の物理的な構成の一つ目の例を示すブロック図である。
【００２５】
プログラム生成装置１００は、入力Ｉ／Ｆ（インタフェース）１０１、出力Ｉ／Ｆ１０２、ＣＰＵ１０３、ＨＤＤ（ハードディスクドライブ）１０４及びメモリ１０５を有し、これらの装置はデータバス１０６によって接続される。データバス１０６は、各々の装置間の通信を中継する。
【００２６】
入力Ｉ／Ｆ１０１は、入力装置１０７と接続するためのインタフェースである。入力装置１０７は、例えばマウス又はキーボードなど、ユーザによるプログラム生成装置１００への指示を受け付けるための装置である。
【００２７】
また、出力Ｉ／Ｆ１０２は、表示装置１０８と接続するインタフェースである。表示装置１０８は、例えばディスプレイなど、ユーザにプログラム生成装置１００による処理結果を提示するための装置である。入力装置１０７及び表示装置１０８は、例えばタブレット端末のように、一つの装置に実装されてもよい。
【００２８】
ＣＰＵ１０３は、少なくとも一つのプロセッサを有する演算装置であれば、いかなる装置であってもよい。ＣＰＵ１０３は、メモリ１０５のプログラムを実行することによって、プログラム生成装置１００の機能を実装する。
【００２９】
メモリ１０５は、不揮発性の記憶素子であるＲＯＭ及び揮発性の記憶素子であるＲＡＭを含む。ＲＯＭは、不変のプログラム（例えば、ＢＩＯＳ）などを格納する。ＲＡＭは、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような高速かつ揮発性の記憶素子であり、補助記憶装置に格納されたプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
【００３０】
メモリ１０５は、プログラムとして、生成プログラム１０９を有する。また、メモリ１０５は、データとして、顧客情報１１１、商品情報１１２、オーダーテンプレート１１３、プロセステンプレート１１４、及び、ファンクションテンプレート１１５を有する。
【００３１】
生成プログラム１０９は、本実施例の業務を実行するための業務プログラムを生成するプログラムである。また、生成プログラム１０９は、プログラムを生成する処理を行うためのアプリケーションロジック１１０を有する。アプリケーションロジック１１０は、生成プログラム１０９を実装するためのサブプログラム、及び、変数等を含む。
【００３２】
顧客情報１１１は、顧客情報を格納する。商品情報１１２は、商品情報を格納する。オーダーテンプレート１１３、プロセステンプレート１１４及びファンクションテンプレート１１５は、業務プログラムを構成するコンポーネント（オーダー、プロセス、及びファンクションの総称）の雛型である。以下において、オーダーテンプレート１１３、プロセステンプレート１１４及びファンクションテンプレート１１５を総称して、プログラム生成テンプレートと記載する。
【００３３】
オーダー、プロセス及びファンクションの詳細については、後述する。
【００３４】
なお、メモリ１０５が有するデータは、データ容量が多い場合など、ＨＤＤ１０４に格納されてもよい。そして、ＣＰＵ１０３は、必要に応じてＨＤＤ１０４からデータをメモリ１０５に読み出してもよい。
【００３５】
ＨＤＤ１０４は、補助記憶装置であれば、いかなる装置であってもよく、例えば、フラッシュメモリ（ＳＳＤ）などの大容量かつ不揮発性の記憶装置であってもよい。また、ＨＤＤ１０４は、ＣＰＵ１０３が実行するプログラム及びプログラムの実行時に使用されるデータを格納してもよい。
【００３６】
メモリ１０５が有するプログラム及びデータは、リムーバブルメディア（ＣＤ−ＲＯＭ、又は、フラッュメモリなど）又はネットワークを介してプログラム生成装置１００に提供され、非一時的記憶媒体であるＨＤＤ１０４に格納されてもよい。このため、プログラム生成装置１００は、リムーバブルメディアからデータを取得するインタフェースを有してもよい。
【００３７】
プログラム生成装置１００は、物理的に一つの計算機上で、又は、論理的又は物理的に複数の計算機上で構成される計算機システムであり、前述したプログラムが、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。
【００３８】
本実施例において、業務プログラムに入力される入力値には、入力値の性質、目的及び特徴に従って、入力項目が割り当てられる。顧客は、入力項目に従い、自らの契約に関する入力値を業務プログラムに入力する。例えば、入力項目が「名前」である場合、顧客は、入力値として「山田太郎」を業務プログラムに入力する。
【００３９】
業務プログラムは、入力項目に対応する変数、クラス名、及びサブプログラムの呼出し処理等を含む。このため、生成プログラム１０９は、入力項目を設定された業務プログラムを生成する必要がある。
【００４０】
図２Ａは、本実施例のプログラム生成装置１００が受け付ける顧客情報ｘｍｌ２０１の例を示す説明図である。
【００４１】
顧客情報ｘｍｌ２０１は、プログラム生成装置１００が顧客情報を保持するための項目を定義する。また、顧客情報ｘｍｌ２０１は、業務プログラムに入力される顧客情報の入力項目を定義するための情報である。
【００４２】
顧客情報ｘｍｌ２０１は、タグ２０２、２０３及び２０４を含む。タグ２０２は、顧客の氏名の入力項目を定義する。タグ２０３は、顧客の住所の入力項目を定義する。タグ２０４は、顧客の生年月日の入力項目を定義する。
【００４３】
タグ２０２、２０３及び２０４は、各々ｃｕｓｔｏｍｅｒタグによって表現される。そして、ｃｕｓｔｏｍｅｒタグは、入力項目の識別子、名称、英名、及び、その入力項目に割り当てられる属性の名称を示す。ｃｕｓｔｏｍｅｒタグとは、「＜ｃｕｓｔｏｍｅｒ＞」と「＜／ｃｕｓｔｏｍｅｒ＞」とが囲む範囲である。
【００４４】
入力項目の識別子とは、入力項目を一意に特定するために使用される識別子である。入力項目の識別子は、ｉｄタグを用いて「＜ｉｄ＞識別子＜／ｉｄ＞」のように表現される。
【００４５】
入力項目の名称は、ｎａｍｅタグを用いて「＜ｎａｍｅ＞名称＜／ｎａｍｅ＞」のように表現される。入力項目の英名は、生成される業務プログラム内でクラス名などに入力項目を設定するために使用される。入力項目の英名は、ｎａｍｅＥｎタグを用いて「＜ｎａｍｅＥｎ＞名称＜／ｎａｍｅＥｎ＞」のように表現される。
【００４６】
入力項目が持つ属性名は、生成される業務プログラムにおいて属性値を格納する変数名などに使用される。入力項目が持つ属性名は、ａｔｔｒＮａｍｅタグを用いて「＜ａｔｔｒＮａｍｅ＞属性名＜／ａｔｔｒＮａｍｅ＞」のように表現される。ａｔｔｒＮａｍｅタグは、「＜ａｔｔｒＮａｍｅｓ＞」と「＜／ａｔｔｒＮａｍｅｓ＞」とが囲む範囲である。
【００４７】
入力項目が持つ属性が複数存在する場合、ａｔｔｒＮａｍｅｓタグ内に複数のａｔｔｒＮａｍｅタグが設定される。
【００４８】
図２Ｂは、本実施例のプログラム生成装置１００が受け付ける商品情報ｘｍｌ２１１の例を示す説明図である。
【００４９】
商品情報ｘｍｌ２１１は、プログラム生成装置１００が商品情報を保持するための項目を定義する。また、商品情報ｘｍｌ２１１は、業務プログラムに入力される商品情報の入力項目を定義するための情報である。
【００５０】
商品情報ｘｍｌ２１１は、タグ２１２、及び２１３を含む。タグ２１２は、ＬＴＥ通信サービスに関する入力項目を定義し、タグ２１３は、ＷｉＭＡＸ通信サービスに関する入力項目を定義する。
【００５１】
タグ２１２、及び２１３は、各々ｐｒｏｄｕｃｔタグによって表現される。そして、ｐｒｏｄｕｃｔタグは、入力項目の識別子、名称、英名、及び、その入力項目が持つ属性名を示す。商品情報ｘｍｌ２１１における定義方法は、顧客情報ｘｍｌ２０１と同じである。
【００５２】
プログラム生成装置１００の生成プログラム１０９は、顧客情報ｘｍｌ２０１及び商品情報ｘｍｌ２１１を、入力Ｉ／Ｆ１０１を介して受け付けた場合、受け付けた顧客情報ｘｍｌ２０１及び商品情報ｘｍｌ２１１に基づいて顧客情報１１１及び商品情報１１２を更新する。そして、生成プログラム１０９は、顧客情報１１１及び商品情報１１２において定義された入力項目を、生成する業務プログラムに設定する。
【００５３】
プログラム生成装置１００の管理者又は運用者（以下、運用者等）は、顧客情報ｘｍｌ２０１及び商品情報ｘｍｌ２１１の内容を変更することによって、業務プログラムに反映する入力項目を変更する。
【００５４】
図３Ａは、本実施例の顧客情報１１１を示す説明図である。
【００５５】
顧客情報１１１は、項目ＩＤ３０１、顧客項目名３０２、顧客項目英名３０３、及び顧客属性リスト３０４を含む。生成プログラム１０９は、顧客情報ｘｍｌ２０１を受け付けた場合、顧客情報ｘｍｌ２０１のｉｄタグの設定値を項目ＩＤ３０１に格納し、顧客情報ｘｍｌ２０１のｎａｍｅタグの設定値を顧客項目名３０２に格納する。
【００５６】
また、生成プログラム１０９は、顧客情報ｘｍｌ２０１のｎａｍｅＥｎタグの設定値を顧客項目英名３０３に格納し、顧客情報ｘｍｌ２０１のａｔｔｒＮａｍｅｓタグにおけるａｔｔｒＮａｍｅタグの設定値を、顧客属性リスト３０４に格納する。また、顧客情報１１１は、顧客情報ｘｍｌ２０１のｃｕｓｔｏｍｅｒタグの数だけレコードを含む。
【００５７】
図３Ｂは、本実施例の商品情報１１２を示す説明図である。
【００５８】
商品情報１１２は、商品ＩＤ３１１、商品項目名３１２、商品項目英名３１３、商品属性リスト３１４を含む。生成プログラム１０９は、商品情報ｘｍｌ２１１を受け付けた場合、商品情報ｘｍｌ２１１のｉｄタグの設定値を商品ＩＤ３１１に格納し、商品情報ｘｍｌ２１１のｎａｍｅタグの設定値を商品項目名３１２に格納する。
【００５９】
そして、生成プログラム１０９は、商品情報ｘｍｌ２１１のｎａｍｅＥｎタグの設定値を商品項目英名３１３に格納し、ａｔｔｒＮａｍｅｓタグにおけるａｔｔｒＮａｍｅタグの設定値を、商品属性リスト３１４に格納する。商品情報１１２は、商品情報ｘｍｌ２１１のｐｒｏｄｕｃｔタグの数だけレコードを含む。
【００６０】
業務プログラムは、オーダー、プロセス及びファンクションと呼ばれる３種類のコンポーネントから構成される。オーダーは、新規申込業務などの業務が正しく処理されるようプロセスの実行順序を定義するコンポーネントである。プロセスは、申込受付業務及び開通業務などのサブ業務の単位でファンクションの実行順序を定義するコンポーネントである。そして、ファンクションは、最小単位の業務手続きの処理を示すコンポーネントである。
【００６１】
図４は、本実施例の業務プログラムの雛型となるプログラム生成テンプレートを示す説明図である。
【００６２】
プログラム生成テンプレートは、オーダー、プロセス、ファンクションそれぞれのコンポーネントの雛型である。プログラム生成テンプレートには、顧客情報１１１と商品情報１１２とが有する入力項目の名称及び入力項目に割り当てられる属性の名称などを設定する箇所（以下、項目設定箇所）が含まれる。生成プログラム１０９は、顧客情報１１１又は商品情報１１２が示す入力項目の内容を、項目設定箇所に設定することによって、実行可能なコンポーネントを生成する。
【００６３】
プログラム生成テンプレートをコンポーネントに変換して組み合わせることによって、生成プログラム１０９は、一つの業務プログラムを生成する。
【００６４】
図４に示すオーダーテンプレート１１３は、複数のオーダーテンプレート１１３ａ〜１１３ｃを含み、プロセステンプレート１１４は、複数のプロセステンプレート１１４ａ〜１１４ｄを含み、ファンクションテンプレート１１５は、複数のファンクションテンプレート１１５ａ〜１１５ｆを含む。
【００６５】
オーダーテンプレート１１３ａ〜１１３ｃは、各々、プロセステンプレート１１４ａ〜１１４ｄを呼び出すための記載を含む。テンプレートを呼び出すための記載とは、例えば、関数の記載などである。また、プロセステンプレート１１４ａ〜１１４ｄは、各々、ファンクションテンプレート１１５ａ〜１１５ｆを呼び出す記載を含む。
【００６６】
図５は、本実施例の業務プログラムにおけるコンポーネントの呼出し順序を示す説明図である。
【００６７】
図５は、生成プログラム１０９が、図４に示すプログラム生成テンプレートを用いて生成した新規申込業務プログラムを示す。生成された新規申込業務プログラムは、新規申込オーダー５１３ａを含む。新規申込オーダー５１３ａは、サブ業務を処理する複数のプロセスを、新規申込業務の一連の流れに従って読み出すコンポーネントである。
【００６８】
図５に示す新規申込オーダー５１３ａは、申込受付プロセス５１４ａ、ＬＴＥ開通プロセス５１４ｂ＿１、ＷｉＭＡＸ開通プロセス５１４ｂ＿２、契約完了プロセス５１４ｃ、ＬＴＥ課金開始プロセス５１４ｄ＿１及びＷｉＭＡＸ課金開始プロセス５１４ｄ＿２を、呼び出す。
【００６９】
また、申込受付プロセス５１４ａは、例えば、申込情報チェックファンクション５１５ａ及び申込情報登録ファンクション５１５ｂを呼び出すコンポーネントである。また、ＬＴＥ開通プロセス５１４ｂ＿１及びＷｉＭＡＸ開通プロセス５１４ｂ＿２は、開通業務に必要な複数のファンクションを呼び出すコンポーネントであり、契約完了プロセス５１４ｃは、契約完了業務に必要な複数のファンクションを呼び出すコンポーネントであり、ＬＴＥ課金開始プロセス５１４ｄ＿１及びＷｉＭＡＸ課金開始プロセス５１４ｄ＿２は、課金開始業務に必要なファンクションを呼び出すコンポーネントである。
【００７０】
これらのコンポーネントは、それぞれ対応したプログラム生成テンプレートに基づいて生成される。例えば、新規申込オーダー５１３ａは、図４に示すオーダーテンプレート１１３ａに基づいて生成される。また、申込受付プロセス５１４ａは、図４に示すプロセステンプレート１１４ａに基づいて生成され、申込情報チェックファンクション５１５ａは、ファンクションテンプレート１１５ａに基づいて生成され、申込情報登録ファンクション５１５ｂは、ファンクションテンプレート１１５ｂに基づいて生成される。
【００７１】
本実施例において、顧客が複数の通信サービスの利用を申し込んだ場合、一連の新規申込業務の中で、申し込んだ複数の通信サービスのそれぞれに対して開通業務、及び課金開始業務などを実行する必要がある。
【００７２】
このような場合を考慮し、本実施例の生成プログラム１０９は、プロセステンプレート１１４ｂとプロセステンプレート１１４ｄとに基づいて、開通業務を行う開通プロセス５１４ｂと課金開始業務を行う課金開始プロセス５１４ｄとを、商品情報１１２のレコードの数だけ、すなわち、商品項目名の数だけ、生成する。ここで、プロセステンプレート１１４ｂは、開通プロセステンプレートであり、プロセステンプレート１１４ｄは、課金開始プロセステンプレートである。
【００７３】
そして、生成プログラム１０９は、商品情報１１２のレコードが示す情報を、開通プロセス５１４ｂ及び課金開始プロセス５１４ｄに格納することによって、通信サービスごとの開通プロセス５１４ｂ（５１４ｂ＿１、５１４ｂ＿２）及び課金開始プロセス５１４ｄ（５１４ｄ＿１、５１４ｄ＿２）を生成する。
【００７４】
また、開通プロセス５１４ｂ及び課金開始プロセス５１４ｄから呼び出されるファンクションに関しても同様に、生成プログラム１０９は、ファンクションテンプレート１１５に基づいて、商品情報１１２のレコードの数だけ、ファンクションを生成する。
【００７５】
また、下位のコンポーネントが、通信サービスごとに複数生成された場合、生成プログラム１０９は、複数生成された下位のコンポーネントが並列に実行されるよう、上位のコンポーネントが呼び出す下位のコンポーネントの順番を更新する。なお、本実施例において、オーダーが上位のコンポーネントである場合、下位のコンポーネントはプロセスであり、プロセスが上位のコンポーネントである場合、下位のコンポーネントはファンクションである。
【００７６】
図６は、本実施例のプロセステンプレート１１４に基づいて生成されるコンポーネントを示す説明図である。
【００７７】
例えば、プロセステンプレート１１４ｂに基づいて生成されるＬＴＥ開通プロセス５１４ｂ＿１を図６に示す。プロセステンプレート１１４ｂは、商品情報１１２の商品項目英名３１３を設定する部分を示す項目設定箇所６０３を含む。
【００７８】
項目設定箇所６０３は、例えば、プログラムにおける変数のように記載されてもよい。項目設定箇所６０３は、顧客情報１１１が示す入力項目又は商品情報１１２が示す入力項目を設定する箇所と、設定する入力項目とを示す。
【００７９】
まず、生成プログラム１０９は、新規申込オーダー５１３ａがＬＴＥ開通プロセス５１４ｂを呼び出す場合、プロセステンプレート１１４ｂを読み出す。生成プログラム１０９は、読み出したプロセステンプレート１１４ｂの項目設定箇所６０３に従って、顧客情報１１１が示す入力項目又は商品情報１１２が示す入力項目を、プロセステンプレート１１４ｂに設定する。
【００８０】
例えば、項目設定箇所６０３が「＄｛商品項目英名｝」の文字列である場合、生成プログラム１０９は、「＄｛商品項目英名｝」の文字列を、商品項目英名３１３の内容に置換することによって、入力項目を設定する。
【００８１】
これによって、生成プログラム１０９は、プロセステンプレート１１４ｂに基づいてＬＴＥ開通プロセス５１４ｂ＿１を生成し、ＬＴＥ開通プロセス５１４ｂ＿１をプロセスファイルとして出力する。項目設定箇所６０３は、商品項目英名３１３以外にも、顧客項目英名３０３、顧客属性リスト３０４、及び、商品属性リスト３１４等、顧客情報１１１及び商品情報１１２が示す入力項目であれば、いかなる入力項目の設定を指定してもよい。
【００８２】
なお、一つのプログラム生成テンプレートが、例えば、商品項目英名３１３及び商品属性リスト３１４を設定することを示す項目設定箇所を含む場合、生成プログラム１０９は、一つのプログラム生成テンプレートには、同じレコードに含まれる商品項目英名３１３及び商品属性リスト３１４を設定する。
【００８３】
生成プログラム１０９は、オーダーテンプレート１１３及びファンクションテンプレート１１５に基づいて、前述と同じ手順によってオーダー及びファンクションのコンポーネントを変換する。
【００８４】
図７は、本実施例のプログラム生成処理を示すフローチャートである。
【００８５】
なお、図７に示す処理は、顧客情報１１１が、一つのレコードのみを含む場合の処理の例である。すなわち、プログラム生成テンプレートが、顧客情報１１１の入力項目を設定する項目設定箇所を含む場合、当該項目設定箇所には、顧客情報１１１の一つのレコードに含まれる入力項目に関する情報がプログラム生成テンプレートに設定される。
【００８６】
まず、生成プログラム１０９は、顧客情報ｘｍｌ２０１と商品情報ｘｍｌ２１１とを、入力Ｉ／Ｆ１０１を介して受け付ける（７０１）。そして、生成プログラム１０９は、顧客情報ｘｍｌ２０１の内容を顧客情報１１１に格納し、商品情報ｘｍｌ２１１の内容を商品情報１１２に格納する（７０２）。
【００８７】
ステップ７０２の後、生成プログラム１０９は、メモリ１０５が保持する全てのプログラム生成テンプレートに以下の処理を行う（７０３）。
【００８８】
まず、生成プログラム１０９は、ステップ７０５〜７１０を実行していない一つのプログラム生成テンプレートを、メモリ１０５から読み出す（７０４）。ステップ７０４の後、生成プログラム１０９は、商品情報１１２のレコードの数だけ、ステップ７０６〜７０９の処理を繰り返す（ステップ７０５）。
【００８９】
まず、生成プログラム１０９は、ステップ７０８の処理を実行していない一つのレコード（以下、商品レコードＡ）を商品情報１１２から読み出す（７０６）。また、生成プログラム１０９は、ステップ７０４において読み出したプログラム生成テンプレートを複製した一つのテンプレートＡを取得する。
【００９０】
ステップ７０６の後、生成プログラム１０９は、テンプレートＡに顧客情報１１１が示す入力項目の設定値を設定する項目設定箇所が含まれる場合、顧客情報１１１の一つのレコードにおいて、項目設定箇所に該当する設定値を特定する。そして、生成プログラム１０９は、特定した項目をテンプレートＡの顧客情報１１１の項目設定箇所に設定する（７０７）。
【００９１】
なお、ここで、顧客情報１１１に複数のレコードが含まれる場合、生成プログラム１０９は、テンプレートＡを顧客情報１１１のレコードの数だけ複製し、複製したテンプレートＡの各々に顧客情報１１１のレコードの各々が示す入力項目の設定値を設定する。そして、生成プログラム１０９は、以後の処理において、複製したテンプレートＡに処理を実行する。そして、生成プログラム１０９は、ステップ７０９において、複数のプログラムファイルを出力する。
【００９２】
ステップ７０７の後、生成プログラム１０９は、テンプレートＡに商品情報１１２の入力項目の設定値を設定する項目設定箇所６０３が含まれる場合、商品情報１１２の商品レコードＡにおいて、項目設定箇所６０３に該当する設定値を特定する。そして、生成プログラム１０９は、特定した設定値をテンプレートＡの項目設定箇所６０３に設定する（７０８）。
【００９３】
テンプレートＡに商品情報１１２の項目を設定する項目設定箇所６０３が含まれない場合、又は、ステップ７０８の後、生成プログラム１０９は、テンプレートＡをプログラムファイルとして出力する（７０９）。
【００９４】
生成プログラム１０９は、ステップ７０６〜７０９の処理を商品情報１１２のすべてのレコードについて実行した後（７１０）、新たなプログラム生成テンプレートをメモリ１０５から読み出し、ステップ７０５の繰り返し処理を実行する。そして、生成プログラム１０９は、すべてのプログラム生成テンプレートを読み出した場合（７１１）、図７に示す処理を終了する（ステップ７１２）。
【００９５】
これによって、生成プログラム１０９は、メモリ１０５が有するプログラム生成テンプレートに入力項目の設定値を設定することによって、入力項目に応じた業務プログラムを生成する。また、商品情報１１２の設定値をプログラム生成テンプレートに設定する場合のように、一つの項目設定箇所に複数の種類の設定値が設定される場合、生成プログラム１０９は、図７に示す処理によって、複数の設定値に各々対応する複数のプログラムを生成することができる。
【００９６】
次に、入力項目に応じた様々な処理を含むプログラムに、さらにプログラムを追加する処理を説明する。本実施例では、特に、生成プログラム１０９が、新規申込業務を実装する業務プログラムを生成する際に、新規申込業務の処理内でセット割引業務を実装する業務プログラムを新たに追加することを想定する。
【００９７】
セット割引業務とは、通信事業者がＬＴＥ通信サービス、ＷｉＭＡＸ通信サービス及び３Ｇ通信サービスなどの複数の通信サービスを提供する場合において、顧客がＬＴＥ通信サービス及びＷｉＭＡＸ通信サービスなど限定した通信サービスの利用を同時に申し込んだ場合に、申し込んだ通信サービスの利用量に応じて、顧客の課金額を一定の割合だけ安くする業務である。
【００９８】
新規申込業務におけるセット割引業務は、契約完了業務内（図５に示す契約完了プロセス５１４ｃに相当）でセット割引業務の適用条件となる全ての通信サービスに開通処理が完了したかをチェックする業務（セット割引チェック業務）を含む。また、セット割引業務は、割引対象となる通信サービスに関する課金開始業務（図５に示す課金開始プロセス５１４ｄに相当）において、課金額に対する割引率を設定する業務（セット割引登録業務）を含む。
【００９９】
生成プログラム１０９は、新規申込業務プログラム（新規申込オーダー５１３ａに相当）内でセット割引処理を行うために、セット割引チェック処理を実現するセット割引チェックファンクションと、セット割引登録処理を実現するセット割引登録ファンクションとを、新規申込業務プログラムに追加する必要がある。また、生成プログラム１０９は、契約完了プロセス５１４ｃがセット割引チェックファンクションを呼出し、課金開始プロセス５１４ｄがセット割引登録ファンクションを呼び出すように各コンポーネントを更新する必要がある。
【０１００】
このため、生成プログラム１０９は、追加処理を実現するファンクション又はプロセスなどのコンポーネントに対応したテンプレート（以下、追加生成テンプレート）を業務プログラムを生成する際に読み出し、業務プログラムを更新する必要がある。
【０１０１】
図８は、本実施例のプログラム生成装置１００の物理的な構成の二つ目の例を示すブロック図である。
【０１０２】
図８に示すプログラム生成装置１００は、図１に示すプログラム生成装置１００と同じく、入力Ｉ／Ｆ１０１、出力Ｉ／Ｆ１０２、ＣＰＵ１０３、ＨＤＤ１０４及びメモリ１０５を有し、これらの装置はデータバス１０６によって接続される。また、図８に示すメモリ１０５は、図１に示すメモリ１０５と同じく、プログラムとして、生成プログラム１０９を有し、データとして、顧客情報１１１、商品情報１１２、オーダーテンプレート１１３、プロセステンプレート１１４、及び、ファンクションテンプレート１１５を有する。
【０１０３】
しかし、図８に示すメモリ１０５は、図１に示すメモリ１０５と異なり、追加処理情報８０１、業務種別８０２、プロセス挿入箇所８０３、ファンクション挿入箇所８０４、追加設計情報８０５、追加プロセステンプレート８０６、及び、追加ファンクションテンプレート８０７を有する。
【０１０４】
追加処理情報８０１は、業務プログラムに追加するコンポーネントを生成するための追加生成テンプレートを示す。業務種別８０２は、処理が追加される業務の一覧を示す。プロセス挿入箇所８０３は、オーダーが呼び出すプロセスに新たなプロセスを追加する際に、新たなプロセスを呼び出す処理を挿入可能な、オーダーにおける箇所を示す。
【０１０５】
ファンクション挿入箇所８０４は、プロセスが呼び出すファンクションに新たなファンクションを追加する際に、新たなファンクションを呼び出す処理を挿入可能な、プロセスにおける箇所を示す。
【０１０６】
追加設計情報８０５は、追加する処理に関する情報を含む。追加プロセステンプレート８０６は、プロセスの追加生成テンプレートを含む。追加ファンクションテンプレート８０７は、ファンクションの追加生成テンプレートを含む。
【０１０７】
なお、図８に示すメモリ１０５が有するデータも、図１に示すメモリ１０５と同じく、データ容量が多い場合など、ＨＤＤ１０４に格納されてもよい。
【０１０８】
追加生成テンプレートには、プログラム生成テンプレートと同じく、項目設定箇所を含む追加生成テンプレートがある。また、追加生成テンプレートには、例えばセット割引における「割引率」などの、追加する処理に必要なパラメータを設定する箇所（以下、パラメータ設定箇所）を含む追加生成テンプレートがある。
【０１０９】
生成プログラム１０９は、追加生成テンプレートの項目設定箇所及びパラメータ設定箇所に入力項目の設定値及びパラメータを設定することによって、実行可能なコンポーネントを生成する。生成プログラム１０９は、プログラム生成テンプレートに基づいて生成されたコンポーネントと追加生成テンプレートに基づいて生成されたコンポーネントを組み合わせることで、追加された様々な処理を実行する業務プログラムを生成する。
【０１１０】
図９は、本実施例の追加処理情報８０１を示す説明図である。
【０１１１】
追加処理情報８０１は、処理種別９０１、コンポーネント種別９０２、追加生成テンプレート名リスト９０３、パラメータ設定箇所名リスト９０４、及び、呼出しテンプレート９０５を含む。追加処理情報８０１は、プログラム生成装置１００の運用者等によってあらかじめ設定される。
【０１１２】
処理種別９０１は、追加する処理を示す。コンポーネント種別９０２は、処理種別９０１が示す処理を実装するコンポーネントの種類を示す。コンポーネント種別９０２は、オーダー、プロセス及びファンクションの中の一つを示す。
【０１１３】
追加生成テンプレート名リスト９０３は、処理種別９０１が示す処理を実装するコンポーネントの雛型である追加生成テンプレートの名称又は識別子を示す。ただし、コンポーネント種別９０２がプロセスを示す場合、追加生成テンプレート名リスト９０３は、追加するプロセスの追加生成テンプレートの他に、追加するプロセスが呼び出すファンクションに対応する追加生成テンプレートも示す。
【０１１４】
パラメータ設定箇所名リスト９０４は、追加生成テンプレート内にパラメータ設定箇所が含まれる場合、そのパラメータ設定箇所を特定するための変数名等の識別子と、パラメータの説明とを示す。
【０１１５】
呼出しテンプレート９０５は、追加するコンポーネントを呼び出す処理の雛型であるテンプレートを示す。呼出しテンプレート９０５が示すテンプレートは、追加するコンポーネントを呼び出すコンポーネントに追加される。
【０１１６】
図１０は、本実施例の業務種別８０２を示す説明図である。
【０１１７】
業務種別８０２は、業務種別名１００１を含み、業務種別名１００１は、生成する業務プログラムが実装する業務を示す。業務種別８０２は、プログラム生成装置１００の運用者等によってあらかじめ設定される。
【０１１８】
業務種別８０２は、追加処理のプログラムを生成したい開発者（以下、開発者）から追加処理を受け付けるために、生成プログラム１０９が開発者に提示するための情報である。
【０１１９】
図１１は、本実施例の呼出し処理を挿入可能な箇所の識別子を示す説明図である。
【０１２０】
生成プログラム１０９は、呼出しテンプレート９０５が示すテンプレートに基づいて呼出し処理を行うプログラムを生成する。図１１は、生成したプログラムを挿入可能な箇所（挿入箇所）と、挿入箇所の識別子とを示す。運用者等は、上位のコンポーネントにおいて、１番目の下位のコンポーネントの前、二つの下位のコンポーネントの間、及び、最後の下位のコンポーネントの後に、下位のコンポーネントを挿入する箇所をあらかじめ定義する。
【０１２１】
また、生成プログラム１０９は、上位のコンポーネントに下位のコンポーネントを新たに追加する場合、その下位のコンポーネントを呼び出す処理を上位のコンポーネントに挿入する。
【０１２２】
新規申込オーダー５１３ａは、プロセスを挿入する箇所である箇所１１０１〜１１０５を含む。箇所１１０１は、識別子として「新規申込−１」が割り当てられ、申込受付プロセス５１４ａの前である。
【０１２３】
箇所１１０２は、識別子として「新規申込−２」が割り当てられ、申込受付プロセス５１４ａと開通プロセス５１４ｂとの間である。箇所１１０３は、識別子として「新規申込−３」が割り当てられ、開通プロセス５１４ｂと契約完了プロセス５１４ｃとの間である。
【０１２４】
箇所１１０４は、識別子として「新規申込−３」が割り当てられ、契約完了プロセス５１４ｃと課金開始プロセス５１４ｄとの間である。箇所１１０５は、識別子として「新規申込−５」が割り当てられ、課金開始プロセス５１４ｄの後である。
【０１２５】
また、ＷｉＭＡＸ課金開始プロセス５１４ｄ＿２は、ファンクションを挿入する箇所である箇所１１１１〜１１１４を含む。箇所１１１１は、識別子として「課金開始−１」が割り当てられ、ファンクション５１５ｃの前である。箇所１１１２は、識別子として「課金開始−２」が割り当てられ、ファンクション５１５ｃとファンクション５１５ｄとの間である。
【０１２６】
箇所１１１３は、識別子として「課金開始−３」が割り当てられ、ファンクション５１５ｄとファンクション５１５ｅとの間である。箇所１１１４は、識別子として「課金開始−４」が割り当てられ、ファンクション５１５ｅの後である。
【０１２７】
図１２Ａは、本実施例のプロセス挿入箇所８０３を示す説明図である。
【０１２８】
プロセス挿入箇所８０３は、挿入箇所１２０１、業務種別１２０２、プログラム生成テンプレート１２０３、及び、行番号１２０４を含む。プロセス挿入箇所８０３は、運用者等によってあらかじめ設定される。
【０１２９】
挿入箇所１２０１は、箇所１１０１〜１１０５等のプロセスを挿入する箇所の識別子を示す。挿入箇所１２０１が示す挿入箇所は、プログラム生成テンプレート１２０３が示すプログラム生成テンプレートに含まれる。
【０１３０】
業務種別１２０２は、挿入箇所１２０１が示す箇所が含まれる業務種別を示す。本実施例における業務種別１２０２は、オーダーを特定する。業務種別１２０２は、業務種別８０２の業務種別名１００１に対応する。
【０１３１】
プログラム生成テンプレート１２０３は、プロセスの呼出し処理を挿入するオーダーのオーダーテンプレートを示す。行番号１２０４は、プログラム生成テンプレート１２０３が示すオーダーテンプレートのプログラムロジックにおいて、挿入箇所に該当する行の行番号を示す。
【０１３２】
本実施例において挿入箇所は、プログラムロジックにおける行番号によって示されるが、プロセス挿入箇所８０３は、挿入箇所を特定できればいずれの情報を含んでもよい。例えば、プロセス挿入箇所８０３は、ステップ数等によって挿入箇所を特定してもよい。
【０１３３】
図１２Ｂは、本実施例のファンクション挿入箇所８０４を示す説明図である。
【０１３４】
ファンクション挿入箇所８０４は、挿入箇所１２１１、業務種別１２１２、プログラム生成テンプレート１２１３、及び、行番号１２１４を含む。ファンクション挿入箇所８０４は、運用者等によってあらかじめ設定される。
【０１３５】
挿入箇所１２１１は、箇所１１１１〜１１１４等のファンクション挿入箇所の識別子を示す。挿入箇所１２１１が示す挿入箇所は、プログラム生成テンプレート１２１３が示すプログラム生成テンプレートに含まれる。
【０１３６】
業務種別１２１２は、挿入箇所１２１１が示す箇所に対応する業務種別の識別子を示す。本実施例における業務種別１２１２は、オーダーを特定する。業務種別１２１２は、業務種別８０２の業務種別名１００１に対応する。
【０１３７】
また、プログラム生成テンプレート１２１３は、ファンクションの呼出し処理を挿入するプロセスのプロセステンプレートを示す。行番号１２１４は、プログラム生成テンプレート１２１３が示すプロセステンプレートのプログラムロジックにおいて、挿入箇所に該当する行番号を示す。ファンクション挿入箇所８１３も、例えば、ステップ数等によって挿入箇所を特定してもよい。
【０１３８】
図１３は、本実施例の追加設計情報８０５を示す説明図である。
【０１３９】
追加設計情報８０５は、追加処理１４０１、項目選択リスト１４０２、追加処理種別１４０３、業務種別１４０４、挿入箇所１４０５及びパラメータ設定値１４０６を含む。追加処理１４０１は、追加する処理を一意に特定する名称等の識別子を示す。
【０１４０】
項目選択リスト１４０２は、追加する処理に設定される入力項目を示す。追加処理種別１４０３は、追加するコンポーネントの元となる追加生成テンプレートを示す。
【０１４１】
業務種別１４０４は、処理を追加する業務を示し、本実施例においてオーダーを示す。業務種別１４０４は、業務種別８０２に対応する。
【０１４２】
挿入箇所１４０５は、追加処理１４０１が示す処理を挿入する挿入箇所の識別子を示し、プロセス挿入箇所８０３の挿入箇所１２０１及びファンクション挿入箇所８０４の挿入箇所１２１１に対応する。パラメータ設定値１４０６は、パラメータ設定箇所に設定する値を示す。
【０１４３】
追加設計情報８０５は、業務プログラムに処理を追加する際に、開発者によって入力された値を格納する。
【０１４４】
図１４は、本実施例の追加する処理の設計を入力するための追加処理設計ＧＵＩ１３０１の例を示す説明図である。
【０１４５】
生成プログラム１０９は、追加する処理の設計を受け付けるため、出力Ｉ／Ｆ１０２を介して、表示装置１０８に追加処理設計ＧＵＩ１３０１を表示する。生成プログラム１０９は、追加処理設計ＧＵＩ１３０１を介して受け付けた設計を示す情報を、追加設計情報８０５に格納する。
【０１４６】
追加処理設計ＧＵＩ１３０１は、追加処理一覧表示部１３０２、追加処理詳細表示部１３０３、追加ボタン１３１１、削除ボタン１３１２及び登録ボタン１３１３を含む。
【０１４７】
追加処理一覧表示部１３０２は、業務プログラム内に追加する処理の名称一覧を表示する。追加処理一覧表示部１３０２は、追加処理詳細表示部１３０３に設計が入力された処理の名称を表示する領域である。
【０１４８】
追加処理詳細表示部１３０３は、追加処理名入力部１３０４、項目選択部１３０５、及び、追加処理設計部１３０６を含む。追加処理名入力部１３０４は、追加する処理の任意の名称を入力する領域である。
【０１４９】
追加処理名入力部１３０４に名称が入力された場合、生成プログラム１０９は、入力された名称を追加処理一覧表示部１３０２に表示してもよい。また、生成プログラム１０９は、入力された名称又は名称に対応する識別子を、追加設計情報８０５の追加処理１４０１に格納する。
【０１５０】
項目選択部１３０５は、顧客情報１１１の顧客項目名３０２と商品情報１１２の商品項目名３１２とに格納される項目名の一覧を表示する。開発者は、例えば、項目選択部１３０５に表示されるチェックボックスを選択することによって、追加する処理に設定される入力項目を選択する。
【０１５１】
生成プログラム１０９は、項目選択部１３０５において選択された項目の名称又は識別子を、追加設計情報８０５の項目選択リスト１４０２に格納する。
【０１５２】
追加処理設計部１３０６は、追加処理種別選択部１３０７、対象業務選択部１３０８、挿入箇所選択部１３０９、及び、パラメータ設定値入力部１３１０を含む。追加処理種別選択部１３０７は、追加処理情報８０１の処理種別９０１が示す処理の種別の名称を表示する。
【０１５３】
開発者は、例えば、追加処理種別選択部１３０７が表示するプルダウンから処理の種別の名称を選択することによって、追加する処理の種別を選択する。これによって、開発者は、追加処理のコンポーネントを生成するための追加生成テンプレートを指定できる。
【０１５４】
生成プログラム１０９は、追加処理種別選択部１３０７において選択された処理の種別の名称又は名称に対応する識別子を、追加設計情報８０５の追加処理種別１４０３に格納する。
【０１５５】
対象業務選択部１３０８は、業務種別８０２の業務種別名１００１が示す業務種別の名称を表示する。開発者は、対象業務選択部１３０８において、処理を追加する業務の業務種別を選択し、生成プログラム１０９は、開発者によって選択された業務種別の名称又は名称に対応する識別子を、追加設計情報８０５の業務種別１４０４に格納する。対象業務選択部１３０８は、業務種別をプルダウンによって表示してもよい。
【０１５６】
挿入箇所選択部１３０９は、追加する処理を呼び出す処理を挿入する、上位のコンポーネントにおける挿入箇所を表示する。挿入箇所選択部１３０９は、プロセス挿入箇所８０３の挿入箇所１２０１の値及びファンクション挿入箇所８０４の挿入箇所１２１１の値を表示する。
【０１５７】
これによって、開発者は、業務プログラムのコードのすべてを把握しなくても、図１１に示す箇所１１０１〜１１０５、及び、箇所１１１１〜１１１４を把握していれば、適切な挿入箇所を任意に指定することができる。これにより、開発者は、容易に業務プログラムへ追加プログラムを挿入することができる。
【０１５８】
生成プログラム１０９は、挿入箇所選択部１３０９において選択された挿入箇所を示す情報を、追加設計情報８０５の挿入箇所１４０５に格納する。挿入箇所選択部１３０９は、挿入箇所をプルダウンによって表示してもよい。
【０１５９】
生成プログラム１０９は、追加処理種別選択部１３０７において選択された処理種別に対応するコンポーネント種別９０２が「プロセス」を示す場合、挿入箇所選択部１３０９に、プロセス挿入箇所８０３の挿入箇所１２０１が示す挿入箇所の名称を表示してもよい。また、生成プログラム１０９は、選択された処理種別に対応するコンポーネント種別９０２が「ファンクション」を示す場合、挿入箇所選択部１３０９に、ファンクション挿入箇所８０４の挿入箇所１２１１が示す挿入箇所の名称を表示してもよい。
【０１６０】
パラメータ設定値入力部１３１０は、処理を追加する際に追加生成テンプレートのパラメータ設定箇所に設定する値を入力する領域である。生成プログラム１０９は、追加処理種別選択部１３０７において選択された追加処理種別に対応する追加処理情報８０１のレコードの、パラメータ設定箇所名リスト９０４が示すパラメータの説明を、パラメータ設定値入力部１３１０に表示する。
【０１６１】
例えば、開発者が、追加するセット割引登録処理に、ＬＴＥ通信サービス及びＷｉＭＡＸ通信サービスの課金額に対する割引率を設定する場合を、以下に示す。まず、生成プログラム１０９は、追加処理名入力部１３０４を介して、処理の内容を特定できる名称として、例えば「ＬＴＥ＆ＷｉＭＡＸ割引登録」を受け付ける。
【０１６２】
そして、追加するセット割引登録処理における割引の適用対象は、ＬＴＥ通信サービス及びＷｉＭＡＸ通信サービスであるため、生成プログラム１０９は、項目選択部１３０５を介して、ＬＴＥ通信サービス及びＷｉＭＡＸ通信サービスの入力項目を受け付ける。
【０１６３】
また、追加する処理がセット割引登録処理であるため、生成プログラム１０９は、追加処理種別選択部１３０７を介して、「セット割引登録」が選択されたことを受け付ける。また、開発者が、セット割引登録処理を新規申込業務内に追加したい場合、生成プログラム１０９は、対象業務選択部１３０８を介して、「新規申込」が選択されたことを受け付ける。
【０１６４】
また、開発者は、セット割引登録処理を実装するファンクションが課金開始プロセスの中で呼び出されるように設計するため、生成プログラム１０９は、挿入箇所選択部１３０９を介して、ファンクション挿入箇所として、例えば「課金開始−３」が選択されたことを受け付ける。
【０１６５】
そして、生成プログラム１０９は、セット割引登録処理を実装するファンクションに対応するファンクションテンプレートに、パラメータ設定箇所が含まれるかを、追加処理情報８０１のパラメータ設定箇所名リスト９０４に基づいて判定する。
【０１６６】
ファンクションテンプレートにパラメータ設定箇所が含まれる場合、生成プログラム１０９は、パラメータ設定箇所名リスト９０４に従って「割引率」をパラメータ設定値入力部１３１０に表示し、入力されるパラメータを受け付ける。
【０１６７】
パラメータ設定値入力部１３１０を介してパラメータを受け付けることによって、生成プログラム１０９は、業務プログラムに挿入する追加プログラムに、開発者から指定されたパラメータを設定することができ、より多様なプログラムを生成することができる。
【０１６８】
また、追加処理設計ＧＵＩ１３０１は、追加ボタン１３１１、削除ボタン１３１２及び登録ボタン１３１３を含む。追加ボタン１３１１は、追加処理名入力部１３０４に入力された追加処理名を、追加処理一覧表示部１３０２に新たに表示する際に操作される。削除ボタン１３１２は、追加処理一覧表示部１３０２に表示された処理を削除する場合に操作される。登録ボタン１３１３は、追加処理詳細表示部１３０３に入力した内容を追加設計情報８０５に登録する場合に操作される。
【０１６９】
図１５は、本実施例の追加生成テンプレートに基づいて生成されるコンポーネントを示す説明図である。
【０１７０】
例えば、セット割引登録ファンクションテンプレート１５０１に基づいて生成されるＬＴＥセット割引登録ファンクション１５０２ａを図１５に示す。セット割引登録ファンクションテンプレート１５０１は、商品項目英名３１３を設定する項目設定箇所１５０３と、割引率を設定するパラメータ設定箇所１５０４とを含む。
【０１７１】
まず、生成プログラム１０９は、追加ファンクションテンプレート８０７から、セット割引登録ファンクションテンプレート１５０１を読み出す。次に、生成プログラム１０９は、読み出したセット割引登録ファンクションテンプレート１５０１の中の項目設定箇所１５０３に従い、商品情報１１２の商品項目英名３１３を設定する。
【０１７２】
ただし、生成プログラム１０９は、追加設計情報８０５の項目選択リスト１４０２と商品項目名３１２とが対応する商品情報１１２のエントリの商品項目英名３１３を、項目設定箇所１５０３に設定する。
【０１７３】
ここで、セット割引登録ファンクションテンプレート１５０１に、顧客情報１１１の項目を設定する項目設定箇所を示す記載がある場合、生成プログラム１０９は、顧客情報１１１の項目を設定する。
【０１７４】
また、商品情報１１２のレコードが複数ある場合、生成プログラム１０９は、追加設計情報８０５の項目選択リスト１４０２が示す入力項目の数だけ、セット割引登録ファンクションテンプレート１５０１を複製する。そして、項目選択リスト１４０２が示す入力項目を示す設定値を、商品情報１１２から特定し、特定した設定値を項目設定箇所１５０３に設定する。
【０１７５】
また、顧客情報１１１が示す入力項目が項目選択リスト１４０２に複数含まれ、かつ、セット割引登録ファンクションテンプレート１５０１に、顧客情報１１１の項目を設定する項目設定箇所を示す記載がある場合、生成プログラム１０９は、項目選択リスト１４０２が示す顧客情報１１１の入力項目の数だけ、セット割引登録ファンクションテンプレート１５０１を複製する。そして、生成プログラム１０９は、項目選択リスト１４０２が示す顧客情報１１１の入力項目の設定値を、項目設定箇所１５０３に設定する。
【０１７６】
また、生成プログラム１０９は、セット割引登録ファンクションテンプレート１５０１にパラメータ設定箇所１５０４が含まれる場合、追加設計情報８０５の追加処理種別１４０３が「セット割引登録」を示すレコードを特定する。そして、生成プログラム１０９は、特定したレコードのパラメータ設定値１４０６のパラメータを、パラメータ設定箇所１５０４に従いパラメータを設定することによって、セット割引登録ファンクション１５０２を生成する。
【０１７７】
図１５は、項目選択リスト１４０２が「ｌｔｅ」及び「ｗｉｍａｘ」を示す場合に生成されるＬＴＥセット割引登録ファンクション１５０２ａと、ＷｉＭＡＸセット割引登録ファンクション１５０２ｂとを示す。ＬＴＥセット割引登録ファンクション１５０２ａは、項目設定箇所１５０３に「ｌｔｅ」が設定され、かつ、パラメータ設定箇所１５０４に「４０」が設定された結果である。ＷｉＭＡＸセット割引登録ファンクション１５０２ｂは、項目設定箇所１５０３に「ｗｉｍａｘ」が設定され、かつ、パラメータ設定箇所１５０４に「４０」が設定された結果である。
【０１７８】
生成プログラム１０９は、生成したセット割引登録ファンクション１５０２を、プログラムファイルとして出力することにより、業務プログラムに追加するプログラムを生成する。
【０１７９】
生成プログラム１０９は、プロセスの追加生成テンプレートと商品情報１１２及び顧客情報１１１とに基づいて、前述と同じ手順によって、追加するプロセスを生成する。一方で、生成プログラム１０９は、追加するファンクション又は追加するプロセスを、業務プログラムのプロセス又はオーダーから呼び出すため、業務プログラムのプロセス又はオーダーに呼出し処理を挿入する必要がある。
【０１８０】
図１６は、本実施例のファンクションの呼出し処理が挿入されたプロセスを示す説明図である。
【０１８１】
例えば、生成プログラム１０９が、生成したセット割引登録ファンクション１５０２の呼出し処理を、課金開始プロセス５１４ｄに挿入する場合を以下に示す。
【０１８２】
図９に示す追加処理情報８０１の処理種別９０１が「セット割引登録」を示す場合、当該エントリのコンポーネント種別９０２は、「ファンクション」であり、また、当該エントリの呼出しテンプレート９０５はテンプレートを含む。また、図１３に示す追加設計情報８０５の追加処理種別１４０３が「セット割引登録」を示す場合、当該エントリの業務種別１４０４は「新規申込」であり、挿入箇所１４０５は「課金開始−３」である。
【０１８３】
このため、生成プログラム１０９は、ファンクション挿入箇所８０４において、挿入箇所１２１１が「課金開始−３」を示し、かつ、業務種別１２１２が「新規申込」を示すレコードを特定する。そして、生成プログラム１０９は、特定したエントリを参照し、プログラム生成テンプレート１２１３から「課金開始プロセステンプレート」を取得し、行番号１２１４から「１４」を取得する。
【０１８４】
次に、生成プログラム１０９は、取得した情報に従い、プロセステンプレート１１４から、図１６に示す課金開始プロセステンプレート１６０１を読み出す。課金開始プロセステンプレート１６０１は、商品項目英名３１３を設定する項目設定箇所１６０３を含む。このため、生成プログラム１０９は、項目設定箇所１６０３に商品情報１１２の商品項目英名３１３の値を設定する。
【０１８５】
そして、生成プログラム１０９は、課金開始プロセステンプレート１６０１における行番号「１４」に該当する行に、処理種別９０１が「セット割引登録」を示すレコードの呼出しテンプレート９０５の内容を挿入する。
【０１８６】
図１６に示す課金開始プロセステンプレート１６０２は、処理種別９０１が「セット割引登録」を示すエントリの呼出しテンプレート９０５の内容が挿入された結果を示し、記載１６０４は、挿入された呼出しテンプレート９０５の内容である。
【０１８７】
生成プログラム１０９は、記載１６０４に、商品項目英名３１３を設定する項目設定箇所が含まれる場合、項目設定箇所１６０３に設定した商品項目英名と同じ値を、記載１６０４の項目設定箇所に設定する。これによって、生成プログラム１０９は、セット割引登録ファンクションを呼び出すＬＴＥ課金開始プロセス１６０５を生成する。
【０１８８】
なお、生成プログラム１０９は、呼出しテンプレート９０５の内容を挿入した後、課金開始プロセステンプレート１６０２の項目設定箇所に商品項目英名３１３を設定してもよい。
【０１８９】
ここで、商品情報１１２が図３Ｂに示す商品項目英名３１３である場合、生成プログラム１０９は、項目設定箇所に「ｌｔｅ」を設定したＬＴＥ課金開始プロセス１６０５と、「ｗｉｍａｘ」を設定したＷｉＭＡＸ課金開始プロセスと、「３ｇ」を設定した３Ｇ課金開始プロセスとを生成する。しかし、処理種別９０１が「セット割引登録」を示すエントリの呼出しテンプレート９０５の内容は、項目設定箇所に「ｌｔｅ」を設定する課金開始プロセステンプレートと、「ｗｉｍａｘ」を設定する課金開始プロセステンプレートとにのみ、挿入される。
【０１９０】
生成プログラム１０９は、追加するプロセスを呼び出す処理を、オーダーへ挿入する場合も、前述と同じ手順によって、オーダーに呼出し処理を挿入する。
【０１９１】
図１７は、本実施例の追加された処理を含む業務プログラムにおけるコンポーネントの呼出し順序を示す説明図である。
【０１９２】
新規申込オーダー５１３ａは、図５と同じく、申込受付プロセス５１４ａ、開通プロセス５１４ｂ、契約完了プロセス５１４ｃ、課金開始プロセス５１４ｄの順にプロセスを呼び出す。また、申込受付プロセス５１４ａ、開通プロセス５１４ｂ、契約完了プロセス５１４ｃ、及び、課金開始プロセス５１４ｄは、それぞれ申込受付業務、開通業務、契約完了業務、課金開始業務に必要なファンクションを順に呼び出す。
【０１９３】
新規申込業務プログラムにおいてセット割引処理を実行するため、セット割引チェックファンクション１７０１ｃ及びセット割引登録ファンクション１７０１ｄを追加で生成した場合、生成プログラム１０９は、追加処理設計ＧＵＩ１３０１に入力された設計に従い、契約完了プロセス５１４ｃにセット割引チェックファンクション１７０１ｃを挿入し、課金開始プロセス５１４ｄに、セット割引登録ファンクション１７０１ｄを挿入する。
【０１９４】
なお、図１７は、商品情報１１２のレコードが二つであり、かつ、図１４に示す項目選択部１３０５において「ＬＴＥ通信」と「ＷｉＭＡＸ通信」との二つの入力項目が選択された場合を示す。生成プログラム１０９は、「ｌｔｅ」が設定されたセット割引登録ファンクション１７０１ｄ＿１と「ｗｉｍａｘ」が設定されたセット割引登録ファンクション１７０１ｄ＿２とを生成する。
【０１９５】
セット割引登録ファンクション１７０１ｄ＿１は、図１５に示すＬＴＥセット割引登録ファンクション１５０２ａに対応し、セット割引登録ファンクション１７０１ｄ＿２は、ＷｉＭＡＸセット割引登録ファンクション１５０２ｂに対応する。
【０１９６】
図１７に示すように、生成プログラム１０９は、階層構造のコンポーネントによる業務プログラムに、新たな処理を追加することができる。また、図１７において、商品情報１１２のレコードが三つであった場合、生成プログラム１０９は、三つの課金開始プロセス５１４ｄのうち、二つの課金開始プロセス５１４ｄのみにセット割引登録ファンクション１７０１ｄを追加する。これにより、開発者は、より多様な追加の処理を業務プログラムに追加できる。
【０１９７】
図１８Ａ〜図１８Ｃは、本実施例のプログラム生成処理を示すフローチャートである。
【０１９８】
図１８Ａは、本実施例の入力項目を受け付ける処理を示すフローチャートである。
【０１９９】
なお、図１８Ａ〜図１８Ｃに示す処理は、顧客情報１１１が、一つのレコードのみを含む場合の処理の例である。すなわち、追加生成テンプレートが、顧客情報１１１の入力項目を設定する項目設定箇所を含み、かつ、選択された入力項目が顧客情報１１１に含まれる場合、当該項目設定箇所には、顧客情報１１１の一つのレコードに含まれる入力項目に関する情報が追加生成テンプレートに設定される。
【０２００】
まず、図１８Ａに示すステップ７０１及び７０２は、図７に示すステップ７０１及び７０２と同じである。
【０２０１】
ステップ７０２の後、生成プログラム１０９は、追加処理設計ＧＵＩ１３０１を用いて業務プログラム内に追加する処理の設計を受け付ける（１８０３）。そして、生成プログラム１０９は、受け付けた設計の内容を追加設計情報８０５に格納する（１８０４）。追加設計情報８０５の項目選択リスト１４０２に格納された入力項目を、以下において、選択された入力項目と記載する。
【０２０２】
図１８Ｂは、本実施例の追加処理を実行するプログラムを生成する処理を示すフローチャートである。
【０２０３】
ステップ１８０４の後、生成プログラム１０９は、追加設計情報８０５のレコードの数だけ、ステップ１８０６〜１８１８の処理を繰り返す（１８０５）。まず、生成プログラム１０９は、追加設計情報８０５の１レコード（追加レコードＡ）を読み出す（１８０６）。
【０２０４】
ステップ１８０６の後、生成プログラム１０９は、追加レコードＡの追加処理種別１４０３に対応する処理種別９０１を含むレコードを、追加処理情報８０１において特定する。そして、生成プログラム１０９は、特定したレコードの追加生成テンプレート名リスト９０３のすべての追加生成テンプレートに、ステップ１８０８〜ステップ１８１８の処理を実行する（１８０７）。
【０２０５】
ステップ１８０７の後、生成プログラム１０９は、ステップ１８０７において特定したレコードの追加生成テンプレート名リスト９０３から、まだステップ１８０９以降の処理を実行していない一つの追加生成テンプレートの識別子を選択する。そして、生成プログラム１０９は、選択した識別子に従って、追加プロセステンプレート８０６又は追加ファンクションテンプレート８０７から、追加生成テンプレート（追加生成テンプレートＡ）を読み出す（１８０８）。
【０２０６】
ステップ１８０８において、生成プログラム１０９は、選択した識別子が格納される追加処理情報８０１のレコードのコンポーネント種別９０２が、「プロセス」である場合、追加プロセステンプレート８０６から追加生成テンプレートを読み出し、「ファンクション」である場合、追加ファンクションテンプレート８０７から追加生成テンプレートを読み出す。
【０２０７】
ステップ１８０８の後、生成プログラム１０９は、選択された入力項目の数に従って追加生成テンプレートを生成する必要があるかを判定する（１８０９）。生成プログラム１０９は、追加生成テンプレートＡが、選択された入力項目の数に従って複製するテンプレートであるかを判定できれば、いかなる方法を用いてもよい。
【０２０８】
例えば、生成プログラム１０９は、ステップ１８０９において、追加レコードＡの項目選択リスト１４０２に含まれる少なくとも二つの入力項目が、商品情報１１２の商品項目名３１２に含まれ、かつ、追加生成テンプレートＡに商品情報１１２の設定値を設定する項目設定箇所が含まれる場合、選択された入力項目の数に従って追加生成テンプレートを生成する必要があると判定してもよい。
【０２０９】
なお、この場合、項目選択リスト１４０２に含まれる商品情報１１２の入力項目の数だけ、追加生成テンプレートを生成する必要がある。
【０２１０】
また、追加レコードＡの項目選択リスト１４０２に含まれる少なくとも二つの入力項目が、顧客情報１１１の商品項目名３１２に含まれ、かつ、追加生成テンプレートＡに顧客情報１１１の設定値を設定する項目設定箇所が含まれる場合、選択された入力項目の数に従って追加生成テンプレートを生成する必要があると判定してもよい。
【０２１１】
なお、この場合、項目選択リスト１４０２に含まれる顧客情報１１１の入力項目の数だけ、追加生成テンプレートを生成する必要がある。
【０２１２】
選択された入力項目の数に従って追加生成テンプレートを生成する必要があると判定した場合、生成プログラム１０９は、選択された商品情報１１２の入力項目の数だけ、ステップ１８１１〜１８１３の処理を繰り返す（ステップ１８１０）。
【０２１３】
ステップ１８１０の後、生成プログラム１０９は、追加生成テンプレートＡを複製し、複製した追加生成テンプレートＡ（追加生成テンプレートＡ１）にステップ１８１３までの処理を実行する。また、ここで、生成プログラム１０９は、追加レコードＡの項目選択リスト１４０２から商品情報１１２の入力項目（入力項目Ａ）を一つ選択する。
【０２１４】
生成プログラム１０９は、追加生成テンプレートＡ１に商品情報１１２の設定値を設定する項目設定箇所が含まれる場合、入力項目Ａの設定値を、追加生成テンプレートＡ１の項目設定箇所に設定する。また、生成プログラム１０９は、追加生成テンプレートＡ１に顧客情報１１１の設定値を設定する項目設定箇所が含まれる場合、選択された顧客情報１１１の入力項目を、項目設定箇所に設定する（１８１１）。
【０２１５】
なお、選択された入力項目が顧客情報１１１の複数の入力項目を含み、かつ、追加生成テンプレートＡ１に顧客情報１１１の設定値を設定する項目設定箇所が含まれる場合、生成プログラム１０９は、ステップ１８１１において、選択された顧客情報１１１の入力項目の数だけ、追加生成テンプレートＡ１を複製し、複製した追加生成テンプレートＡ１に、選択された顧客情報１１１の入力項目の設定値を設定してもよい。そして、生成プログラム１０９は、以後においてこの処理によって複製された追加生成テンプレートＡ１に処理を実行してもよい。
【０２１６】
ステップ１８１１において、顧客情報１１１及び商品情報１１２の入力項目を追加生成テンプレートＡ１に設定することによって、生成プログラム１０９は、複数の種類の入力項目を追加するプログラムに設定することができる。
【０２１７】
ステップ１８１１の後、生成プログラム１０９は、追加生成テンプレートＡ１にパラメータ設定箇所が含まれる場合、追加レコードＡのパラメータ設定値１４０６の内容を設定する（１８１２）。ステップ１８１２の後、生成プログラム１０９は、入力項目又はパラメータを設定された追加生成テンプレートＡ１をプログラムファイルとして出力する（１８１３）。これによって、生成プログラム１０９は、業務プログラムに追加するプログラムを生成する。
【０２１８】
追加処理設計ＧＵＩ１３０１で選択された商品情報１１２の入力項目の全てに、ステップ１８１１〜１８１３の処理を行った場合、生成プログラム１０９は、ステップ１８１０の繰り返し処理を終了する（ステップ１８１４）。
【０２１９】
ステップ１８０９において、選択された項目の数だけ追加生成テンプレートを生成する必要がないと判断された場合、生成プログラム１０９は、ステップ１８１５を実行する。生成プログラム１０９は、追加生成テンプレートＡが項目設定箇所を含む場合、追加生成テンプレートＡの項目設定箇所に、選択された入力項目であり、かつ、顧客情報１１１及び商品情報１１２の入力項目の設定値を設定する（１８１５）。
【０２２０】
ステップ１８１５の後、生成プログラム１０９は、追加生成テンプレートＡがパラメータ設定箇所を含む場合、追加生成テンプレートＡのパラメータ設定箇所に追加レコードＡのパラメータ設定値１４０６の内容を設定する（１８１６）。そして、生成プログラム１０９は、追加生成テンプレートＡをプログラムファイルとして出力する（１８１７）。
【０２２１】
生成プログラム１０９が、追加レコードＡの追加処理種別１４０３に対応するレコードの追加生成テンプレート名リスト９０３のすべての追加生成テンプレートに、ステップ１８０８〜ステップ１８１７の処理を、実行した場合、生成プログラム１０９は、ステップ１８０７の繰り返し処理を終了する（１８１８）。
【０２２２】
そして、ステップ１８０６〜１８１８の処理を、追加設計情報８０５の全てのレコードに対して実行した場合、生成プログラム１０９は、ステップ１８０５の繰り返し処理を終了する（１８１９）。
【０２２３】
図１８Ｃは、本実施例の業務プログラムに追加処理を挿入する処理を示すフローチャートである。
【０２２４】
図１８Ｃに示す処理は、図７に示す処理に対応する。ステップ１８１９の後、生成プログラム１０９は、図７に示すステップ７０３〜７０８を実行する。ここで、生成プログラム１０９は、オーダーテンプレート１１３、プロセステンプレート１１４、ファンクションテンプレート１１５の中から一つのプログラム生成テンプレート（テンプレートＡ）を読み出し、すべてのプログラム生成テンプレートについて、図１８Ｃに示すステップ７１０までの処理を実行する。
【０２２５】
図１８Ｃに示すステップ７０３〜７０８の処理によって、業務プログラムにおける定型処理のコンポーネントが生成される。
【０２２６】
図１８Ｃに示すステップ７０８の後、生成プログラム１０９は、追加処理を呼び出す処理を、テンプレートＡに挿入する必要があるかを判定する（１８２６）。具体的には、生成プログラム１０９は、プログラム生成テンプレート１２０３がテンプレートＡを示すプロセス挿入箇所８０３のレコード、又は、プログラム生成テンプレート１２１３がテンプレートＡを示すファンクション挿入箇所８０４のレコードを特定する。
【０２２７】
一方で、生成プログラム１０９は、追加設計情報８０５の挿入箇所１４０５及び業務種別１４０４の内容の組み合わせをすべて取得する。そして、生成プログラム１０９は、特定したすべてのレコードの挿入箇所１２０１及び業務種別１２０２と、追加設計情報８０５から取得した組み合わせとが一致する、プロセス挿入箇所８０３又はファンクション挿入箇所８０４のレコードを選択する。
【０２２８】
ここで、プロセス挿入箇所８０３又はファンクション挿入箇所８０４のレコードを選択できた場合、生成プログラム１０９は、追加処理を呼び出す処理を、テンプレートＡに挿入する必要があると判定する。ここで、特定したレコードの挿入箇所（１２０１、１２１１）及び業務種別（１２０２、１２１２）の内容の組み合わせを、組み合わせＡと記載する。
【０２２９】
ステップ１８２６において、追加処理を呼び出す処理を、テンプレートＡに挿入する必要があると判定した場合、生成プログラム１０９は、組み合わせＡを、挿入箇所１４０５及び業務種別１４０４に含む追加設計情報８０５のレコードを選択する。そして、生成プログラム１０９は、選択したレコードの追加処理種別１４０３に対応する処理種別９０１を含むレコードを、追加処理情報８０１から特定する。そして、生成プログラム１０９は、特定した追加処理情報８０１のレコードから、呼出しテンプレート９０５を取得する。
【０２３０】
そして、生成プログラム１０９は、組み合わせＡを示すプロセス挿入箇所８０３又はファンクション挿入箇所８０４のレコードの行番号１２０４又は行番号１２１４に従って、テンプレートＡ内の行に、追加処理情報８０１から取得した呼出しテンプレート９０５を挿入する。
【０２３１】
なお、取得した呼出しテンプレート９０５に、項目設定箇所が含まれる場合、生成プログラム１０９は、ステップ１８２７において、顧客情報１１１の入力項目、又は、ステップ７０６において商品情報１１２から読み出した商品レコードＡの入力項目を、項目設定箇所に設定する。これによって、業務プログラムにおける定型処理のプログラムが、図１８Ｂに示す処理によって生成された追加処理のプログラムを呼び出すことができる。
【０２３２】
ステップ１８２６において追加処理を呼び出す処理をテンプレートＡに挿入する必要がないと判定した場合、又は、ステップ１８２７の後、テンプレートＡをプログラムファイルとして出力する（７０９）。ステップ７０６〜７０９、ステップ１８２６、ステップ１８２７、及びステップ７０９の処理を、商品情報１１２の全てのレコードに対して実行し終えた場合、生成プログラム１０９は、ステップ７０５の繰り返し処理を終了する（７１０）。
【０２３３】
そして、すべてのプログラム生成テンプレートに、ステップ７０６〜７０９、ステップ１８２６、ステップ１８２７、ステップ７０９及びステップ７１０の処理を終えた後（７１１）、生成プログラム１０９は、図１８Ａ〜図１８Ｃに示す業務プログラムの生成処理を終了する（ステップ１８２９）。
【０２３４】
以上のように、本実施例によると、新規申込業務の処理内で商品情報１１２の項目の「ＬＴＥ通信サービス」と「ＷｉＭＡＸ通信サービス」とに対するセット割引処理を追加で実行できる業務プログラムを生成することが可能である。
【０２３５】
なお、本発明は上記の実施例に限定されるものではなく、様々な変形例が含まれている。前述における生成プログラム１０９は、商品情報１１２の複数の項目の組み合わせに対する追加処理を生成したが、顧客情報１１１の項目と商品情報１１２の項目との組み合わせに対する追加処理を生成してもよい。
【０２３６】
図１９は、本実施例の追加処理設計ＧＵＩ１３０１に入力された項目を示す説明図である。
【０２３７】
顧客情報１１１の入力項目と商品情報１１２の入力項目との組み合わせを設定される追加プログラムを生成する例を、以下に示す。追加処理の例として、新規申込業務の処理内で行われるシニア割引処理を以下に挙げる。
【０２３８】
シニア割引処理とは、顧客がＬＴＥ通信サービスなどの通信サービスの利用を申し込んだ場合に、顧客の年齢が一定年齢を超えている場合、通信サービスの利用量に応じた顧客の課金額を、一定の割合だけ安くする処理である。
【０２３９】
図１９に示す追加処理設計ＧＵＩ１３０１は、図１４に示す追加処理設計ＧＵＩ１３０１と同じく、追加処理一覧表示部１３０２、追加処理詳細表示部１３０３、追加ボタン１３１１、削除ボタン１３１２及び登録ボタン１３１３を含む。
【０２４０】
新規申込業務内でシニア割引処理を行うプログラムを追加するために、開発者は、図１９に示す項目選択部１３０５のように、顧客情報１１１の項目の「年齢」と商品情報１１２の項目の「ＬＴＥ通信サービス」とを選択する。そして、開発者は、追加処理種別選択部１３０７において、例えば、「条件別割引チェック処理」を選択する。また、開発者は、パラメータ設定値入力部１３１０に、シニア割引が適用される年齢の閾値（ここでは６０）を設定する。
【０２４１】
この場合、生成プログラム１０９は、図１８Ｂに示すステップ１８１５〜１８１７を実行する。これにより、生成プログラム１０９は、条件別割引チェック処理に対応したテンプレートに「年齢」と「ＬＴＥ通信サービス」との入力項目、及び、割引適用年齢の閾値のパラメータを設定することによってコンポーネントを生成し、生成したコンポーネントを新規申込プログラムに挿入することでシニア割引処理を実行するプログラムを生成できる。
【０２４２】
異なる種類の入力項目の組み合わせを、生成する追加プログラムに設定することによって、生成プログラム１０９は、より多様な入力項目を含む追加プログラムを生成することができる。また、図１９に示す項目選択部１３０５のように、顧客情報１１１及び商品情報１１２の入力項目を運用者に任意に選択させることができ、様々な業務を実行可能な追加プログラムを生成することができる。
【０２４３】
以上のように、本発明では、「ＬＴＥ通信サービス」及び「ＷｉＭＡＸ通信サービス」の入力項目の組み合わせ、並びに、「年齢」及び「ＬＴＥ通信サービス」の入力項目の組み合わせなど、任意の入力項目の組み合わせごとに追加処理を生成することができるため、入力項目に従って柔軟に追加プログラムを生成できる。
【０２４４】
また、開発者がすべてのプログラムのコードを把握していなくても、提示された挿入箇所から追加プログラムの挿入箇所を選択し、追加処理の挿入箇所を任意に選択することができる。このため、追加プログラムを定型処理のプログラムに挿入することが容易である。これによって、本実施例のプログラム生成装置１００によって生成されたプログラムは、システムの開発においてより幅広い範囲の処理を実現することが可能である。
【０２４５】
また、通信事業者の要望に柔軟に対応可能な高機能システムの開発を低コストで早期に実現できる。通信事業者は早期かつ安価でシステムの導入を実現でき、これにより顧客も通信事業者が提供する通信サービスを安価で利用することができる。
【０２４６】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除又は置換をすることが可能である。
【０２４７】
また、上記の各構成、機能及び処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、若しくはＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、又は、ＩＣカード、若しくはＳＤカード等の記録媒体に置くことができる。
【０２４８】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
【産業上の利用可能性】
【０２４９】
本実施例のプログラム生成装置およびプログラム生成方法は、とりわけ通信事業者が顧客にサービスを提供するシステムの開発において、開発効率を高めることができ、ひいては通信事業者のサービス提供、及び運用に貢献することができる。
【符号の説明】
【０２５０】
１０１  入力Ｉ／Ｆ（インタフェース）
１０２  出力Ｉ／Ｆ（インタフェース）
１０３  ＣＰＵ
１０４  ＨＤＤ（ハードディスク）
１０５  メモリ
１０６  データバス
１０７  入力装置
１０８  表示装置
１０９  生成プログラム
１１０  アプリケーションロジック
１１１  顧客情報
１１２  商品情報
１１３  オーダーテンプレート
１１４  プロセステンプレート
１１５  ファンクションテンプレート
８０１  追加処理情報
８０２  業務種別
８０３  プロセス挿入箇所
８０４  ファンクション挿入箇所
８０５  追加設計情報
８０６  追加プロセステンプレート
８０７  追加ファンクションテンプレート
【図１】
0006422346.tif 000002
【図２Ａ】
0006422346.tif 000003
【図２Ｂ】
0006422346.tif 000004
【図３Ａ】
0006422346.tif 000005
【図３Ｂ】
0006422346.tif 000006
【図４】
0006422346.tif 000007
【図５】
0006422346.tif 000008
【図６】
0006422346.tif 000009
【図７】
0006422346.tif 000010
【図８】
0006422346.tif 000011
【図９】
0006422346.tif 000012
【図１０】
0006422346.tif 000013
【図１１】
0006422346.tif 000014
【図１２Ａ】
0006422346.tif 000015
【図１２Ｂ】
0006422346.tif 000016
【図１３】
0006422346.tif 000017
【図１４】
0006422346.tif 000018
【図１５】
0006422346.tif 000019
【図１６】
0006422346.tif 000020
【図１７】
0006422346.tif 000021
【図１８Ａ】
0006422346.tif 000022
【図１８Ｂ】
0006422346.tif 000023
【図１８Ｃ】
0006422346.tif 000024
【図１９】
0006422346.tif 000025