こんにちは。インフォテリアのキクチです。
そろそろ花粉の季節になってきたようですが、みなさん対策はされてますか?
季節の変わり目にもなってくるので、体調を崩されないように気をつけてくださいね。私自身はまったく花粉症ではないので、大変さは分からないのですが…(汗)
さて、今回のASTERIA Warp体験記では前回行ったファイル連携を少し発展させてみました。複数のファイル連携を体験しています。
この辺りの要件は業務上必須になってくる場合も多いと思うので、何かしらのヒントになればいいなと思いながら今回も頑張っていきます。
目次
それでは早速、ASTERIA Warp体験記、ファイル連携編その2を始めてみたいと思います!
前回はファイル連携の基礎的な部分を体験しました。
今回はもう少し実践的に複数のファイルの連携を体験していきます。
単一のファイルを読み込んで出力する、単純な連携は無事に行えました。
じゃあ、複数のファイルを連携させたい場合にはどんな手順で行っていけばいいんでしょう…?
前回のフローを元にして複数のファイルの連携を行ってみたいと思います。
まずは、フローデザイナーの立ち上げです。
前回作成したフローを元にしたいと思いますので、前回のフロー(ファイルを連携する1)を右クリックで表示されるメニュー「複製」を選択します。
ちなみに、同じように表示される右クリックメニュー「コピー」では別プロジェクトへもフローをコピーできるようです。
新しいフロー「フローを連携する2」が作成されました。こちらをいじっていきたいと思います。
例えば、
みたいな場合にASTERIA Warpでどう実現するのかを考えてみます。
ひとまず、簡素化のために売上情報ファイル2つを別フォルダに配置してみたいと思います。
というような流れになるんじゃないでしょうか。
ファイルパスについては、別途設定ファイルなどに記載してある情報を読み取るのなど、あらかじめ設定しておく必要がありそうですし、一つ一つのファイルのオープンクローズにも気を使いそうです…
まずは自分なりにフローを作ってみました。
ものすごくダサいですが、単純にファイル2つの読み込みなので、フローの流れを2つ作ってしまえばファイルの連携自体は成功しました。
ただ、これだとファイルの数が増えたときにファイル数分設定を行わなければならないので非常に面倒ですよね。
きっと、もっとスマートに出来るはずだと思い、Hさんに見てもらいました。
キクチ「Hさん、複数ファイルの連携についてなんですけど、このフローを見てもらってもいいですか?」
Hさん「もちろん!………何、このものすごくダサくて手間のかかるフローは…」
キクチ「ですよね…。ファイルの取得とか出力をもっとスマートにしたいんですけど…(汗)」
Hさん「なるほど、そういうことねー。それならFileGetコンポーネントでループさせてあげれば出来るんじゃないかな」
キクチ「ループ!確かに!でもそれだと、ファイルパスの指定とかどうしてあげればいいんですかね?繰り返しの度に動的に変えてあげないと…」
Hさん「ファイルパスにはワイルドカードが指定できるから、それで取得することが出来るんじゃない?」
キクチ「ワイルドカード使えるんですね!それならいちいち絶対パスで指定しなくても取得できますね。」
Hさん「出力ファイルパスもマッパーの中で決められるからそれで出来るんじゃないかな。」
キクチ「はい!ありがとうございます。」
ループとファイルパスのワイルドカード指定、この二つがあれば出来そうな気がしてきました。
早速フローを作り直してみます。
こんな感じになりました。
一見、前回作成したフローと同じように見えますが、FileGetコンポーネントのプロパティでループを指定しています。
また、ファイルパスのプロパティにもワイルドカードを指定してみました。
「ループを開始」プロパティを「はい」に指定すると、FileGetコンポーネントの出力ストリームの表示も少し変わるみたいです。
ていうか、ワイルドカードが使えることもリファレンスにはしっかり記載があるんですね…
「コンポーネント」_「ファイル」_「FileGet」
使うコンポーネントを決めたら、まずはリファレンスを確認することを心に決めました(汗)
どうやら、FileGetコンポーネントのループでは1ファイルずつをストリームとして読み込んでくれるようです。
それに、出力ストリーム変数で「FileName」を持っているので、今回は読み込んだファイル名をそのままユーザーのホームディレクトリに出力してみたいと思います。
具体的にはマッパー画面でこんな風にマッピングしてあげます。
するとFilePutコンポーネントのファイルパスプロパティには
こんな感じで表示されます。
見事成功しました!
ユーザーのホームディレクトリにも…
読み込んだ複数のファイルが作成されています。
作成されたファイルを見てみると…
中身もきちんと出力されているのが確認できます。(当たり前ですね…(汗))
複数ファイルの読み込みを考えたとき、プログラムだとループ回数の指定、ループ内で行う処理の記述などステップ数が多くなりがちですが、ASTERIAだとプロパティ2つを変更するだけで処理が完結できてしまいました。なんともお手軽だなぁ~
次は今作成したフローを一定時間ごとに実行するスケジュールの設定です。作成したフローの呼び出し方を決める「実行設定」
まずはマニュアルを参照してみます。
ツールバーの雷マークから設定を出来るようです。
クリックして進めてみます。
今回は一定時間ごとに起動する設定にしたいので「間隔」の設定を行います。
起動するフローや、実行間隔の設定をして、「登録」ボタンを押下すると…
新しい実行設定が追加されています。
実行設定もなんともお手軽ですね。
こうしておくことでフローサービスが起動されている間は設定された間隔に沿ってフローが実行されるようです。
と、いうことで今回はここまでにしたいと思います。
どうでしょう。ASTERIA Warpでファイル連携、すごく簡単な気がしてきたんじゃないですか?
さて、次回についてですが、実運用を考えたとき、大きなファイルでもメモリがパンクしないように考えておきたいですよね。
そんなわけで、ビッグサイズのファイルでもタイムアウト、メモリ制限に引っかからないようなフローの作成に挑戦してみたいと思います。
次回もお楽しみに!
ASTERIA Warpのプリセールスエンジニア&体験セミナー講師。関係各所から舞い込んでくるASTERIA Warpに関するご依頼になんとか応えながら日々鍛えてもらっています!
Related Posts
ASTERIA Warp製品の技術情報やTips、また情報交換の場として「ADNフォーラム」をご用意しています。
アステリア製品デベロッパー同士をつなげ、技術情報の共有やちょっとしたの疑問解決の場とすることを目的としたコミュニティです。