studio
2024.10
true
重要 :
このコンテンツの一部は機械翻訳によって処理されており、完全な翻訳を保証するものではありません。
UiPath logo, featuring letters U and I in white
Studio ガイド
Last updated 2024年11月18日

ステート マシン

ステート マシンはオートメーションの一種で、実行中に有限個のステートを使用します。ステート マシンは、アクティビティによって起動されたときに、あるステートに移行することができ、別のアクティビティが起動されたときにそのステートを終了します。

ステート マシンのもう 1 つの重要な特徴として、あるステートから別のステートに移行するための基準となる条件を追加することもできます。これらの条件はステート間で矢印またはブランチで表示されます。

ステート マシンには固有のアクティビティとして、[ステート] アクティビティと[最終ステート] アクティビティがあります。これらは、[ワークフロー] > [ステート マシン] で確認できます。

注: 初期ステートは 1 つしか作成できませんが、[最終ステート] は複数作成することが可能です。

[ステート] アクティビティには [Entry][Exit][Transition(s)] という 3 つのセクションがあります。一方、[最終ステート] には [Entry] という 1 つのセクションのみがあります。どちらのアクティビティも、ダブルクリックして展開することができ、詳細情報を表示して編集できます。

[Entry] セクションと [Exit] セクションでは、選択したステートの開始トリガーと終了トリガーを追加できます。一方、[Transition(s)] セクションには、選択したステートにリンクされたすべてのトランジションが表示されます。





[遷移条件] も [ステート] アクティビティとまったく同様に、ダブルクリックすると展開されます。[遷移条件] には [Trigger][Condition][Action] の 3 つのセクションがあり、これらを使用して、次のステートのトリガーを追加したり、アクティビティやシーケンスを実行すべき基準となる条件を追加したりできます。



ステート マシンの使用例

ステート マシンの使用例を紹介するため、ここでも前の章と同様の推測ゲームを作成しますが、推測する数字の範囲を 1~100 とします。

  1. 空のプロセスを作成し、[デザイン] タブの [ファイル] グループで、[新規] > [ステート マシン] を選択します。[新しいステート マシン] ウィンドウが表示されます。
    注: デザイナー パネルに [ステート マシン] アクティビティを追加して、新しいステート マシン オートメーションを作成することもできます。
  2. [名前] フィールドにオートメーションの名前 (例: 「First State Machine」) を入力し、既定のプロジェクトの場所をそのまま使用するか、サブフォルダーを追加します。[作成] をクリックします。これに従ってデザイナー パネルが更新されます。
  3. 2 つの整数変数 InitialGuessRandomNumber を作成します。1 つ目の変数には推測した数字を格納し、2 つ目の変数にはランダムな数字を格納します。
  4. デザイナーパネルに [ステート] アクティビティを追加し、[Start] ノードに接続します。これが初期ステートとなり、ランダムな数字の生成に使用されます。
  5. アクティビティをダブルクリックします。この [ステート] アクティビティが、デザイナー パネルで展開表示されます。
  6. [プロパティ] パネルの [表示名] フィールドに、「Initializing Random Number」と入力します。これで、ステートを簡単に区別できます。
  7. [Entry] セクションに [代入] アクティビティを追加します。
  8. [左辺値 (To)] フィールドに、RandomNumber 変数を追加します。
  9. [右辺値 (Value)] フィールドに、「new Random().Next(1,100)」と入力します。この式によってランダムな数字が生成されます。
  10. メイン プロジェクト画面に戻り、新しい [ステート] アクティビティを追加します。
  11. このアクティビティを、前に追加したアクティビティに接続します。
  12. 今追加した [ステート] アクティビティをダブルクリックします。このアクティビティが、デザイナー パネルで展開表示されます。
  13. [プロパティ] パネルの [表示名] フィールドに、「Guess Number」と入力します。このステートを使用して、ユーザーに数字を当てるよう求めます。
  14. [Entry] セクションに [入力ダイアログ] アクティビティを追加します。
  15. [入力ダイアログ] を選択し、[プロパティ] パネルで、1~100 の数字を当てるようユーザーに求めるための適切な [ラベル][タイトル] を追加します。
  16. [結果] フィールドに InitialGuess 変数を追加します。この変数には、ユーザーが推測した数字を格納します。
  17. メイン プロジェクト画面に戻り、Guess Number ステートからそれ自身までを指し示すトランジションを作成します。
  18. このトランジションをダブルクリックします。トランジションがデザイナーパネルで展開表示されます。
  19. [プロパティ] パネルの [表示名] フィールドに、「Try Smaller」と入力します。このメッセージは矢印の上に表示され、オートメーションの作業がしやすくなります。
  20. [Condition] セクションに、「InitialGuess > RandomNumber」と入力します。これで、ユーザーが推測した数字がランダムに生成された数字より大きいかどうかが確認されます。
  21. [Action] セクションに [メッセージ ボックス] アクティビティを追加します。
  22. [Text] フィールドに、「"Your guess is too big. Try a smaller number."」のようなメッセージを入力します。このメッセージは、ユーザーが推測した数字がランダムに生成された数字より大きい場合に表示されます。
  23. Main プロジェクト画面に戻り、新しいトランジションを作成します。この新しいトランジションは、Guess Number ステートからそれ自身までを指し示します。
  24. このトランジションをダブルクリックします。トランジションがデザイナーパネルで展開表示されます。
  25. [プロパティ] パネルの [表示名] フィールドに、「"Try Bigger"」と入力します。このメッセージは矢印の上に表示され、オートメーションの作業がしやすくなります。
  26. [Condition] セクションに、「InitialGuess > RandomNumber」と入力します。これで、ユーザーが推測した数字がランダムに生成された数字より小さいかどうかが確認されます。
  27. [Action] セクションに [メッセージ ボックス] アクティビティを追加します。
  28. [Text] フィールドに、「"Your guess is too small.Try a bigger number."」のようなメッセージを入力します。このメッセージは、ユーザーが推測した数字がランダムに生成された数字より小さい場合に表示されます。
  29. Main プロジェクト画面に戻り、デザイナー パネルに [最終ステート] アクティビティを追加します。
  30. [Guess Number] アクティビティから [最終ステート] に [遷移条件] を接続します。
  31. [プロパティ] パネルの [表示名] フィールドに、「"Correct Guess"」と入力します。
  32. [Condition] フィールドに、「InitialGuess = RandomNumber」と入力します。この条件が満たされると、このオートメーションが最終ステートの段階に進んで終了します。
  33. [最終ステート] アクティビティをダブルクリックします。このアクティビティがデザイナー パネルで展開表示されます。
  34. [Entry] セクションに [メッセージ ボックス] アクティビティを追加します。
  35. [Text] フィールドに、「"Congratulations.You guessed correctly! The number was " + RandomNumber.ToString + "."」のように入力します。これは、ユーザーが正しい数字を当てたときに最後に表示されるメッセージになります。

    最終的なワークフローは、次のスクリーンショットのようになります。



  36. F5 キーを押します。オートメーションが正しく実行されます。


  • ステート マシンの使用例

このページは役に立ちましたか?

サポートを受ける
RPA について学ぶ - オートメーション コース
UiPath コミュニティ フォーラム
Uipath Logo White
信頼とセキュリティ
© 2005-2024 UiPath. All rights reserved.