본문으로 건너뛰기

Report에서 PXFLOW 연결 만들기

Report Workbench는 Report에 작성한 값·표를 Flow의 public input으로 전달하고, Flow의 public result를 Report의 지정 위치에 표시합니다. 이 관계는 .pxreport가 소유하며 Flow source와 Canvas 내부 연결을 바꾸지 않습니다.

점선은 `.pxreport`가 소유하는 Report↔Flow mapping이고, 실선은 `.pxflow`와 `flow.connect(...)`가 소유하는 Flow 내부 연결입니다. Report 연결을 만들어도 Flow Python source는 바뀌지 않습니다.

먼저 Flow가 공개한 경계를 확인합니다

python
from pipelinexlab import px


flow = px.Flow(
    "load_review",
    label="Load review",
    description="Checks the load supplied by a Report.",
)
load = flow.input("load", float, unit="kN", description="Design load.")
check = flow.node("load_check", check_load)

flow.connect(load, check.inputs.load)
flow.result("utilization", check.results.utilization)
  • flow.input("load", ...)는 Report가 값을 보낼 수 있는 destination입니다.
  • flow.result("utilization", ...)는 Report가 표시할 수 있는 source입니다.
  • flow.connect(load, check.inputs.load)는 Flow 내부 Canvas 연결입니다.

Python Flow module에는 public port와 Flow 내부 연결을 작성합니다. Report block과 public port의 mapping은 px.Report 또는 Report Workbench가 .pxreport에 저장합니다.

작성값 또는 새 Connected Table을 input에 연결합니다

  1. 기존 text나 number는 선택합니다. 새 table input은 빈 문단에 caret를 둡니다.
  2. @ Insert → PXFLOW를 엽니다.
  3. Project와 exact Flow revision을 선택합니다.
  4. Use report input을 선택하고 호환되는 Flow input을 고릅니다.
  5. type·unit·shape를 확인하고 Connect를 눌러 connected input 또는 table과 binding을 함께 만듭니다.
  6. Table은 Connection → Table mapping에서 field·row mapping을 편집합니다.

기존 ordinary 표 범위를 직접 승격하는 @ 경로는 계획 단계입니다.

저장되는 mapping은 다음 의미를 가집니다.

json
{
  "mappingKey": "factored_load_input",
  "portKey": "load",
  "source": {
    "kind": "reportValue",
    "blockKey": "design_actions",
    "fieldKey": "factored_load"
  }
}

저장되는 주소는 mappingKey, blockKeyfieldKey입니다. 이 값들이 그대로면 커서를 옮기거나 주변 문장을 고쳐도, 문서를 다시 열어도 같은 연결을 계속 가리킵니다.

result를 Report에 표시합니다

  1. 결과를 표시할 위치에 caret를 둡니다.
  2. @ Insert → PXFLOW를 엽니다.
  3. 연결한 Flow의 result를 선택합니다.
  4. inline value, result table 또는 artifact 표시를 선택합니다.
  5. Insert를 누릅니다.
json
{
  "mappingKey": "utilization_result",
  "portKey": "utilization",
  "target": {
    "kind": "reportResultSlot",
    "blockKey": "check_summary",
    "slotKey": "utilization"
  }
}

결과 위치는 Run이 저장한 값을 읽어 표시하는 자리입니다. 표시된 값은 읽기 전용으로 유지되며, 새 Run이 끝날 때 그 Run의 값으로 갱신됩니다.

한 connection이 두 방향을 묶습니다

json
{
  "connectionKey": "load_review",
  "mappingGeneration": 0,
  "flowTarget": {
    "scope": {
      "kind": "project",
      "workspaceKey": "structural_team",
      "projectKey": "bridge_design"
    },
    "flowKey": "load_review",
    "revisionRef": "sha256:flow-revision-digest"
  },
  "inputMappings": [],
  "resultMappings": [],
  "runPolicy": "manual"
}

같은 connection의 input mapping은 한 번의 Flow Run payload로 전달되고, result mapping은 그 Run이 만든 같은 ResultSnapshot을 표시합니다. source 또는 Flow revision이 바뀌면 기존 projection을 Stale로 표시하고 새 Run을 안내합니다.

Flow Overview와 편집 경계

Report Workbench의 Overview는 선택한 Flow의 public input/result와 내부 경로를 읽기 전용으로 보여 줍니다. Open in PXFLOW Studio를 누르면 Node와 내부 연결을 편집할 수 있습니다. Report source와 result 위치의 mapping은 Report Workbench에서 계속 편집합니다.

변경하려는 내용편집 위치
Report authored value·tableReport Workbench
Report source → Flow inputReport Workbench Connections
Flow result → Report 위치Report Workbench Connections
Flow public port 계약SDK source 또는 PXFLOW Studio
Flow 내부 Node·연결SDK source 또는 PXFLOW Studio

값 모양별 연결

Report source호환되는 Flow input실행 의미
scalar field같은 type·unit의 scalarFlow Run 1회
Record field호환되는 RecordFlow Run 1회
Table selectionpx.Table[Record] 또는 명시적 list[T]collection 하나로 Flow Run 1회
attachment호환되는 file/artifact referenceFlow Run 1회

표를 연결하면 행이 몇 개든 Run은 한 번이고 Canvas 구성도 그대로입니다. 행마다 따로 실행하려면 Run → New batch로 Batch Run을 만들고, 실행 전에 case 수와 mapping을 확인합니다.

변경과 복구

변경Report Workbench 표시사용자가 하는 일
Flow revision 변경old/new revision과 영향 mappingReview update
public port 제거·이름 변경정확히 끊어진 port key새 port 선택 또는 연결 제거
type·unit·shape 변경source와 destination 계약 비교source 또는 Flow contract 수정
Result가 이전 input 기준Stale와 마지막 provenanceRun again
권한 변경보존된 target과 필요한 권한Request access

이름이 비슷한 port가 있어도 연결 대상은 사용자가 직접 고릅니다. 복구할 때는 어떤 port로 연결할지와 영향 범위를 확인한 뒤 Apply합니다.

관련 문서