process-mining
2021.10
true
重要 :
このコンテンツの一部は機械翻訳によって処理されており、完全な翻訳を保証するものではありません。
UiPath logo, featuring letters U and I in white
Process Mining
Automation CloudAutomation Cloud Public SectorAutomation SuiteStandalone
Last updated 2024年9月2日

例: Python スクリプトを作成する

はじめに

この例では、 UiPath Process Mining プラットフォームに外部の Python スクリプトをインターフェイスし、外部のデータ処理を実装する方法について説明します。

メモ: このセクションの例は、Python バージョン 3 に基づいています。

概要

Python スクリプトが作成されます。次のスクリプトがあります。

  • .CSV ファイルを入力として取ります。コマンド ラインで必要な唯一の引数として指定します。
  • [金額 ] の値に 2 つを掛けた値です。
  • その標準出力チャネルに結果を書き込みます。

手順

  1. サーバーの設定を設定する
  2. ワークスペースを設定する
  3. スクリプト のデータ ソースを設定する
  4. データ ソースを設定する
  5. スクリプトを記述する。

サーバー設定を設定する

汎用スクリプトのデータソースには、実行するすべての外部プロセスのハンドラーが必要です。

汎用スクリプト ハンドラーを追加するには、以下の手順に従います。

手順

操作

1

[Superadmin Settings] タブに移動します。

2

1 つのキー「py」を持つオブジェクトを値として持つフィールド GenericScriptHandlers を追加します。このオブジェクトは、Python の実行可能ファイルへのパスの値として持ちます。 例えば:

"GenericScriptHandlers": { "py": "P:/Python/bin/python.exe" }

3

[保存] をクリックします。

ワークスペースを設定する

まず、データ処理をまだ行っていない最小限のスクリプトを作成します。 このスクリプトは、Python の設定が正しく機能していることを確認し、スクリプトが UiPath Process Mining プラットフォームから呼び出されていることを確認するために使用されます。

このスクリプトの例では、スクリプトの実行ログに表示される出力を生成する方法と、スクリプトの終了コードが UiPath Process Mining プラットフォームの動作にどのように影響するかを示します。

手順

操作

1

お気に入りのエディターで、空白のテキスト ファイルを開始します。

2

次のテキストを入力します。

#!/usr/bin/python import sys def debug(message): sys.stderr.write(message) debug("Hello world!") exit(1)#!/usr/bin/python import sys def debug(message): sys.stderr.write(message) debug("Hello world!") exit(1)
メモ: debug(“Hello world!”) コマンドは、標準のエラー・チャネルを使用して、メッセージを出力し、デバッグする出力を実行する方法の例です。

3

テキスト ファイルを script.pyとして保存します。

4

script.py ファイルをワークスペースにアップロードします。

このスクリプトは「Hello world!」というメッセージのみを出力します。 スクリプト インターフェイスは、スクリプトから UiPath Process Mining プラットフォームへのデータ通信に 標準の出力 を使用します。ステータス メッセージをスクリプトに含める場合は、代わりに 標準エラー に書き込む必要があります。

メモ: スクリプト例はステータス コード 1 で終了します。 0 以外のステータス コードは、 UiPath Process Mining プラットフォームによってエラー条件として解釈されます。

スクリプト データ ソースを設定する

次に、スクリプトを呼び出すデータソーステーブルをアプリ内に設定します。 スクリプトでまだデータが処理されないため、いくつかのダミー データから始めます。 この段階で、スクリプトが期待どおりに実行されることを検証します。つまり、「Hello world! (こんにちは、ワールド)」というメッセージが表示されます。

手順

操作

1

開発環境でアプリを開きます。

2

[ データ ] タブに移動し、新しい接続文字列の表を作成します。

3

New_table の名前を「 PythonExample」に変更します。

4

PythonExample テーブルを右クリックし、[ 詳細> オプション...]を選択します。

5

[ 表のオプション] ダイアログで、[ 表のスコープ ] を [ワークスペース]に設定します。

6

PythonExample テーブルをダブルクリックして [接続文字列テーブルを編集] ウィンドウを開きます。

7

接続文字列として次を入力します。

``'driver={mvscript

8

クエリとして以下を入力 します

``''

  • '&scriptFile=' + urlencode("script.py")
  • '&inputData=' + urlencode("a;b;c"+#10+"1;2;3"+#10+"4;5;6"+#10)``

inputData の例の "#10" は、改行文字を指定します。 すなわち。 UiPath では、以下のダミーの CSV データを定義します。

"a";"b";"c"

"1";"2";"3"

"4";"5";"6

9

[OK] をクリックします。

10

[YES] をクリックします。

テーブルの更新が失敗し、エラー ログに「Hello World!」というメッセージが表示されます。

スクリプト ファイルの場所は、テーブルのスコープによって決定されます。 [ サーバー ] または [ ワークスペース]または [なし] に設定できます。 [なし]に設定する場合、スクリプト ファイルへのパスは絶対です。 [サーバー ] または [ワークスペース]に設定すると、スクリプトの場所は相対パスとして解釈されます。

大事な: 外部の Python スクリプトとのインターフェイスを設定するために残りの手順を正常に完了するには、「Hello World! のサンプル」を入手する必要があります。

データ ソースを設定する

外部スクリプトで処理するデータをエクスポートするには、まず Python スクリプトで必要なフィールドを選択します。 これを行うには、Python スクリプトに必要なすべてのフィールドを含むテーブルを新しく作成します。 この表は後 .CSV 形式でエクスポートされ、Python スクリプトで読み込むことができます。

この例では、 ケース テーブルと イベント テーブルを持つアプリケーションを使用します。 以下の画像でご確認ください。



次の手順を実行します。

手順

操作

1

Create a new Global table, PythonInputData.

2

新しい式属性を追加 PythonInputData_Amount

3

[型 ] を [Lookup]に設定します。

4

[ 入力 テーブル] を [Cases_base] に設定します。

5

式を listtojson(text(double(records.Amount)))に設定します。

6

式レベルを root に設定 します

7

[OK] をクリックします。

8

Case_IDに、別の検索式属性を追加します。

式を listtojson(text(double(records.Case_ID)))に設定します。
注:
検索式属性の形式は、文字列のリストである必要があります。 これは、 csvtable() 関数を使用して、データを .CSV 形式に変換し、(テキスト) レコードのリストが必要になるからです。
listtojson() 関数の入力に Text 型が必要であるため、結果として生成される CSV ファイルのレコードの形式は、選択した属性の種類 (この場合は 金額 の種類が Currency)、現在アクティブな表示形式によって異なります。ここで、通貨の種類は二重に変換され、Python スクリプトで後でレコードを解析しやすくなります。

スクリプトを記述する

テキスト エディターで script.py ファイルを次のコードで更新します。

#!/usr/bin/python
import csv
import sys
def debug(message):
    sys.stderr.write(message)
# Read the CSV header. This is used so that the script will output the fields
# in the same order that they were read in. This step is optional.
column_order = [];
with open(sys.argv[1]) as csv_file:
    reader = csv.reader(csv_file, delimiter=';')
    column_order = next(reader)
# Process the input file
with open(sys.argv[1]) as csv_file:
    reader = csv.DictReader(csv_file, delimiter=';')
    # Construct the output writer.
    writer = csv.DictWriter(
        sys.stdout,
        column_order,
        delimiter=';',
        restval='',
        quoting=csv.QUOTE_ALL
    )
    writer.writeheader()
    for row in reader:
        # Get data from row
        case_id = row['Case_ID']
        amount = int(row['Amount'])
        # Do computation
        amount = amount * 2
        # Write results
        writer.writerow({'Case_ID': case_id, 'Amount': amount})
# Exit indicating success
exit(0)#!/usr/bin/python
import csv
import sys
def debug(message):
    sys.stderr.write(message)
# Read the CSV header. This is used so that the script will output the fields
# in the same order that they were read in. This step is optional.
column_order = [];
with open(sys.argv[1]) as csv_file:
    reader = csv.reader(csv_file, delimiter=';')
    column_order = next(reader)
# Process the input file
with open(sys.argv[1]) as csv_file:
    reader = csv.DictReader(csv_file, delimiter=';')
    # Construct the output writer.
    writer = csv.DictWriter(
        sys.stdout,
        column_order,
        delimiter=';',
        restval='',
        quoting=csv.QUOTE_ALL
    )
    writer.writeheader()
    for row in reader:
        # Get data from row
        case_id = row['Case_ID']
        amount = int(row['Amount'])
        # Do computation
        amount = amount * 2
        # Write results
        writer.writerow({'Case_ID': case_id, 'Amount': amount})
# Exit indicating success
exit(0)

以下の手順を実行します。

手順

操作

1

新しいスクリプトを Workspaceにアップロードし、既存のファイルを上書きしてアプリケーションに戻ります。

2

PythonExample テーブルを右クリックし、[ 編集...] を選択します。

3

Modify the inputData parameter of the query string for the PythonExample table:

+ '&inputData=' + urlencode(csvtable( "Case_ID", jsontolist(PythonInputData.Case_ID), "Amount" , jsontolist(PythonInputData.Amount), ))

以下の画像でご確認ください。

4

[OK] をクリックします。

5

[ はい ] をクリックします (2 回)。

6

[OK] をクリックします。



PythonExample テーブルのデータソースの属性として 、[金額][Case_ID] の 2 つを追加しました。以下の画像でご確認ください。


[金額 ] 属性を検査すると、すべての金額に 2 人を掛けた値が表示されます。以下の画像は、Python スクリプトによって生成される出力の例です。



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

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