Python スクリプト
Python スクリプトのアクションステップでは、プロセスマイニングデータにアクセスできるカスタムPythonコードを実行できます。これにより、データ変換、カスタム統合、専門的な処理に最大限の柔軟性が提供されます。
概要
Python スクリプトアクションステップを設定すると、システムは以下を行います:
- 選択したすべての分析からデータを収集
- このデータをPythonコードで利用可能にする
- 安全な環境でスクリプトを実行
- データの処理、変換、任意の場所への送信を可能にする
これは最も強力で柔軟なアクションステップで、組み込みオプション以上のカスタム機能が必要な上級ユーザーに適しています。
Python スクリプトを使用するタイミング
次のような場合に Python スクリプトを使用してください:
- カスタムAPIやWebhookへデータを送信する
- 他のシステムへエクスポートする前にデータを変換する
- データベースやデータウェアハウスと連携する
- カスタムファイル形式やレポートを作成する
- mindzieStudio標準機能にない計算を行う
- サードパーティサービス(Slack、Teams、Salesforceなど)と統合する
前提条件
Python スクリプトを使用する前に:
- 基本的なPythonプログラミング知識が必要
- アクションウィザードのデータステップで分析データを選択している
- 分析から利用可能なデータ構造を理解している
設定方法
アクションにPython スクリプトを追加するには、アクションステップセクションの**+**ボタンをクリックし、Python Scriptを選択します。
スクリプトエディタ
Python スクリプトダイアログにはコードエディタがあり、そこでPythonコードを記述します。スクリプトは以下にアクセスできます:
- 選択した分析のすべてのデータ
- 標準Pythonライブラリ
- 一般的なデータ処理ライブラリ(pandas、requestsなど)
利用可能なデータ
スクリプトは選択された分析データを構造化された形式で受け取ります。アクセスできるのは:
- 生のイベントログデータ
- 計算された指標や統計
- 分析結果やテーブル
- 可視化データ
サンプルスクリプト
Webhookへデータ送信
import requests
import json
# 分析データにアクセス
data = get_analysis_data()
# Webhookへ送信
response = requests.post(
'https://your-webhook-url.com/endpoint',
json=data,
headers={'Content-Type': 'application/json'}
)
if response.status_code == 200:
print("Data sent successfully")
else:
print(f"Error: {response.status_code}")
データベースにエクスポート
import pandas as pd
from sqlalchemy import create_engine
# 分析データをDataFrameとして取得
df = get_analysis_dataframe()
# データベースに接続
engine = create_engine('postgresql://user:pass@host:5432/database')
# テーブルにデータを書き込み
df.to_sql('process_metrics', engine, if_exists='replace', index=False)
print(f"Exported {len(df)} rows to database")
Slack通知の送信
import requests
# 主要指標を取得
metrics = get_analysis_data()
avg_duration = metrics['average_duration']
case_count = metrics['case_count']
# Slackへ送信
slack_message = {
"text": f"Daily Process Summary: {case_count} cases processed, avg duration: {avg_duration}"
}
requests.post(
'https://hooks.slack.com/services/YOUR/WEBHOOK/URL',
json=slack_message
)
カスタムCSVエクスポート
import pandas as pd
from datetime import datetime
# データ取得
df = get_analysis_dataframe()
# データ変換
df['export_date'] = datetime.now().strftime('%Y-%m-%d')
df['source'] = 'mindzieStudio'
# カスタム場所に保存
filename = f"process_export_{datetime.now().strftime('%Y%m%d')}.csv"
df.to_csv(f'/exports/{filename}', index=False)
print(f"Exported to {filename}")
ベストプラクティス
まず手動でスクリプトをテスト:スケジュール実行する前にPythonコードを開発・検証してください。Pythonノートブックでロジックを確認するのがおすすめです。
エラーを適切に処理:try/exceptブロックを使ってエラーを捕捉しログを残してください。失敗したスクリプトは有益なエラーメッセージを返すべきです。
重要なステップをログに記録:print文で実行進捗を追跡しましょう。これらはアクションの履歴に表示されます。
資格情報を安全に管理:パスワードやAPIキーをスクリプトに直接書き込まないでください。環境変数や安全な保管方法を使いましょう。
実行時間を考慮:アクションにはタイムアウト制限があります。特に大規模データ処理は効率化してください。
処理前にデータを検証:期待するデータが存在するか確認し、欠損データは適切に処理してください。
よくあるパターン
エラー処理
try:
data = get_analysis_data()
process_data(data)
print("Success")
except Exception as e:
print(f"Error: {str(e)}")
# 必要に応じてアラート送信
send_error_notification(str(e))
データ検証
data = get_analysis_data()
if not data or len(data) == 0:
print("No data available - skipping export")
exit()
if 'required_column' not in data.columns:
print("Missing required column")
exit()
# 続行
条件付き処理
data = get_analysis_data()
# 閾値超過時のみアラート送信
if data['average_duration'] > 24: # 単位:時間
send_alert("Process duration exceeds 24 hours!")
else:
print("Duration within acceptable range")
トラブルシューティング
スクリプトが実行されない
- アクション履歴のエラーメッセージを確認
- アクションが有効かつスケジュールされているか確認
- Python構文が正しいか確認
データが利用できない
- データステップで分析が選択されているか確認
- 分析が実行されてデータが存在するか確認
- スクリプト内のデータアクセス方法をチェック
スクリプトタイムアウト
- コードを最適化
- データを小分割で処理
- 重い処理は外部システムへ移行を検討
外部サービスでのエラー
- APIエンドポイントと認証情報を確認
- 実行環境からのネットワーク接続を確認
- 一時的な失敗に備えリトライロジックを追加
インポートエラー
- 必須ライブラリが利用可能か確認
- 追加Pythonパッケージが必要な場合はサポートに連絡
制限事項
- スクリプトはサンドボックス環境で実行
- 一部のシステムレベル操作は制限
- 外部ネットワークアクセスはセキュリティポリシーで制限される場合あり
- 実行時間は無制限を防ぐため制限あり
関連ドキュメント
サポート
Python スクリプトに関する問題が発生した場合:
- メール:support@mindzie.com
- スクリプトコード(機密情報は除く)を添付
- アクション履歴のエラーメッセージを明記
- 期待する動作と実際の動作を説明してください