# coding=utf-8 """ 构建 Main.seq - 合同建单流程(输入驱动 + 状态中心回调版本) 说明: Main.seq 是 iS-RPA Studio 的流程源文件,Studio 编译时据此生成 codes/Main.py。 请在关闭 Studio 的情况下运行本脚本生成 Main.seq,再重新打开项目编译。 """ import json import base64 def b64_apa(val): return json.dumps({"val": base64.b64encode(str(val).encode()).decode()}, indent=4) def b64_raw(val): return base64.b64encode(str(val).encode()).decode() # 单节点代码块:从 input_arg 读取业务 JSON → 调用 run_contract_create。 # run_contract_create 内部完成 start/complete/fail 回调、Selenium 起草与合同编号读取。 body = """\ import sys, os, json from pathlib import Path _CODES_DIR = Path(r'd:\\RPA\\AutoRpa\\codes') if str(_CODES_DIR) not in sys.path: sys.path.insert(0, str(_CODES_DIR)) from rpa_yisaiqi.contract_create_node import ( ContractCreateError, load_input_data, run_contract_create, ) def _first(*values): for value in values: if value is not None and str(value).strip(): return str(value).strip() return "" raw = (self.input_arg or "").strip() if not raw: raise ContractCreateError("缺少业务入参:请通过 -i/--input 传入 JSON 字符串或文件路径") data = load_input_data(raw) state_center_url = _first( data.get("stateCenterUrl"), data.get("stateCenterURL"), os.getenv("STATE_CENTER_URL"), "http://127.0.0.1:8000", ) agent_token = _first( data.get("agentToken"), os.getenv("AGENT_TOKEN"), "dev-agent-token", ) print("=" * 60) print("合同建单 CONTRACT_CREATE - 开始") print("jobId=%s sourceType=%s submitMode=%s" % ( data.get("jobId"), data.get("sourceType"), data.get("submitMode"))) print("=" * 60) result = run_contract_create( data, state_center_url=state_center_url, agent_token=agent_token, ) print(json.dumps(result, ensure_ascii=False)) """ begin_tag = "20260813100000" code_tag = "20260813200000" line_tag = "20260813300000" main_seq = { "LineList": [ { "LineColor": "255, 255, 255", "LineCommented": 0, "LineEnd": {"Pidx": f"{code_tag}/EPin_Flow_In", "Px": "512", "Py": "300"}, "LineNote": "", "LineSplit": {"Px": "", "Py": ""}, "LineStart": {"Pidx": f"{begin_tag}/EPin_Flow_Out", "Px": "457", "Py": "246"}, "LineTag": line_tag, "LineType": 0, } ], "NodeList": [ { "NodePanelData": { "ExpandedGroups": [], "InputProperty": {"mouse_x": 0, "mouse_y": 0}, "PubProperty": "", "RetPins": [], }, "NodeProperty": { "EP_CONTROL": { "EP_CONTROL_IMPORT": json.dumps( {"PImport": b64_raw(""), "PBCode": b64_raw(body)}, indent=4, ) }, "EP_Gen": { "EP_Gen_AFTERDELAY": b64_apa("0"), "EP_Gen_BEFOREDELAY": b64_apa("0"), "EP_Gen_NOTE": b64_apa("读取入参并执行 CONTRACT_CREATE(含状态中心回调)"), }, }, "NodeUI": { "NodeElementID": "", "NodeModel": "2", "NodePropErr": False, "NodePx": "515", "NodePy": "270", "NodeSubType": "EnumWidget_Code_Custom", "NodeTag": code_tag, "NodeTitle": "读取入参并执行合同建单", }, }, { "NodePanelData": { "ExpandedGroups": [], "InputProperty": {"mouse_x": 0, "mouse_y": 0}, "PubProperty": "", "RetPins": [], }, "NodeProperty": "", "NodeUI": { "NodeElementID": "", "NodeModel": "2", "NodePropErr": False, "NodePx": "330", "NodePy": "230", "NodeSubType": "EnumWidget_Begin", "NodeTag": begin_tag, "NodeTitle": "开始", }, }, ], "SeqTag": "Main", "ViewCenterPx": "600", "ViewCenterPy": "300", "ViewScaling": "1", } with open(r"d:\RPA\AutoRpa\Main.seq", "w", encoding="utf-8") as f: json.dump(main_seq, f, ensure_ascii=False, indent=4) print("Main.seq 已生成(单节点输入驱动流程)") print("节点: 开始 -> 读取入参并执行合同建单")