Report에서 PXFLOW 연결 만들기
Report Workbench는 Report에 작성한 값·표를 Flow의 public input으로 전달하고, Flow의 public result를 Report의 지정 위치에 표시합니다. 이 관계는 .pxreport가 소유하며 Flow source와 Canvas 내부 연결을 바꾸지 않습니다.
먼저 Flow가 공개한 경계를 확인합니다
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에 연결합니다
- 기존 text나 number는 선택합니다. 새 table input은 빈 문단에 caret를 둡니다.
- @ Insert → PXFLOW를 엽니다.
- Project와 exact Flow revision을 선택합니다.
- Use report input을 선택하고 호환되는 Flow input을 고릅니다.
- type·unit·shape를 확인하고 Connect를 눌러 connected input 또는 table과 binding을 함께 만듭니다.
- Table은 Connection → Table mapping에서 field·row mapping을 편집합니다.
기존 ordinary 표 범위를 직접 승격하는 @ 경로는 계획 단계입니다.
저장되는 mapping은 다음 의미를 가집니다.
{
"mappingKey": "factored_load_input",
"portKey": "load",
"source": {
"kind": "reportValue",
"blockKey": "design_actions",
"fieldKey": "factored_load"
}
}저장되는 주소는 mappingKey, blockKey와 fieldKey입니다. 이 값들이 그대로면 커서를 옮기거나 주변 문장을 고쳐도, 문서를 다시 열어도 같은 연결을 계속 가리킵니다.
result를 Report에 표시합니다
- 결과를 표시할 위치에 caret를 둡니다.
- @ Insert → PXFLOW를 엽니다.
- 연결한 Flow의 result를 선택합니다.
- inline value, result table 또는 artifact 표시를 선택합니다.
- Insert를 누릅니다.
{
"mappingKey": "utilization_result",
"portKey": "utilization",
"target": {
"kind": "reportResultSlot",
"blockKey": "check_summary",
"slotKey": "utilization"
}
}결과 위치는 Run이 저장한 값을 읽어 표시하는 자리입니다. 표시된 값은 읽기 전용으로 유지되며, 새 Run이 끝날 때 그 Run의 값으로 갱신됩니다.
한 connection이 두 방향을 묶습니다
{
"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·table | Report Workbench |
| Report source → Flow input | Report 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의 scalar | Flow Run 1회 |
| Record field | 호환되는 Record | Flow Run 1회 |
| Table selection | px.Table[Record] 또는 명시적 list[T] | collection 하나로 Flow Run 1회 |
| attachment | 호환되는 file/artifact reference | Flow Run 1회 |
표를 연결하면 행이 몇 개든 Run은 한 번이고 Canvas 구성도 그대로입니다. 행마다 따로 실행하려면 Run → New batch로 Batch Run을 만들고, 실행 전에 case 수와 mapping을 확인합니다.
변경과 복구
| 변경 | Report Workbench 표시 | 사용자가 하는 일 |
|---|---|---|
| Flow revision 변경 | old/new revision과 영향 mapping | Review update |
| public port 제거·이름 변경 | 정확히 끊어진 port key | 새 port 선택 또는 연결 제거 |
| type·unit·shape 변경 | source와 destination 계약 비교 | source 또는 Flow contract 수정 |
| Result가 이전 input 기준 | Stale와 마지막 provenance | Run again |
| 권한 변경 | 보존된 target과 필요한 권한 | Request access |
이름이 비슷한 port가 있어도 연결 대상은 사용자가 직접 고릅니다. 복구할 때는 어떤 port로 연결할지와 영향 범위를 확인한 뒤 Apply합니다.