Coming soon – work in progress!
OpenIAPカテゴリー: BPA/OpenIAP Docs翻訳
3.7.7. WindowsClick検出器
WindowsClick
検出器は、WindowsElement
内のクリックを検出する。
ディテクターパラメーター
Name
– OpenFlow内部の検出器の名前。
セレクタ
–レコーダーのプラグインと同じように、セレクト・ボタンを使って、あるいはセレクターを開くボタンでセレクター・ウィンドウを開いて
、ユーザーが指定した要素を指定できるようにします。また、ハイライトボタンをクリックすることで、JavaElementが
正常に指定されたかどうかを確認することができます。
3.7.8. WindowsElement検出器
WindowsElement
検出器は、WindowsElement の
出現を待ちます。
ディテクターパラメーター
Name
– OpenFlow内部の検出器の名前。
セレクタ
–レコーダーのプラグインと同じように、セレクト・ボタンを使って、あるいはセレクターを開くボタンでセレクター・ウィンドウを開いて
、ユーザーが指定した要素を指定できるようにします。また、ハイライトボタンをクリックすることで、JavaElementが
正常に指定されたかどうかを確認することができます。
3.8. コマンドラインからワークフローを実行する
OpenRPA Workflowsをコマンドラインから実行するのは非常に簡単です。このセクションでは、ユーザーがその方法を学びます。
3.8.1. ワークフローIDをキャプチャする
OpenRPA の各ワークフローには、作成時に割り当てられたワークフロー ID
があります。 ワークフロー ID を
取得するには、 OpenRPA
を 起動 し
、 ワークフロータイトルを 右 クリック
し
、
「Copy ID
」を クリック
するだけ
です。
3.8.2. ワークフローをローカルで実行する
このセクションでは、PowerShellを
使用してローカルにワークフローを実行する方法について説明します。
まず、PowerShellの
プロンプトを開きます。
以下のコマンドを実行します。WORKFLOW_ID}には
、実行したいOpenRPA Workflowのワークフロー IDを
指定します。例えば、5f8dfaf243e8cf24d4c25dcdという
idの
ワークフローを実行したい場合は、以下の2番目のコードブロックに従って、コマンドを実行します。
Start-Process -FilePath "C:\\Program Files\\OpenRPA\\OpenRPA.exe" -ArgumentList "-workflowid ${WORKFLOW_ID}"
Start-Process -FilePath "C:\\Program Files\\OpenRPA\\OpenRPA.exe" -ArgumentList "-workflowid 5f8dfaf243e8cf24d4c25dcd"
ここでは 、
Start-Process(https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-7)
コマンドレット´`を 使用
します。 コマンドレットが
何か
わからない
場合は
、「コマンドレットの概要(https://docs.microsoft.com/en-us/powershell/scripting/developer/cmdlet/cmdlet-overview?view=powershell-7)
」のページを参照してください。
そして、OpenRPAはOpenFlow上でワークフローを起動したかのように、あるいはOpenRPAのリボン内の再生ボタンをクリックしただけで実行されるようになります。
3.8.3. ワークフローをローカルで実行するようにスケジューリングする
このセクションでは、指定した期間に常に実行されるワークフローをスケジュールする方法について説明します。
まず、Windows 10の検索バーで「 タスクスケジューラー
」を検索する必要があります。
タスクスケジューラーを
開いたら、「 タスクの作成
」をクリックします。
ここで、ユーザーは、タスクに
必要な名前と
その説明を
入力する必要があります。
次に、タスクの
トリガー時に実行される「アクション
」を選択する必要があります。アクション]
タブをクリックし、[新規
…]ボタンをクリックします。
ここで、ユーザーは実行するプログラム
(OpenRPA)を選択する必要があります。そのためには、Browse
…ボタンをクリックして、OpenRPAのインストールフォルダ(デフォルトはC: \Program FilesOpenRPA
)に移動し、OpenRPA.exeの
実行ファイルを選択する必要があります。
次に、「 引数の追加 (オプション):
」入力フィールドに、ユーザーは/workflowid ``
の 後に
、
実行したいワークフローの ``id`
を
挿入する必要があります。この場合、ワークフローの ID は5f9d10719fad3056ccd42714
ですので、作者はこのフィールドに/workflowid 5f9d10719fad3056ccd42714
を挿入しました(下の画像でご覧いただけます)。
Start in (optional):
パラメータにOpenRPAのインストールフォルダ(デフォルトはC: \Program FilesOpenRPA
)を設定する必要があります。3つのパラメータを設定したら、最後にOKボタンをクリックして、タスクが
実行するアクションの
設定を完了します。
最後に、ユーザーはタスクの
実行を有効にするトリガーを
設定します。トリガー]
タブをクリックし、[新規作成]ボタンをクリックするだけです。
ユーザーは、タスクの
実行を開始するイベントを
選択できます。ここでは、デフォルトで設定されている[ スケジュール
]イベントのみを取り上げます。
まず、ワークフローを「1 回
だけ
」「毎日
」「毎週
」「毎月
」のどれで実行するかをチェックボックスで選択します。
次に、カレンダーセレクタでワークフローを開始
する日時を選択します。
また、ユーザーはいくつかの詳細 設定を
選択することができます。例えば、タスクを
「遅延」
、「繰り返し」、 「停止
」、「期限切れ
」にするかどうか、また、一時的に「有効」
または「無効」にするかどうかを選択することができます。トリガー
設定を終了した後、ユーザーはOkボタンをクリックして変更を保存し、もう一度クリックしてタスクの
設定を終了する必要があります。
最後にタスクが
実行され、OpenRPAはタスクが正常に完了したこと、または失敗したことを警告する通知を表示します。
3.9.1. Chrome、Firefox
Chrome、Firefox、Edgeのプラグインは、これらのブラウザでアクティビティを記録するために必要です。プラグインがないと、そこで行われたアクティビティを記録
することができません。
また、OpenRPA.NMツールボックスのすべての機能は、これらのプラグインのインストールに依存しています。
インストールは極めて直感的な操作で行うことができます。OpenRPAGUIの上部リボン、Settings
タブに、各ブラウザのアイコンが表示されます。それをクリックすると、対応するアプリストアが開きます。
Google Chromeを使用している場合、新しいタブでChrome App Storeのページが表示されます。ユーザーは、「Chromeで使用する」をクリックします。ポップアップメッセージが表示され、インストールを確認することができます。
Firefoxを使用している場合、新しいタブでFirefoxアドオンページが表示されます。その後、「Firefoxに追加」をクリックします。その後、ポップアップメッセージが表示され、インストールを確認することができます。
Edgeを使用している場合、新しいタブでChrome App Storeが開きます。EdgeにChrome拡張機能をインストールしたことがない場合、他のストアの拡張機能をEdgeにインストールすることを許可するかどうかを確認するポップアップが表示されます。ユーザーは「Allow extensions from otherstores」ボタンをクリックし、「Add to Chrome」ボタンをクリックして、Edge用のOpenRPAプラグインをインストールする必要があります。
これらのプラグインは、OpenRPAがそれらのウェブブラウザの情報にアクセスするために存在するだけであることに留意してください。これらのプラグインは、データを取得すること自体に責任を負うものではありません。また、これらのプラグインは、OpenRPAの正常な機能を損なうことなく、いつでも削除することができます。
備考
これらのプラグインは、それぞれのアプリストアから直接インストールする必要があります。オフラインで手動でファイルを転送してインストールすることはできません。
3.9.2. AVIレコーダー
AVI Recorderは、ワークフローの実行を記録するために使用されます。このプラグインは、時折失敗するワークフローをデバッグする際に、何が起こっているのか実行状況を注意深く観察することが困難な場合に非常に便利です。
OpenRPAリボン内の設定タブで、プラグインの実行をクリックします。AviRecorder
を選択し、Enabled
チェックボックスをマークして、録画の保存
先
フォルダパスを
設定します。
デフォルトでは、OpenRPAは失敗したワークフローの実行記録のみを保持します(プロセス自体の失敗または他のアクティビティによって強制されたため)。成功したものも失敗したものも含めて、すべての実行を記録したい場合は、 成功したものを残す
チェックボックスをオンにします。
さらに、コーデックと
録画 品質を
調整することで、ハードディスクの容量を節約したり、録画品質を向上させたりすることができます。
3.A.1. ウェブオートメーション
この例では、RPA Input Forms Challenge(http://www.rpachallenge.com/
)が解決されます。
推奨通り、レコーダーは設計を円滑に進めるために使用されます。
その手順は以下の通りです。
-
Excel ファイルを
ダウンロードしてください。 -
Excel ファイルを
読み込む。 -
マップスタートボタン。
-
データセットの行をループさせる。
-
各WebElementの入力フィールドに対応するハンドルを探します。
-
Webページ内の必要事項をすべて入力してください。
-
マップ送信ボタン。
3.A.1.1. Excelファイルをダウンロードする
Excel ファイルを
ダウンロードするには、OpenRPA.Utilitiesの
ツールボックス内にあるDownloadFileアクティビティを使用します。
アクティビティをデザイナ内のメインシーケンスにドラッグします。
.
..ボタンをクリックして、アーカイブを保存するファイルのパスを選択するか、アクティビティのプロパティタブにあるLocalPath
パラメータを割り当てます。
取得したいアーカイブのURLを貼り付けます。URLはOpenRPAが文字
列として取得するため、”"
で囲む必要があることを覚えておくとよいでしょう。この例では、次のようなURLを使用しています。”rpachallenge.com/assets/downloadFiles/challenge.xlsx “です。
3.A.1.2. Excelファイルを読み込む
ReadExcelアクティビティは、Excel ファイルから
読み込んで、変数に保存します。
ここでのすべての手順は、「Excelファイルから読み込む方法」で目に見える形で説明されています。
Excelファイルから読み込む方法
OpenRPA.Utilities
ツールボックスの中にあるReadExcelアクティビティをメインシーケンスにドラッグします。
読み込むExcel ファイルを
..
.ボタンで選択し、エクスプローラで読み込むシートがあるファイルパスを探します。
次に、..
.ボタンをクリックすると、エクスプローラーウィンドウが表示され、そこで使用するExcel
ファイルを
選択します。
ReadExcelアクティビティは、このExcel ファイルを
読み込んで、変数に保存します。
この変数はまだ存在しないので、最初に作成する必要があります。変数は必ずSystem.Data.DataSet.DataSetという型に設定しなければならないことに注意してください。プロパティ]タブ内のデータセット
入力フィールドをクリックし、使用したい変数名を入力してCtrl+Kを押して
ください。
変数、引数、インポートボックスの中に変数を作成するか、以下の注意事項に従うか、どちらかです。
備考
OpenRPAは、アクティビティ/プロパティに必要な正しい型を持つ新しい変数を自動的に作成することができます。プロパティボックスに新しい変数を作成するには、変数名を入力し、キャレットを入力フィールドに入れたまま、Ctrl+Kを
押します。
備考
DataSet オブジェクトは
シート全体に対応する.各データテーブル
(例えばSheet1
)は,Excel ファイル
内の各シートに対応する.DataSet
クラスは、このExcel ファイル
から
消費されるすべてのデータを保存するために作成された、一時的なインメモリキャッシュのオブジェクトです。DataSet
クラスの詳細については、MicrosoftのDataSetクラスに関するドキュメント(https://docs.microsoft.com/en-us/dotnet/api/system.data.dataset?view=netcore-3.1
)を参照してください。
備考
DataTable オブジェクトは
、同じ名前のクラスからDataSet オブジェクトに
含まれるインメモリデータの1つのテーブルに対応します。Excel ファイルを
読み込むと、それは自動的にDataSet
クラスに割り当てられ、すべてのシートは
DataTable
クラスに保存されます – 0からExcel ファイル
内のシートの量に番号が付けられています。ここで、DataTable
オブジェクトは大文字と小文字を区別することに注意してください。
3.A.1.3. スタートボタンをマップする
スタートボタンをクリックすると、チャレンジが始まります。
課題を開始するプロセスをマッピングするには、「Read Excel」アクティビティの下のスペースに対応する白い三角形をクリックするだけです。以下のステップに示すように、レコーダーを起動し、ブラウザ内の[開始]ボタンをクリックします。
備考
Recorderを
使用するには、Chrome/Mozilla Firefoxのプラグインをインストールする必要があります。詳しくは、Chrome、Firefoxの項をご覧ください。
録音を停止するには、ESC
ボタンを押すだけです。
ここで注意していただきたいのは、録音を終了させないと、あなたが実行したすべてのアクティビティが延々と録音されてしまうということです。
Startボタンをうまくマッピングすると、ワークフローは次ページの最後の画像のようになるはずです。
3.A.1.4. データセットの行をループさせる
さて、いよいよページ内の入力フォームに、Excel ファイル
から
集めたデータを入力します。
OpenRPA
ツールボックスの中にあるForeach DataRowアクティビティをドラッグしてください。次に、Foreach DataRowアクティビティの内部で、System.Activites
ツールボックスからSequenceアクティビティをドラッグしてください。
前述のように、Read Excelアクティビティから割り当てられたDataSet
内の各シートは、Tables
属性内のコレクションとしてインメモリに保存されます。
Tables
属性内の各シートは、Excel ファイル
内のシートに応じて取得され、これらのシートは0から始まる番号が付いています。 例として、Excel ファイル
内のDataTableに
行を追加する場合、まずDataTable クラスの
オブジェクトに割り当て、アクティビティを使用してテーブルに行を追加することになります。
各行を取得するには、取得したい行に0から始まる番号を1つの変数に代入するか、Foreach DataRowを使って各行を適宜自動的にループさせることができます。この例では、dsという
変数にDataSetが
代入されており、これがテーブルを
取得するための変数となっています。シートが1つしかないので、ds.Tables(0)
を使って、Foreach DataRowが値を取得するテーブルを
代入しています。
行が取得されるDataTableを
割り当てた後、列はForeach DataRowアクティビティの左側に割り当てられた変数内の属性にマッピングされることに注意してください – このケースでは、DataColumnの
値を返すか設定する行
です。
Foreach DataRowループは基本的に、行内のすべての値( 名前
、 姓
、会社 名
、…) を繰り返し処理し、各フィールドが属する Web ページ内のXPath
セレクタ アイテムに割り当てます。これにより、RPA Input Forms Challenge(http://www.rpachallenge.com/)
ページ内の値が入力されるようになります。
備考
DataRow オブジェクトは
、DataTableから
マッピングされた各行です。DataRow
オブジェクトとそのプロパティ、メソッドを使用することで、ユーザーはDataTable
内の値を取得、評価、挿入、削除、更新することができます。また、DataRowCollectionは
DataTable
内の実際のDataRow
オブジェクトを表しています。DataRowCollectionにマッピングされた各カラムは、DataRow
クラスオブジェクトの属性であるインデックスを使用して取得することが可能で、行内の1列目を取得する場合は、row(0)
を使用します。DataRow
クラスの詳細については、MicrosoftのDataRowクラスに関するドキュメント(https://docs.microsoft.com/en-us/dotnet/api/system.data.datarow?view=netcore-3.1
)へのリンクを参照してください。
3.A.1.5. 各WebElementの入力フィールドに対応するハンドルを探す
RPA Input Forms Challenge(http://www.rpachallenge.com/
)のページにある各入力欄をRecorderでクリックすると、クリックされた各WebElementに対して最適なハンドルが簡単に見つかります。
このワークフローでは、WebElement の操作を行うため、通常は Element.ID、Element.Name、Element.ClassName などのハンドルが最適です。今回のケースでは、ng-reflect-name
属性をXPath
セレクタと一緒に使用して、指定された要素を捕捉する手段を提供します。
記録を開始したら、RPA Input Forms Challenge(http://www.rpachallenge.com/)
ページ内の入力フィールドを1つクリックします。通常通り、最初のフィールド、つまりFirst Nameを
記録し、その後他のフィールドに進むことをお勧めします。
入力フィールドをクリックすると、InsertTextという
タイトルのプロンプトウィンドウが表示されますので、そのままEnter
キーを押してください。
現在の入力フィールドの記録を停止するには、ESC
ボタンを押すだけです。
ここで注意したいのは、録画を終了させないと、実行したすべてのアクティビティが延々と記録されることです。
すると、Foreach DataRowシーケンスの中に新しいOpenRPA.NM.GetElement
アクティビティが表示されます。
各アクティビティーの名称は、ユーザーが対応する入力フィールドに変更することが望ましい。下の画像に示すように。
備考
アクティビティのパラメータで設定した名前(DisplayName
)を変更するには、アクティビティの名前を2回クリックし、希望の名前を入力してリターンキーを
押すか、プロパティボックスでパラメータDisplayNameを
設定する方法があります。
備考
Recorder を使用して WebElement がクリックされ、OpenRPA がその WebElement が入力値を受け取ることができると判断した場合。プロンプトが自動的に表示され、ユーザーが文字列を入力すると、RecorderはWebElementに入力された文字列を入力するようにアクティビティを生成します。今のところ、ユーザーはこれらを無視して、プロンプトに任意のテキストを入力することができ、これらの割り当てられた値は、DataTabledsから
値を取得するように置換されます。WebElement は自動的にitem
変数に代入されます。
3.A.1.6. ウェブページ内の必須項目をすべて入力する
ハンドルのマッピングができたので、Excelシートで取得した行と列の値を割り当てます。
最初の入力フィールドはFirst Name
で
、RPA.Utilies
ツールボックスにあるAssignアクティビティを使用して割り当てることができます。
左側でitem.Value
を使用してWebElement
のプロパティにアクセスし、右側で必要な入力値 (First Name
列の場合はrow(0).ToString
) を使用します。
FirstNameは
1列目にあるので、インデックス = 0
です。
備考
Assign」アクティビティは、変数に値を参照するために使用します。これを行うには、アクティビティーの左側に、値をマップする変数の名前、またはエイリアスを入力します。必要であれば、Ctrl+K を
押して、自動的に変数を作成するか、手動で作成することができます。右側を使用して、変数に割り当てられる値を入力します。
備考
行の中のそれぞれの列の値はDataCell
オブジェクトである。一時的にインメモリキャッシュとしてオブジェクトが作成され、それぞれの行の中の列の値が保存されます。さらに、Excelの値は文字列型でないオブジェクトである可能性があるため、安全性を考慮して常に文字列にキャストしておくとよいでしょう。セレクタが
返すDOMオブジェクトもString
型なので、item.Valueに
代入する前にStringに
キャストする、つまり型を変更する必要があります。これは、ToString
メソッドを使って行われます。
3.A.1.7. マップ送信ボタン
各項目(各行に対応)は、Submitボタンをクリックして入力した後、入力する必要があります。
各入力の入力プロセス(Submitボタンをクリックする)をマップするには、以下のステップのように、最後のAssignアクティビティの下のスペースに対応する白い三角形をクリックし、Recorderを起動し、ブラウザ内のSubmitボタンをクリックするだけです。
録音を停止するには、ESC
ボタンを押すだけです。
ここで注意したいのは、録画を終了させないと、実行したすべてのアクティビティが延々と記録されることです。
Startボタンをうまくマッピングすると、下の画像のようなワークフローになります。
3.A.1.8. ワークフローの完成
完成したワークフローは、以下のような順序になるはずです。
RPAチャレンジのワークフローを完成させました。
3.A.2. Windowsオートメーション
この例では、Skypeを使って、Windowsアプリケーションの自動化がいかに簡単であるかを説明します。
私たちの目標は、ユーザーに連絡先を聞いて、ロボットがSkypeに進み、指定された受信者に.PDF
ファイルを
送信することです。
したがって、ここで公開されるOpenRPAの主な機能は以下の通りです。Detector、Form、Selector、そしてRecorderです。
この例は3つのステップに分かれています。 最初のステップはDetectorで
、特定のフォルダに新しいファイルが作成されたかどうかをチェックします。 2番目のステップはFormで
、受信者の連絡先(メール
、名前
、ユーザー名
)をユーザーに尋ねます。 最後のステップはWindows Automation (Skype app)/ UsingSelectorで
、ユーザーがSkypeコンタクトにメッセージとファイルを送信する手順を記録します。
Windows UIの自動化に関心がある場合は、Windows Automationのステップに直接進むことができます。
-
- ディテクター
-
-
OpenRPAでDetectorを作成する
-
Node-REDでDetectorノードを設定する。
-
Node-REDにおけるメッセージ操作
-
Node-REDからOpenRPAへの変数の受け渡し
-
-
- フォームです。
-
-
OpenRPAフォーム
-
-
- Windowsオートメーション(Skypeアプリ)/セレクタを使用する
-
-
タスクの記録
-
セレクタを設定する
-
3.A.2.1. 検出器
Detectorはイベントリスナーと同義語です。残念ながら、特定の条件が発生するのを待ち、Node-REDや
OpenRPA
自体にメッセージを発します。
このセクションでは、特定のディレクトリのファイル変更に耳を傾け、新しいファイルが作成されたときにイベントを発生させる、FileWatcher Detector
の作成方法を学びます。この例では、新しいPDF/.pdf
ファイルが
作成されるたびに、ロボットが発火するはずです。
OpenRPAでDetectorを作成する
まず、FileWatcher Detectorを
設定する必要があります。
そのためには、まずOpenRPAのリボン内にある「設定」
バーをクリックする必要があります。
次に、リボン内の「Detectors
」ボタンをクリックします。
その後、「検出器」リボン内の目的の検出器をクリックするだけです。
この例では、使用するDetectorは
FileWatcherDetectorPlugin
です。Detector’sName
– in our caseWindows Automation
as well as thePath
which it will listen to –C:\Usersviere╱Documents╱workflow_example_filesⒸwindows_automation_files
,no quotes. Then set theFile Filter
to*.pdf
– the*
is a wildcard for the filename, that’s, any filename will do.
備考
Detectorが
見つからない場合、インストールされていることを確認してください。疑わしい場合は、インストーラー.msiを
再度実行し、インストール中に含まれていることを確認するだけです。
備考
ワイルドカード(https://ryanstutorials.net/linuxtutorial/wildcards.php)
は、ファイルやディレクトリのセットを定義するパターンを作成するための構成要素のセットです。覚えているように、コマンドラインでファイルやディレクトリを参照するときはいつでも、実際には文字列のパスを参照しています。パスを参照するときは常に、そのパスの中でワイルドカードを使用して、ファイルやディレクトリのセットに変換することもできます。
Node-REDでDetectorノードを設定する。
ここでユーザーは、Node-REDでDetector
ノードを設定します。このノードは、Detectorが
トリガーされたときにNodeRED メッセージの
起点となります。
Node-RED内に新しいフローを作成します。フローはWindows Automation - Workflow Exampleと
名付けます。
次に、検出器
ノードをワークスペースにドラッグします。
検出器
ノードをダブルクリックして、そのプロパティを設定します。ドロップダウン・フィールドに表示される「Detector
」を選択します。さらに、このノードに「Filepath Detector
」などの名前を付けることもできます。フローを整理するために、そうすることをお勧めします。
Node-REDにおけるメッセージ操作
FileWatcher Detector が
起動すると、NodeRED メッセージに
filepath
(作成されたファイルの名前)などの情報が渡されます。
このデータを取得し、ワークフロー起動時の引数として
ロボットに渡すことが望まれます。引数は
msg.payload
オブジェクトを通してロボットに渡すことを忘れないでください。 OpenRPA ワークフローは他の引数を
必要としないので、FileWatcher Detector
ノードを直接ロボット
ノードにプラグインすることが可能です。
OpenRPAのワークフローを呼び出す
ここに、OpenRPAワークフローに変数を渡して実行するロジックがあり、Detectorの
ポジティブシグナルによって起動されます。
ワークスペースにロボット
ノードをドラッグします。このノードによって、Windows 自動化
ワークフローを呼び出すことができます。
もう一度言いますが、ノード名をInvoke Windows Automation Workflowと
適切に命名することをお勧めします。
ワークフローを実行するロボット (または エージェント
)と、実行するワークフロー
の名前(この例ではWindows Automation
)をダブルクリックして指定します。Local Queue
の項目は空白のままでも構いません。
ここで、ユーザーは画面左上の赤い「Deploy」ボタンをクリックして、作成したフローをデプロイする必要があります。
その後、OpenRPA ワークフロー内でCreate Argument
をクリックして新しい引数を定義します。デバッグ
ノードで見たように、渡されるパラメータはfilepath
と呼ばれているので、引数も
全く同じにする必要があります。引数は
入力なので、そのDirectionを
Inに
設定します。
備考
Node-RED の使用を完全に避けたい場合は、先に定義した検出器を含む検出器アクティビティと共に、トライブロックによる無限ループアクティビティ(条件: true=true) を使用することをお勧めします。ユーザーは、Skypeコンタクトに送信されるファイルの固定ファイルパスを
割り当てるために、アクティビティ「Assign」を使用することもできます。ループを使用することで、反復が終了するたびに、ロボットは常に最初に戻り、Detector
がもう一度起動するのを待ち、何か異常が発生した場合には、トライブロックが ワークフローの実行を保証します。