Skip to main contentA-REX Core

Диаграммы · 04

Родословная через transform

transform — единственный способ получить партию из партии. Он сжигает входы, эмитирует выходы и фиксирует родителей; BatchTransformed соответствует EPCIS 2.0 TransformationEvent один к одному.

Разделение, объединение и переработка — одна операция

flowchart LR
    subgraph SPLIT["Переформирование партий (разделение) · роль не нужна · тот же товар и единица измерения · количество сохраняется"]
        W1["#1 пшеница 250 т"] --> W2["#2 пшеница 60 т"]
        W1 --> W3["#3 пшеница 40 т"]
    end
    subgraph MERGE["Переформирование партий (объединение)"]
        M1["#4 кофе 10 т"] --> M3["#6 кофе 25 т"]
        M2["#5 кофе 15 т"] --> M3
    end
    subgraph PROC["Переработка · TRANSFORMER_ROLE · меняется товар или количество"]
        P1["#2 пшеница 60 т"] --> P2["#7 мука 45 т"]
    end

Родителей можно запрашивать ончейн

flowchart TB
    F7["parentsOf(7) → [2]"] --> F2["parentsOf(2) → [1]"] --> F1["parentsOf(1) → []"]

Отзыв проходит по parentsOf назад до источника, а по событиям BatchTransformed — вперёд до каждого производного лота. Аудит массового баланса сравнивает количества входов и выходов каждого этапа переработки с сертифицированным соотношением.

Правила, которые обеспечивает эталонная реализация

ПравилоГде
Входы должны существовать, не быть погашенными и принадлежать from (или вызывающему, одобренному from)transform, _update
Переформирование партий (тот же товар, та же единица измерения, Σ входов = Σ выходов) не требует ролипроверка isRebatch
Всё остальное требует TRANSFORMER_ROLEtransform
Каждый выход фиксирует parents = inputIds и issuer = msg.senderхранилище
Хуки видят OP_TRANSFORM для входов и выходовконтекст _update