1. 流程后动作
package fx.custom.apl.example.flow;
import com.fxiaoke.functions.FunctionContext;
import com.fxiaoke.functions.Fx;
import com.fxiaoke.functions.client.DebugHelper;
import com.fxiaoke.functions.model.*;
import com.fxiaoke.functions.template.IFlowAction;
import com.fxiaoke.functions.tools.QueryOperator;
import com.fxiaoke.functions.utils.Lists;
import com.fxiaoke.functions.utils.Maps;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import static com.fxiaoke.functions.Fx.log;
/**
* APL函数里获取触发函数的主从数据
* APL函数简单操作获取主对象数据,并遍历处理从对象数据
*/
public class FlowExample implements IFlowAction {
@Override
public void execute(FunctionContext context, Map<String, Object> map) {
// 流程后动作函数里面的context.data数据并不会实时计算计算字段,引用字段等,也不会查相关团队等信息
// 建议有实时获取计算引用字段需求的再使用FQL查询下相关数据,FQL里面有参数控制是否查询相关信息
String objectId = (String) context.getData().get("_id");
String objectApiName = (String) context.getData().get("object_describe_api_name");
FQLAttribute fqlAtrr = FQLAttribute.builder()
.columns(Lists.newArrayList("_id", "name")) //需要查询的字段
.build();
SelectAttribute selectAtrr = SelectAttribute.builder()
.needInvalid(false) //是否需要查作废数据
.build();
//查询主对象数据
APIResult apiResult = Fx.object.findById(objectApiName, objectId, fqlAtrr, selectAtrr);
if (apiResult.isError()) {
log.info("error:" + apiResult.getMessage());
}
log.info(apiResult.getData());
//如果有从对象数据也可以查询从数据
QueryTemplate query = QueryTemplate.AND(
Maps.of("field_57s3W__c", QueryOperator.EQ(objectId)) //主从关系字段
);
FQLAttribute fqlAtrr2 = FQLAttribute.builder()
.queryTemplate(query)
.columns(Lists.newArrayList("_id", "name"))
.build();
APIResult apiResult1 = Fx.object.find("object_adev4__c", fqlAtrr2, selectAtrr);
if (apiResult1.isError()) {
log.info("find object_adev4__c error:" + apiResult1.getMessage());
}
if (apiResult1.isError()) {
log.info("find object_adev4__c error:" + apiResult1.getMessage());
}
log.info(apiResult1.getData());
List dataList = ((QueryResult) apiResult1.getData()).getDataList();
dataList.forEach(it -> {
log.info(it);
});
}
public static void main(String[] args) throws IOException {
//调试器
DebugHelper helper = new DebugHelper();
//调试器初始化,包括身份以及服务器的地址
//身份信息联系APL平台获取,具体查看application.properties配置
helper.init();
//构造当前执行类
FlowExample example = new FlowExample();
//模拟调试的上下文,例如开发时想模拟一个客户对象的上下文,以方便开发
FunctionContext context = helper.context("AccountObj", "63100e7915d6a300017121cc");
//构造被触发时的参数
Map<String, Object> argument = Maps.newHashMap();
//执行函数
example.execute(context, argument);
}
}
2. 流程校验
详见校验函数