AutoRpa/build_seq.py

146 lines
4.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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("节点: 开始 -> 读取入参并执行合同建单")