取消业务流重新发起
/**
* @author 王亚新
* @codeName 【深瑞&ERP销售合同&逾期】取消业务流重新发起
* @description 取消错误的业务流,重新发起
* @createTime 2025-09-12
* @函数需求编号
*/
//符合条件的数据id
List ids = context.objectIds as List
log.info("context:" + context.data)
//需要查询的字段
/*****************************************
* id | 任务id
* name | 任务主题
* taskName | 任务名称
* workflowInstanceId | 业务流程实例ID
* objectApiName | 所属业务对象APIName
* objectDataId | 所属业务记录,数据ID
* sourceWorkflowId | 流程srcId,流程ID
* state | 任务状态
*******************************************/
List needFields = ["_id", "name", "taskName", "objectApiName", "objectDataId", "sourceWorkflowId","workflowInstanceId","state"] as List
def (boolean error, List dataList, String errorMessage) = Fx.object.findByIds("BpmTask", ids, FQLAttribute.builder().columns(needFields).build())
dataList.each { item ->
Map map = item as Map
String taskState = map["state"] as String
log.info("taskState: " + taskState)
String bpmId = map["workflowInstanceId"] as String
def ret = Fx.bpm.cancel(bpmId, "错误流程,重新发起。")
log.info("取消流程ret:" + ret)
String srcId = map["sourceWorkflowId"] as String
String dataId = map["objectDataId"] as String
String entityId = map["objectApiName"] as String
def result = Fx.bpm.startInstance( srcId, dataId,entityId)
log.info("重新发起流程result:" + result)
}
调用对象按钮
String str_id = ""; //数据id
Map param = [
"objectApiName": "object_o0ie1__c",//对象apiname
"buttonApiName": "button_ELHfV__c"//按钮APIName
]
Map header = [:]
Map data = [
"objectDataId": str_id, //数据id
"args": [:] //按钮入参 格式:Map ,Map中key格式:form_ + 字段apiName
]
def ret = Fx.proxy.callAPI("obj.button.call", param, header, data)
Fx.log.info(ret)
触发集成流更新
//符合条件的数据id
List ids = context.objectIds as List
def (boolean error, List dataList, String errorMessage) = Fx.object.findByIds("SaleContractObj", ids, FQLAttribute.builder().columns(["_id", "name","field_1m2Bv__c"]).build())
dataList.each { item ->
Map map = item as Map
//处理业务逻辑
String erpid = map["field_1m2Bv__c"] as String//ERPID
//触发ERP->CRM的集成流同步
//必填,CRM对象apiName
def crmObjApiName = "SaleContractObj";
String type = "";//
//必填,CRM数据Id
def crmDataId = map["_id"] as String;//
//必填,ERP中间对象apiName
//深瑞 CRM_Contract.BillHead 能源 CRM_Contract.BillHead_2 电力 CRM_Contract.BillHead_3
def erpObjApiName = ""
erpObjApiName = "CRM_Contract.BillHead_3"
//根据ERP的ID触发数据同步到CRM
Map header=[:]
Map params=[:]
params.put("erpObjectApiName",crmObjApiName); //目标对象apiName,参数名称有点奇怪,因为一开始只支持crm->erp的
params.put("crmDataId",erpid); //源数据Id,参数名称有点奇怪,因为一开始只支持crm->erp的
params.put("crmObjectApiName",erpObjApiName); //源对象apiName,参数名称有点奇怪,因为一开始只支持crm->erp的
Map commonParam=["type":"manualSyncCrm2Erp","params":Fx.json.toJson(params)];
def result1=Fx.proxy.callAPI("erp.syncData.executeCustomFunction",header,commonParam);
log.info("集成触发结果:"+result1)
def (Boolean error1, Map data1, String errorMessage1) = Fx.object.update("SaleContractObj", crmDataId, ["is_sync_success_fee__c":"1"], UpdateAttribute.builder().triggerWorkflow(true).build())
if (error1) {
log.info("error:" + errorMessage1 )
}
log.info(data1)
}