ディスカッション

答えを見つけ、質問し、Alteryx の専門知識を共有してください。
解決済み

jobIDもしくはworkflowIDとDCMのConnectionIDを関連付けする方法

Yosuke-Usuki
メテオロイド

サーバー管理者として、ユーザーが実行したワークフロー情報を抽出する仕組みを作成しております。
現状、ワークフローからServerAPIを実行しジョブ実行者、ワークフロー名、ワークフローの実行ログまでは関連付けできているのですがDCMの情報(Connectionid)との関連付けができていない状態です。

生成AIの回答ではMongoDB内のAlteryxServiceデータベースからワークフローのバイナリデータを取得、デコードしてyxmdを再構築してConnectionidを特定する方法が提示されたのですが

そもそもワークフローのバイナリがどこに存在するのか分かっておりません。

AS_App_Chunks、AS_Applicationsを確認しましたがchunkフィールドを見る限りすべてByte数となっておりました。

 

上記ワークフローのバイナリデータから特定する方法に限らず

jobIDもしくはworkflowIDとConnectionidを関連付けする方法があればアドバイスをいただけますと幸いです。

 

バージョンは2024.2となります。

8件の返信8
gawa
16 - Nebula
16 - Nebula

@Yosuke-Usuki ServerからWFを取得するにはMongo DBから直接抜き出すことも可能ですが、Server API V3を使うと楽です。Mongo DBのスキーマはバージョンによって変更が発生するため、Server APIでできることは、Server APIを利用することで改修の手間が省けます。

image.png

 

ServerのWFはyxzp形式になっており、このままですと中身のXMLが直接読み込めないので、一度、解凍する必要があります。Alteryx WF内で完結させるのであれば、以下のステップを踏むことになります:

① yxzpファイルの拡張子を .yxzp => .zip に書き換える

② ①のzipファイルを、RunCommandツールを利用してPowershellの ”Expand-Archive” で解凍

③ ②で解凍したyx**ファイル群をXMLとして読み込む

④ ③をパースしていき、DCM関連の情報を取り出す

 

上記ステップ①~③までのWFとしては、下図のようになります。サンプルWFを添付しますので、叩き台にご利用ください。

image.png

Yosuke-Usuki
メテオロイド

ありがとうございます。
サンプル参考にさせていただきます。

もう1点お伺いさせてください。
現状、サーバーの設定の直接ダウンロードが無効になっているのですが
こちら有効にしないとAPIでのダウンロードもできないでしょうか?初歩的な質問で恐縮です。
(全体ではなく管理者のみダウンロード可とするような設定があればよいのですが)

gawa
16 - Nebula
16 - Nebula

@Yosuke-Usuki 

先に紹介したV3 APIは、「直接ダウンロードが無効」になっていると403エラーとなります。

「直接ダウンロードが無効」の設定に関わらずWFをダウンロードするには、以下のAdmin API V1が使えます。こちらはCuratorしか使えませんが、ご要望から察するに貴社のCuratorの方がDCMを管理したい意図かと思いますので、ご利用いただけるものと思慮しております。

image.png

 

 

Mongo DBからWFを取得できるか試行錯誤してみたのですが、期待したコレクションにWFのBynary Dataが存在しておらず、予想よりも難易度は高そうでした。頑張ればできるのかもしれませんが、上記Admin API V1を使うのが素直なやり方のようです。

Yosuke-Usuki
メテオロイド

@gawa 

ありがとうございます。

API V1の方で試してたところ直接ダウンロード無効の状態でGetできました。

 

共有いただいたサンプルを参考にして

API V1でGetしたワークフローのバイナリファイルをxml生データとして抽出するところまで作成できました。

gawa
16 - Nebula
16 - Nebula

@Yosuke-Usuki 

WFのXMLからWF内のツール情報を取り出すには、下記のWorkflow XML Parser toolが便利です。標準ツールではないので、yxiでインストールが必要となります。

https://marketplace.alteryx.com/en-US/apps/444941/workflow-xml-parser

 

Yosuke-Usuki
メテオロイド

@gawa 

情報提供ありがとうございます。

 

少し戻るのですが、検証では以下まで実行できており①、②の部分をサーバーAPIツールに置き換えて

APIの出力レコード内の[DownloadData]のフィールドを利用してXML変換したいのですが

最下部の図のようにPK...と一部しか出力させることができません。。。

 

①swaggerで以下APIを実行

②swaggerの[Downloadfile]からダウンロード

③ワークフローで②をXML変換

 

やりたいこととしては

実ファイルとしてダウンロードせずにAPIからの出力レコードを使って処理できればと思っております。

 

 

 

image.png

 

スクリーンショット 2025-05-16 135954.png

 

スクリーンショット 2025-05-16 135135.png

gawa
16 - Nebula
16 - Nebula

@Yosuke-Usuki 

DownloadDataフィールドではなく、BinaryDataフィールドを使ってください。この中にYXZPファイルがバイナリ形式で保管されています。

先に共有したWFの上流にコントロールコンテナを追加し、BinaryDataをInputフォルダにYXZPとして出力(Blob出力ツールを利用)するロジックを追加すると、WF上で全ての処理を完結できます。

image.png

Yosuke-Usuki
メテオロイド

ありがとうございます。
BinaryDataフィールドから出力できることを確認できました。

トップのソリューション投稿者