Transfer Execution Process Map
Purpose
この文書は、@rawsql-ts/transfer の転送プロセスを整理する。
Concept Spec は概念の意味、責務、非責務、不変条件を定義する。 この文書は、それらの Concept を使って Transfer Execution がどの順序で処理を進めるかを示す process map である。
この文書は Concept Spec 本文を再定義しない。 処理の詳細な SQL、DDL、API、トランザクション実装は定義しない。
Process Map Rule Reference
This document follows the shared Process Map Rules.
Diagram Legend
flowchart LR
Record[("Record / storage")]
State(["State machine / process"])
CurrentState{{Current state index}}
ExternalTable[/External physical table/]
Transfer Execution Main
flowchart TD
Start(["start"])
CreateRun(["Create Transfer Run"])
PrepareWorkItem(["Prepare Work Item"])
ApplyDecision(["Apply Transfer Target Decision"])
SkipTransfer{{Skip Transfer?}}
TransferModelBranch{{Transfer Model Branch}}
RedTransfer(["Red Transfer - insert"])
BlackTransferInsert(["Black Transfer - insert"])
PhysicalDeleteTransfer(["Physical Delete Transfer - execute"])
BlackTransferUpsert(["Black Transfer - upsert"])
RecordResult(["Record Processing Result"])
Done(["done"])
Start --> CreateRun
CreateRun --> PrepareWorkItem
PrepareWorkItem --> ApplyDecision
ApplyDecision --> SkipTransfer
SkipTransfer -->|重複無視または no op| RecordResult
SkipTransfer -->|転送が必要| TransferModelBranch
TransferModelBranch -->|immutable model| RedTransfer
RedTransfer --> BlackTransferInsert
BlackTransferInsert --> RecordResult
TransferModelBranch -->|mutable model| PhysicalDeleteTransfer
PhysicalDeleteTransfer --> BlackTransferUpsert
BlackTransferUpsert --> RecordResult
RecordResult --> Done
Create Transfer Run detail
flowchart LR
TransferSetting["Transfer Setting"]
CreateTransferRun(["Create Transfer Run"])
TransferRun[("Transfer Run")]
TransferSetting -->|対象の転送設定| CreateTransferRun
CreateTransferRun -->|作成する| TransferRun
Prepare Work Item detail
flowchart LR
DirtyKey[("Dirty Key")]
DirtyKeyProcessing[("Dirty Key Processing")]
TransferSetting["Transfer Setting"]
DestinationLink["Destination Link"]
Destination["Destination"]
ActiveBlack{{Active Black}}
WorkItem[("Work Item")]
PrepareWorkItem(["Prepare Work Item"])
DirtyKey -->|source key 情報| PrepareWorkItem
DirtyKeyProcessing -. 重複判定用 .-> PrepareWorkItem
TransferSetting -->|転送元文脈と現在値の有無| PrepareWorkItem
DestinationLink -->|宛先別文脈| PrepareWorkItem
Destination -->|転送モデル| PrepareWorkItem
ActiveBlack -->|存在有無| PrepareWorkItem
PrepareWorkItem -->|判断材料を付けて作成| WorkItem
Apply Transfer Target Decision detail
flowchart LR
WorkItem[("Work Item")]
DestinationLink["Destination Link"]
Destination["Destination"]
ActiveBlack{{Active Black}}
TransferTargetDecision(["Apply Transfer Target Decision"])
DecisionResult[("Transfer Target Decision Result")]
WorkItem -->|判定対象| TransferTargetDecision
DestinationLink -->|比較対象外列と宛先別文脈| TransferTargetDecision
Destination -->|転送モデル| TransferTargetDecision
ActiveBlack -->|存在有無| TransferTargetDecision
TransferTargetDecision -->|転送要否と転送表現候補| DecisionResult
Red Transfer - insert detail
flowchart LR
WorkItem[("Work Item")]
RedTransfer(["Red Transfer - insert"])
DestinationTable[/destination table/]
Lineage[("Lineage")]
WorkItem --> RedTransfer
RedTransfer -->|判定結果が赤伝転送候補の場合に赤伝行を書き込む| DestinationTable
RedTransfer -->|赤伝行を書き込んだ場合に記録する| Lineage
Black Transfer - insert detail
flowchart LR
WorkItem[("Work Item")]
BlackTransfer(["Black Transfer - insert"])
DestinationTable[/destination table/]
Lineage[("Lineage")]
WorkItem --> BlackTransfer
BlackTransfer -->|判定結果が追加転送候補の場合に黒伝行を書き込む| DestinationTable
BlackTransfer -->|黒伝行を書き込んだ場合に記録する| Lineage
Physical Delete Transfer - execute detail
flowchart LR
WorkItem[("Work Item")]
PhysicalDeleteTransfer(["Physical Delete Transfer - execute"])
DestinationTable[/destination table/]
WorkItem --> PhysicalDeleteTransfer
PhysicalDeleteTransfer -->|判定結果が物理削除転送候補の場合に削除する| DestinationTable
Black Transfer - upsert detail
flowchart LR
WorkItem[("Work Item")]
BlackTransfer(["Black Transfer - upsert"])
DestinationTable[/destination table/]
WorkItem --> BlackTransfer
BlackTransfer -->|判定結果が更新転送候補の場合に追加または更新する| DestinationTable
Record Processing Result detail
flowchart LR
TransferRun[("Transfer Run")]
WorkItem[("Work Item")]
RecordProcessingResult(["Record Processing Result"])
DirtyKeyProcessing[("Dirty Key Processing")]
TransferRun -->|実行文脈| RecordProcessingResult
WorkItem -->|処理した Dirty Key| RecordProcessingResult
RecordProcessingResult -->|処理結果を記録する| DirtyKeyProcessing
Active Black Example
Active Black は、Red Transfer する場合にどの黒伝を符号反転対象にするかを示す。
text
black 1: +100この場合、1 が active。
text
black 1: +100
red 2: -100この場合、active はない。
text
black 1: +100
red 2: -100
black 3: +150この場合、3 が active。
この例はプロセス理解のための説明であり、Active Black の Concept Spec 本文ではない。
Generated Review Metadata
This section is generated for human review. Edit the source Process Map and DFD relationship metadata instead.
- Business ID:
transfer-execution - Parent Business: Transfer Execution
- Parent DFD: Dirty Key Intake and Transfer Execution
- Reason: Transfer Execution 業務の論理処理順序を定義するProcess Map。