フローチャート テンプレート:判断・担当・例外を図にする

フローチャート テンプレートは、範囲を限定した作業を、名前付きの処理、答えを出せる判断、明確な結果として表します。実行可能なノードを接続する前に、分岐のラベルと担当する役割を記入します。以下の記入例は CSV インポート前の振り分けを図にしたものです。解析プロファイルを特定し、構造が不整合なファイルを隔離するか、出力先のレコードを書き込まずにマッピングのマニフェストを準備します。

執筆:Ai Flowi · 公開日

処理の範囲と出力を選ぶ

この図は、架空の CSV ファイルの固定したコピーから始まり、準備済みのマッピングのマニフェスト、隔離レポート、未解決のプロファイルに関するメモのいずれかで終わります。レコードのインポートは別の処理です。したがってマニフェストが示すのは、マッピングの案を確認できる状態であり、行が挿入されたことではありません。

先に示した依頼受付の図は修正と人による確認を扱います。このテンプレートでは、ファイルの解釈を、構造の承認と出力先へのマッピングから分けて扱います。

描く前に、判断を観察可能な答えのある問いとして書きます。「ファイルに問題はなさそう」では、どの確認によって経路を選んだか分かりません。「解析したすべてのレコードの列数は、宣言された列数と一致するか」なら分かります。ファイル参照と解析プロファイルを一緒に固定します。途中で区切り文字を変えると、同じバイト列でも解釈が変わり、それまでの列数確認が無効になります。

編集可能なフローチャートをコピーする

プロファイルと隔離の結果を明示した CSV の振り分けファイルを固定し、解析プロファイルを特定します。プロファイルが未解決なら、解析担当者がプロファイルを確定するか、保留の結果を記録します。確定したプロファイルで行の列数を確認します。不整合なファイルは隔離し、整合するファイルは列のマッピングとマニフェストの準備に進みます。 ファイルのコピーを固定解析プロファイルを特定プロファイルが 1 つ確定?解析担当者が解釈を確定解析した行の列数を確認列数は整合している?隔離レポート列のマッピングを記録マニフェストの準備完了保留:未解決の解析プロファイルいいえはいいいえはい解決済み未解決
小さな画面では、図の領域にフォーカスしてその中をスクロールできます。以下のソースでは、解析担当者の処理と判断を分けています。

この Mermaid ソースを、Mermaid に対応した既存のエディターにコピーします。長方形は処理、ひし形は問い、角の丸い終点は成果物の名前を表します。これらのラベルは作成した業務処理を説明するもので、AI Flowi Workflow に組み込まれた CSV インポート制御を示すものではありません。

flowchart TD
    A([Frozen file copy]) --> B[Identify parsing profile]
    B --> C{Exactly one profile established?}
    C -- Yes --> D[Inspect parsed record widths]
    C -- No --> F[Profile analyst resolves interpretation]
    F --> G{Explicit profile established?}
    G -- Yes --> D
    G -- No --> H([Held: unresolved profile note])
    D --> E{All record widths consistent?}
    E -- No --> Q([Quarantine report])
    E -- Yes --> M[Record explicit column mapping]
    M --> P([Mapping manifest prepared])

解析担当者の経路には範囲を設けます。今回の振り分けでプロファイルを確定できなければ、不確実な点を記録して止めます。あるパーサーが受け付けるまで推測を繰り返さないでください。隔離では、固定した入力と構造の不一致の位置を保持します。レコードの削除や原本の破棄を命じるものではありません。

判断と担当の表を記入する

架空のファイル振り分けの入力と出力
処理担当する役割判断の根拠出力
入力を固定インポート操作者ファイル参照と変更しない作業用コピー以後のすべての確認で特定できる入力
プロファイルを特定インポート操作者宣言された文字エンコーディング、区切り文字、引用符、ヘッダーの方針確定した 1 つのプロファイル、または解析担当者への割り当て
曖昧さを解消解析担当者出力元のエクスポート仕様と解釈の候補明示的なプロファイル、または未解決のプロファイルに関するメモ
構造を確認インポート操作者各解析済みレコードと想定列数の比較整合する結果、または不一致を明示した隔離レポート
列をマッピングマッピング管理担当者確定したプロファイル、ヘッダーの位置、出力先フィールドの意味各原本の列と、出力先フィールドの案を対応付けるマニフェスト

列数が同じでも意味が同じとは限らないため、列のマッピングには別の成果物が必要です。reference、message、version の順に並ぶ 3 列のファイルに、reference、version、message の順で作成したマニフェストを流用することはできません。ヘッダーのラベルだけでなく原本の列の位置も保持します。そうしないと、ラベルが重複した場合に名前だけのマッピングが曖昧になります。

行き先のない分岐と担当の欠落を修正する

BEFORE
Identify profile -> Inspect widths -> Map columns [role missing] -> End
Identify profile -> Ambiguous -> [no destination]

AFTER
Ambiguous profile -> Profile analyst -> Explicit profile or held note
Established profile -> Inspect every record -> Quarantine or column mapping
Consistent structure -> Mapping maintainer -> Prepared manifest

下書きの曖昧さの分岐は、解釈の候補を保持せずに終わっています。解析担当者と保留の結果を明示して修正します。一般的な終了の箱もマニフェストという成果物に置き換え、その作成をマッピング管理担当者に割り当てます。これにより、解析は成功したもののマッピングが未記録の場合に、何の作業が残っているかを読者が把握できます。

架空のファイルを修正後の図に沿って確認します。宣言されたプロファイルは、UTF-8 テキスト、カンマ区切り、二重引用符で囲むフィールド、ヘッダー行を使います。あるメッセージには引用符の内側にカンマがあります。生の行でカンマを数えると、列が 1 つ多いと誤判断します。指定した引用符の規則でレコードを確認すれば、意図した 3 フィールドが保持されます。別のレコードは実際に 2 フィールドしかないため、バッチ全体がマッピング前に隔離レポートへ進みます。この図には、出力先への部分的な書き込みは含まれません。

修正したファイルが届いたら、新しい入力として固定し、確認を繰り返します。以前の隔離の根拠を上書きしたり、その判定を新しいバイト列に適用したりしないでください。差し替えたファイルの構造が整合していれば、マッピング管理担当者が原本の位置と出力先の意味をマニフェストに記録します。その成果物は、別途設計したインポート処理に渡せます。

インポートを実行せずに分岐の網羅を確認する

  1. 宣言されたプロファイルと整合したレコードから、準備済みマニフェストまで経路をたどります。終点が、完了したインポートではなく成果物の名前になっていることを確認します。
  2. 欠けている、または矛盾するプロファイル情報から解析担当者まで経路をたどります。確定と未解決の両方の答えを確認します。
  3. 解析した 1 レコードの不整合から隔離まで経路をたどります。レポートが、そのレコードの位置と想定列数を保持することを確認します。
  4. 引用符で囲まれた区切り文字と改行を例に使います。レコードと物理的な行が一致するとは限りません。
  5. マッピング時に、ヘッダーの重複と列順の変更を確認します。構造が整合するという理由だけで、古いマッピングを選んではいけません。

これらは机上で行う網羅性の確認です。データフロー図では、どのファイルのフィールドが保存先に入るかを別途追跡できます。この図が記録するのは、各解釈の判断からどの処理結果に進むかです。

AI Flowi Workflow で 1 つの振り分け判断を表す

状態:文書化済み。Condition はカタログに記載されていますが、Ai Flowi による本番環境でのテストは未実施です。

Condition リファレンスにインターフェースが記載されています。この演習が表すのは、外部の確認で結果を確定した後の、構造の結果に基づく分岐だけです。

設定例であり、実施したテストの記録ではありません

AI Flowi Workflow のアカウントと、架空の JSON の検査結果を用意します。Condition のdata_inputにその検査結果を、key_nameにwidth_state、operatorにequalsを指定し、compare_valueにconsistentを設定します。整合するサンプルと不整合なサンプルを 1 つずつ使い、両方の振り分け出力を確認します。この独立した振り分けの確認には、提供元のアカウントや API キーは不要です。後で提供元を利用する場合は、自分の認証情報と別途の支払いが必要です。

期待する出力は、選ばれた分岐上の検査結果です。ここで Condition は CSV を解析したり隔離レポートを生成したりしません。処理を接続する前に、width_stateが欠けた場合を、別の未解決の入力として確認します。この比較によって検査元の妥当性が確認されるとは考えないでください。

ワークフロー図テンプレートの制限は何ですか?

このテンプレートは、インポート前のファイル単位の振り分けに使います。部分的な受け入れ、並列解析、出力先のトランザクション、正式な BPMN の意味規則は定義していません。適切なレコードを受け入れ、不適切なものだけを分離する必要がある場合は、ファイル全体を隔離する方針を変更する前に、レコードの識別情報、バッチの合計、拒否レコードのレポートをどう突き合わせるかを定めます。