Magic xpiトレーニングテキスト
10. 演習2

10.1 DBの内容をExcelに書き出す

【仕様】

  • MSSQLデータベース上に格納されている見積明細データをExcelに書き出し、見積書を作成します。
    ヘッダ情報は既に見積書に記述されているものとします。
見積明細のテーブル名 MitsumoriLine
見積書ひな型Excelブック名 見積書.xlsx

仕様

 

【フロー完成イメージ】

フロー完成イメージ

 

【ビジネスプロセスとフローの追加】

  • 「ビジネスプロセス」を追加し、名称を「Excel」に変更します。
  • 追加されたフローの他に、もう1フロー追加し、それぞれのフローの名称を以下のように変更します。

「見積データ抽出」
「見積データ書込」

 

【コンテキスト変数の定義】

  • ソリューションエクスプローラーのプロジェクト名 > リポジトリ > コンテキスト変数をダブルクリックし、Excelの明細行番号を格納するためのコンテキスト変数を定義します。

コンテキスト変数の定義

 

【フロー変数の定義】

  • 「見積データ抽出」フローのフロー変数を定義します。
タイプ 長さ
F.ファイル名 Alpha 1000
F.見積番号 Numeric 10.0

フロー変数の定義

 

【フロー変数の定義】

  • 「見積データ書込」フローのフロー変数を定義します。
タイプ 長さ
F.商品名 Alpha 30
F.単価 Alpha 30
F.数量 Alpha 30
F.見積金額 Alpha 30

「見積データ書込」フローのフロー変数を定義

 

【メインフローの設定】

  • 「見積データ抽出」フローをダブルクリックし、フローエディタを開きます。
  • ツールボックスから「Flow Data」をフローエリアにDrag&Dropします。

メインフローの設定

 

【変数の値をセット】

  • Flow Dataをダブルクリックして、下記のように設定します。

変数の値をセット

アクション タイプ Encoding 更新式
Update Flow F.ファイル名 Ansi EnvVal (‘currentprojectdir’)&’Output\見積書’

&DStr (Date (),’YYYYMMDD’)

&TStr (Time (),’HHMMSS’)&’.xlsx’

Update Flow F.見積番号 1
Update Context C.明細カウンタ 22

 

【Excelコンポーネントの配置】

  • ツールボックスからMicrosoft ExcelコンポーネントをDragしてFlow Dataの下にDropし、ステップ名を「MicrosoftExcel : Open」とします。

Excelコンポーネントの配置

 

【Excelブックのオープン】

  • Excelコンポーネントをダブルクリックして、「追加」ボタンでメソッドを追加します。
# メソッド パラメータ名 Value
1 Workbook Open ファイル名 EnvVal (‘currentprojectdir’)&

‘Templates\見積書.xlsx’

Excelブックのオープン

 

【ワークシートの選択】

  • 更にメソッドを追加して、ワークシートをアクティブにします。
# メソッド パラメータ名 Value
2

 

Worksheet

 

アクション Activate
名前 ‘ワークフローオリジナル(見積書)’

 

ワークシートの選択

 

【データマッパの配置】

  • ツールボックスからデータマッパをExcelコンポーネントの下にDrag&Dropし、ステップ名を「見積データ抽出 → 見積データ書込」とします。

データマッパの配置

 

【送り元と送り先の設定】

  • データマッパをダブルクリックして、マッパ画面を表示し、送り元にDataBase、送り先にCall Flowを設定します。

送り元と送り先の設定

 

【送り元の設定】

  • 送り元のデータベースウィザードで見積明細データを抽出するSQL文を作成します。

送り元の設定

 

  • Where句テキストを設定します。
  • 使用可能列や変数はダブルクリックすることでWHERE句テキスト欄に反映されます。
  • 「=」や「<>」などの演算子は手入力します。

Where句テキストを設定

 

  • データベースウィザードのサマリで、作成されたSQL文を確認します。

データベースウィザードのサマリ

 

【送り先の設定】

  • 送り先のCall Flowのプロパティでフロー「見積データ書込」を選択します。
  • マッパ画面を開いて、送り先の変数一覧が表示されることを確認します。

送り先の設定

 

【項目のマッピング】

  • マッパ画面で以下の項目をマッピングします。
送り元 送り先 計算値に設定する式
ItemName F.商品名
Suryo F.数量 Str (Src.S1/Record/Suryo ,’10C’)
Tanka F.単価 Str (Src.S1/Record/Tanka ,’10C’)
Kingaku F.見積金額 Str (Src.S1/Record/Kingaku ,’10C’)

※Str関数の第二引数「10C」の「10」は整数部分が10桁であることを示しています。
「10C」の「C」は機能指示記号と呼ばれ、3桁ごとにカンマで区切られます。

 

【明細カウンタのカウントアップ】

  • 送り先ルートで明細カウンタをカウントアップします。

明細カウンタのカウントアップ

 

  • 送り先にデータを1レコードずつ渡す前に、明細カウンタをカウントアップします。

明細カウンタをカウントアップ

 

【Excelコンポーネントの配置】

  • ツールボックスからMicrosoft ExcelコンポーネントをDragしてデータマッパーの下にDropし、ステップ名を「MicrosoftExcel : Close」とします。

Excelコンポーネントの配置

 

【Excelブックの保存】

  • Excelコンポーネントをダブルクリックして、「追加」ボタンでメソッドを追加します。
# メソッド パラメータ名
1 Workbook Save アクション 名前を付けて保存
ァイル名 F.ファイル名
ファイル形式 XLSX


Excelブックの保存

 

【Excelプロセスの終了】

  • 更にメソッドを追加してExcelプロセスを終了します。
# メソッド パラメータ名
2 Quit


Excelプロセスの終了

 

【サブフローの設定】

  • 「見積データ書込」フローをダブルクリックし、フローエディタを開きます。
  • ツールボックスからMicrosoftExcelコンポーネントをフローエリアにDrag&Dropします。

サブフローの設定

 

【Excelシートの構成】

  • Excelシートの明細行の構成は下記のようになっています。
  • Excelコンポーネントでは、各セルの行番号、列番号を指定して値を設定します。

Excelシートの構成

 

【品名の設定】

  • Cellメソッドを追加し、下記のように設定します。
# メソッド パラメータ名 Value
1 Cell アクション SetValue
C.明細カウンタ
カラム 2
F.商品名

品名の設定

 

【定価の設定】

  • Cellメソッドを追加し、下記のように設定します。
# メソッド パラメータ名 Value
2 Cell アクション SetValue
C.明細カウンタ
カラム 17
F.単価

定価の設定

 

【ご提供単価の設定】

  • Cellメソッドを追加し、下記のように設定します。
# メソッド パラメータ名 Value
3 Cell アクション SetValue
C.明細カウンタ
カラム 20
F.単価

ご提供単価の設定

 

【数量の設定】

  • Cellメソッドを追加し、下記のように設定します。
# メソッド パラメータ名 Value
4 Cell アクション SetValue
C.明細カウンタ
カラム 23
F.数量

数量の設定

 

# メソッド パラメータ名 Value
5 Cell アクション SetValue
C.明細カウンタ
カラム 25
F.見積金額

ご提供金額の設定

 

  • フロー完成です。

フロー完成

 

【バッチファイルによるGigaSpacesの起動】

  • 「Magic xpi 4.13 GSA」サービスを停止し、バッチファイルからGigaSpacesを起動します。

※GigaSpacesを再起動した後は、必ずデバッガサービス、モニタサービスも再起動するようにしてください。

バッチファイルによるGigaSpacesの起動

 

【GigaSpacesの実装状況の確認】

  • デスクトップのショートカットから「GigaSpaces – UI」を起動します。

GigaSpacesの実装状況の確認

下記6つのコンポーネントが表示されていることを確認します。
・gsc(MAGIC_INFO)
・gsc(mirror-service)
・gsc(MAGIC_SPACE)
・gsa
・lus
・gsm※「開発(小)」でインストールした場合
※順序は上記と異なる場合があります。

 

【デバッグ】

  • 「見積データ抽出」フローに自動起動を設定しプロジェクトデバッグを実行します。
  • 「<projectフォルダ>\Output\」フォルダに「見積書[YYYYMMDD][HHMMSS].xlsx」ファイルが作成され、明細データが出力されていることを確認します。
  • メニュー > デバッグxpi > デバッグ停止でデバッグを停止します。

デバッグ

10.2 スケジューラでの実行

【スケジューラでの実行】

  • 10.1で作成した「見積データ抽出」フローにスケジューラ(インターバル起動)を設定し、Magic モニタで実行してみましょう。
  • ここでは3分ごとにフローが起動するように設定していきます。

 

【サービスの設定】

  • メニュー > プロジェクト > 設定で設定画面を開き、「サービス」を選択した状態で、「追加」ボタンを押します。
  • 新規サービスの登録ダイアログが表示されるので、サービスタイプ「Scheduler」を選択し、サービス名に「Every3min」と入力します。

サービスの設定

 

【サービスの詳細設定】

  • 右ペインでサービスの詳細を下記のように設定します。

サービスの詳細設定

スケジューラタイプ 間隔
イベント時間を定義 3分

 

【スケジューラユーティリティの配置】

  • 「見積データ抽出」フローのトリガーエリアにスケジューラユーティリティをDrag&Dropします。

スケジューラユーティリティの配置

 

【スケジューラユーティリティの設定】

  • スケジューラユーティリティをダブルクリックし設定画面を開きます。
  • 「新規」ボタンでエントリを追加し、名前を「Every3min」と入力します。
  • 右ペインで先ほど作成した「Every3min」サービスを選択し「OK」ボタンを押します。

スケジューラユーティリティの設定

 

【プロジェクト起動】

  • メニュー > ビルド > ソリューションのリビルドを実行します。
  • Magic モニタを起動し「MagicxpiSample1」プロジェクトを開始します。
  • アクティビティログで何度かフローが実行されたのが確認できたら「MagicxpiSample1」プロジェクトを停止します。

プロジェクト起動

 

【Excelファイルの確認】

  • 「<projectフォルダ>\Output\」フォルダに「見積書[YYYYMMDD][HHMMSS].xlsx」ファイルが複数作成されていることを確認します。
  • ファイル名の[HHMMSS]の部分はフロー動作時の時刻になりますので、この部分がおよそ3分おきになっていることを確認してください。

Excelファイルの確認

確認が終わったら「見積データ抽出」フローの有効にするプロパティを「No」に設定してください。