import urllib.request import urllib.parse import json import time API_BASE = 'http://localhost:8080/jeecg-boot' TOKEN = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiY2xpZW50VHlwZSI6IlBDIiwiZXhwIjoxNzc1ODYwNDQ3fQ.CwbbFH-7jlKA_q48KSikeqP7opSGC16AijhC2EI3YKM' ts = str(int(time.time() * 1000)) process_key = f'process_{ts}' process_name = '员工请假流程审批' # 构造BPMN XML bpmn_xml = f''' flow1 flow1 flow2 flow2 flow3 flow3 flow4 flow4 ''' # 构造nodes参数 nodes_str = 'id=task_apply###nodeName=员工提交@@@id=task_manager###nodeName=部门经理审批@@@id=task_general_manager###nodeName=总经理审批@@@' data = { 'processDefinitionId': '0', 'processName': process_name, 'processkey': process_key, 'typeid': 'oa', 'lowAppId': '', 'params': '', 'nodes': nodes_str, 'processDescriptor': bpmn_xml, 'realProcDefId': '', 'startType': 'manual' } encoded_data = urllib.parse.urlencode(data).encode('utf-8') req = urllib.request.Request( f'{API_BASE}/bpm/process/save', data=encoded_data, headers={ 'X-Access-Token': TOKEN, 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, method='POST' ) try: resp = urllib.request.urlopen(req) result = json.loads(resp.read().decode('utf-8')) print(json.dumps(result, ensure_ascii=False, indent=2)) print(f'\nProcess Key: {process_key}') except urllib.error.HTTPError as e: print(f'HTTP Error: {e.code} - {e.reason}') print(f'Error details: {e.read().decode("utf-8")}') except Exception as e: print(f'Error: {e}')