Flow DesignerのVersion History的なものを見たい
業務の中の会話で、上記見出しのようなやりとりがあり、そういえば通常のレコードと違ってFlow Designerは独自の画面だし、そういう変更履歴を見る方法無いよなぁと思い調べてみた結果の共有です。
このへんの3点リーダーメニューにあるかなーと思ったけどないんですよネ
結論 履歴確認(とRevert)はUpdate Versionテーブルを使おう
コミュニティを漁ってたどり着きました。1
Flow Designerで作成したフローの履歴確認には、Update Version[sys_update_version]テーブルを確認しましょう。
まず前提知識として、Flow Designerで作成したフローは[sys_hub_flow]テーブル(と厳密にはその関連テーブル)にデータが格納されます。
それを活用して確認します。
手順
1)sys_hub_flowテーブルをリストビューで開きます。
2)履歴を確認したいフローのレコードのsysidをコピーします。
※この時、NameフィールドのリンクをクリックするとFlow Designerにリダイレクトされるので、リストビュー上で対象を右クリックして行うのが良いです。
3)sys_update_versionテーブルをリストビューで開き、以下の法則でNameフィールドで検索し、履歴レコードを特定します。
sys_hub_flow_[手順2)でコピーしたsysid]
表示されたレコードのStateフィールドに黄緑の●印がついているCurrentが現在の最新版、Previousとなっているレコードが以前のバージョンです。
FlowをSaveするたびにレコードが作られるみたいです。
この記事のおまけの章で少し解説しますが、このレコードだけではどういう修正をしたのかは人間の目では一目でわかりません。あくまでこの手順は、
・以前のバージョンに戻したい
・かつ以前のバージョンの修正時間帯がわかっている
・とにかくロールバックしたい
・戻したいとかはないけど、意図しない更新が入ったかどうかの履歴を確認したい
のようなシチュエーションで使えるものだと思ってください。
5)以前のバージョンに戻したい場合、対象のStateがPreviousのレコードを開き、Related Linksから「Revert to this version」を選択すればOKです。
Related Linksの「Compare to Current」で差分も見れる履歴確認できるのでは?
と思った方もいるかもしれませんが、見てもマジで謎です
(Descriptionくらいの変更は分かりますが、フローでそこの差分が視覚的にわかってもあんまメリット無いですよね)
といった感じで、本編はここまでです。
もしもの時に役立つと幸いです。
もっと他にこういうやり方で見たほうが良いよ!のようなやり方があれば、ぜひコメントなどで教えてください!
おまけ 差分をどうしても機械的に見たい
これ以降のおまけ欄は、今回筆者がこのテーマを調べる中で修正履歴差分をどうしても出したいときはどうすればよいか、力技(ちからわざ)でやってみた記録を記載します。
業務に取り入れるにはかなり面倒なので、
手段を目的化して楽しんでしまった例としてこういうのが好きな方だけ見守ってください☺
先に言っておきますが、ServiceNowで完結しませんし、
フローの変更箇所が多い比較だと現実的でないです。
(そもそもこれをやること自体が現実的ではないのですが)
これまでFlow Designerをレビューするときは
・GUIで、リリース前のインスタンスの対象フローと、開発インスタンスの修正したフローを並べて見比べる
・実際に開発インスタンスのものを動かして業務ロジック的に確認する
という感じが一般的かと思います。
(ローコード開発ならそれでいいという話も)
まぁでもせっかく今回履歴が追えたんだし、
フローに限らずですが、スクリプトや設定項目でも、レビューの観点として
・修正箇所が意図した修正をされているか
と
・修正箇所以外が(意図せず)変更されていないか
という確認はしたいし、ということで、今回探ってみました。
1)まずは先ほどのsys_update_versionテーブルの比較したい対象レコードを開き、PayloadのXMLをコピーもしくはコピーしたものをテキスト保存します。比較したいので、対象の2レコード分実施してください。
↑のオレンジのボタンを押すと別ウインドウでXML形式で開きます
このファイルの意味はここでは理解しなくていいです。とにかく比較のために2つペイロードXMLを集めます。
2)収集した2つのXMLを、WinMergeなどの比較ツールで比較し、差分のある個所をを特定します。
今回は例として分かりやすく、フローのトリガー時間を変更しました。(1時間ごと→1時間10分毎ごとに起動に変更)その場合で差分が出るはずです。前後にsys_mod_countやsys_updated_onの変更も出てしまうと思いますが。これは更新時間や更新回数のカウントなので、修正内容ではないので注目しないようにしてください。
3) 2)で特定した差分のタグの中の値をコピペします。長いけど頑張ってください。
この値がそれこそ正真正銘のFlow Designerのデータで我々が設定した値なのです
4)3)でコピーした値を、 「Base64デコード→gzip解凍→jsonデータ出力」 します。
何を言っているんだという方がもいると思いますが、正常です。私も良くわからなくなりそうでした。(差分出すだけなので)
pythonを駆使してもできますが、生成AI(python実行可能な環境)で以下のプロンプトでうまいことできました。(筆者環境:ChatGPT GPT-4o)
以下の文字列をBase64デコードして、gzip解凍してJSONデータを出力してください。
--差分のあったタグの値--
こういう処理をしてくれます......(詳細割愛)
出力例(実際はもっと下に長いです)
差分確認なので、もう片方も同じことしてください(手抜き記載ご容赦ください)
5) 4)まで終わったJSONデータ2つを再度WinMergeなどの比較ツールなどで比較します。
お!ちゃんと10分だけ時間が変更されているね!
フローのデータ構造がBase64なので、やるとしたらこうなるのかなぁという感じでした。
この流れを一連で作りこめたりすればいいんだろうけど、
おそらく実務のメリットがこの作りこみのメリットを上回らない。
以上です!! もうやらない
(も、もっといい方法ある方いたら教えてください)
まとめ Flow Designerのフローをレビューするときの心構え
・GUIで、リリース前のインスタンスの対象フローと、開発インスタンスの修正したフローを並べて見比べる。
・実際に開発インスタンスのものを動かして業務ロジック的に確認する。
・修正箇所や内容は事前にコミュニケーションとって確認しておく。
・開発インスタンスではこまめにSaveしておく(Update Versionテーブルに残るので万一の切戻しがしやすくなる)
・無理に機械的に差分を見ようとしない☺☺☺