クラッシュコース101
10 モジュール
5 週

サイクル、Excelファイルのインポート

クリックでコピー

ビジネスプロセスにおけるサイクルの活用 Excelファイルからのデータ読み込み


この先の処理を理解するためには、少し理論的な話にそれて、サイクルの原理を理解することが必要である。以前は、すべてのプロセスは前進するのみでした。彼らは特定のフォークを選択することができました(その際 If-ElseSwitchブロック上で)特定のフォークを選択することができましたが、各ブロックは一度だけ実行され、後戻りはできないことが確実に分かっていました。

サイクル

サイクルは、特定のセクションを複数回繰り返すことができる機能です。選択された一連のブロックが何度も繰り返し実行されるようにプロセスが作成される。ループの終了条件が満たされるまで。

AppMaster は、3つの異なる種類のサイクルを使用する能力を提供します。その動作原理は全く同じである。ループを終了させる条件だけが、それぞれを区別する唯一の点である。

  • Loop.すべてのサイクルの中で最もシンプルなサイクルです。その Times (Integer)パラメータは、与えられたループが何回実行されるべきかを固定値で設定します。
  • While loop.特定の条件が満たされるまで実行されるループ。この条件は Condition (Boolean)パラメータで指定します。各ループの最初に、Condition の値がチェックされます。True であれば、ループは実行され、False であれば、ループは停止します。パラメータは Limit (Integer)パラメータは、ループが永遠に実行されないように、ループの繰り返し回数の制限を設定します。これに達すると、Condition の値に関係なく、ループは終了します。
  • For each loop.配列で動作するように設計されたループ。配列を入力として受け取り、配列の各要素に対して特定の操作を実行することができます。配列の要素の数だけ実行されます。

各サイクルには2つの出力ストリームがあります。

  • Loop Body.ループ本体そのもの。必要な回数だけ繰り返されるその処理。
  • Completed.ループが終了したときに実行されるスレッド。ループが終了した後に次に行う処理を指定する。ところで、どんなサイクルも、初期条件が満たされるのを待たずに、コマンドで完了させることができる。これを行うには、適切な場所で Break Loopブロックを適切な場所で使うだけです。これは、ストリームを直ちにCompleted に転送する.

Read XLSX File

xlsxファイルを分析するために、我々は Read XLSX Fileブロックを使用します。その動作原理は、ブロックとほぼ同じです。 For each loopブロックと動作原理はほぼ同じです。表ファイルを文字列の配列として表現する。そして、各行も配列ですが、すでに指定された行の列の配列になっています。


xlsxファイル自体も似たような形式で表示される。最初の列にはセクションの名前があり、2番目の列にはこのセクションが含む情報が書かれている。同時に、情報が書かれている行は事前に全く分からないので、任意の場所に表示される可能性がある。この例では、2行目に経歴、8行目にログインが書かれているが、行や書かれた順番は任意である。

ビジネスプロセスは、入力パラメータとしてファイルを受け取ることから始まります。転送されるのはファイルのデータ型、つまりファイルIDであり、ファイル全体ではないことに注意してください。同じファイルを Read XLSX Fileブロックに渡します。


Each rowこの場合の , はアナログです。 Loop Body.つまり、xlsxファイルの行の数だけループが実行されることになる。同時に、各サイクルにおいて、今どの行が処理されているかという情報(Row number) と、その行にどの列があるか (Row columns).

課題は、各行の最初のセルをチェックすることである。"Login "または "Bio "と書かれたセルを見つけることを期待する。こうすることで、必要な情報を持つ列を見つけたことが理解できます。

これを行うには、インデックスが 0 の Array Elementこのようにして、文字列の最初のセルの内容を取得します。その後 Switchブロックを使って目的のマッチ(Login, Bio)を探す。

もしそのようなマッチが見つからなければ、ループは次の反復に進み、次の行をチェックします。見つかった場合は、この行の 2 番目のセルに必要な情報が含まれているはずだと判断し、再び Array Elementブロックを再度(ただし、インデックスを 1 にして)使用して、この情報を取得します。

あとは、この情報を保存するだけです。もし、この作業をすぐに行わなければ、このサイクルが続いてしまい、受け取ったデータは失われてしまう。

変数

このような場合、変数を使うのが最も良い方法です。変数の意味は、ある値をあるブロックから別のブロックにすぐに転送するのではなく、メモリに保存しておき、必要なときに使用することにある。

このために2つのブロックがあります。

  • Variableブロックを使用します。これは、任意の数値、文字列、あるいはオブジェクトの配列でもかまいません。重要なのは、このブロック自体は何もしないこと、つまり入力パラメータを持たないということです。このブロックは、ある値を書き込むための場所がメモリ上に確保されたことを知らせるだけであり、後で再びこのブロックを参照してこの値を見つけることができる。
  • この Set Variableブロックは、変数に新しい値を書き込むために設計されています。

この例では、以下のような2つの変数を定義します。 Stringの2つの変数を定義し、見つかった値を1つのLoginと2番目のBioに書き込みます。ループの最後には、これらの変数からエンドブロックに値を渡すだけでよいのです。


さて、いよいよ完成したビジネスプロセスのエンドポイントを作成し、Webアプリケーションのフロントエンドで使用できるようにします。


最終結果

最終的なビジネスプロセスはこのようになります。


アプリケーションの作成を完了させるための最後の仕上げがあります。フロントエンドビジネスプロセスに戻り、それを完成させましょう。必要なのは

  • サーバーに保存するための xlsx ファイルモデルを渡す。
  • 結果を展開し、ファイルIDを取得する。
  • このIDを先に作成したエンドポイントに渡すPOST /xlsx-data/
  • 受け取ったデータを使って、適切なフィールドに表示する(また、Disable パラメータをリセットして、編集の可能性を開く)。

すべてが正しく行われた場合、ファイルから情報を読み込んだ後の最終バージョンは以下のようになるはずです。

Was this article helpful?
まだ答えをお探しですか?