Java接口说明

1. 返回类型为List

package fx.custom.apl.example.scope_rule;

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.IQueryListAction;
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.HashMap;
import java.util.List;
import java.util.Map;

import static com.fxiaoke.functions.Fx.log;

/**
 * 使用集合(List)返回值类型,在新建对象数据时,查找关联字段可以选择出其它对象中符合函数条件的数据
 * 在新建对象数据时,查找关联字段可以选择出其它对象中符合函数条件的数据
 * 注:List返回类型函数,用此方法返回的数据有上限500条在新建对象数据时,查找关联字段可以选择出其它对象中符合函数条件的数据
 */
public class QueryListExample implements IQueryListAction {

    /**
     * 范围规则函数(List)的运行方法
     */
    @Override
    public List execute(FunctionContext context, Map<String, Object> args) {
        /* 在新建对象数据时,查找关联字段可以选择出其它对象中符合函数条件的数据
         * 注:List返回类型函数,用此方法返回的数据有上限500条
         */

        //获取当前操作对象数据的字段值
        String name = (String) context.getData().get("field_cG001__c");
        log.info(name);
        //根据条件查找数据,本案例即查找另一对象中性别为男生的数据
        APIResult ret = Fx.object.find("object_M4WK7__c", //查询对象apiname
                FQLAttribute.builder()
                        .columns(Lists.newArrayList("_id")) //返回数据id
                        //匹配条件,关联对象字段=当前操作对象字段
                        .queryTemplate(QueryTemplate.AND(Maps.of("field_54cCg__c", QueryOperator.EQ(name))))
                        .build(),
                SelectAttribute.builder()
                        .build());
        if (ret.isError()) {
            log.info(ret.message());
        }

        //定义id List
        List objectIds = Lists.newArrayList();
        QueryResult result = (QueryResult) ret.getData();
        //遍历查询结果,将所有Id添加到objectIds中
        result.getDataList().forEach(item -> {
            Map map = (Map) item;
            objectIds.add(map.get("_id"));
        });
        //最后返回objectIds
        return objectIds;
    }

    public static void main(String[] args) throws IOException {
        //调试器
        DebugHelper helper = new DebugHelper();
        helper.init();
        Map<String, Object> param = new HashMap<>();
        //模拟调试的上下文,例如开发时想模拟一个客户对象的上下文,以方便开发
        FunctionContext context = helper.context("object_zBB6O__c", "63fd7a30ffd89f00013c7be3");
        List execute = new QueryListExample().execute(context, param);
        log.info(execute);
    }
}



2. 返回类型为QueryTemplate

package fx.custom.apl.example.scope_rule;

import com.fxiaoke.functions.FunctionContext;
import com.fxiaoke.functions.Fx;
import com.fxiaoke.functions.client.DebugHelper;
import com.fxiaoke.functions.model.QueryTemplate;
import com.fxiaoke.functions.template.IQueryTemplateAction;
import com.fxiaoke.functions.tools.QueryOperator;
import com.fxiaoke.functions.utils.Maps;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * QueryTemplate范围规则样例
 * 使用QueryTemplate限制查找关联字段的选择范围
 */
public class QueryTemplateExample implements IQueryTemplateAction {
    /**
     * 范围规则函数(QueryTemplate)的运行方法
     */
    @Override
    public QueryTemplate execute(FunctionContext context, Map<String, Object> args) {

        //关联的字段
        String type = (String) context.getData().get("field_cG001__c");
        String name = (String) context.getData().get("name");

        //构造QueryTemplate --- //关联对象的字段
        QueryTemplate template1 = QueryTemplate.AND(
                Maps.of("name", QueryOperator.EQ(name)),
                Maps.of("field_g7Zeh__c", QueryOperator.EQ(type))
        );

        QueryTemplate template2 = QueryTemplate.AND(
                Maps.of("owner", QueryOperator.EQ("100")),
                Maps.of("record_type", QueryOperator.EQ("default__c"))
        );

        //QueryTemplate使用OR条件需要单独开通,请联系销售人员下订单开通产品:【对象列表筛选支持或者】
        QueryTemplate template3 = QueryTemplate.AND(template1, template2);

        return template3;
    }


    public static void main(String[] args) throws IOException {
        //调试器
        DebugHelper helper = new DebugHelper();
        helper.init();
        Map<String, Object> param = new HashMap<>();
        //模拟调试的上下文,例如开发时想模拟一个客户对象的上下文,以方便开发
        FunctionContext context = helper.context("object_zBB6O__c", "63fd7a30ffd89f00013c7be3");
        QueryTemplate execute = new QueryTemplateExample().execute(context, param);
        Fx.log.info(execute);
    }
}



3. 返回类型为RangeRule

package fx.custom.apl.example.scope_rule;

import com.fxiaoke.functions.FunctionContext;
import com.fxiaoke.functions.Fx;
import com.fxiaoke.functions.client.DebugHelper;
import com.fxiaoke.functions.model.QueryTemplate;
import com.fxiaoke.functions.model.RangeRule;
import com.fxiaoke.functions.template.IRangeRuleAction;
import com.fxiaoke.functions.tools.QueryOperator;
import com.fxiaoke.functions.utils.Maps;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * @type functions
 * @returntype RangeRule
 * @namespace scope_rule
 * @targetmethod execute
 */
public class RangeRuleExample implements IRangeRuleAction {

    /**
     * 范围规则函数(rangeRule)函数的运行方法
     */
    @Override
    public RangeRule execute(FunctionContext context, Map<String, Object> args) {

        //关联的字段
        String type = (String) context.getData().get("field_cG001__c");
        String name = (String) context.getData().get("name");

        //构造QueryTemplate --- //关联对象的字段
        QueryTemplate template1 = QueryTemplate.AND(
                Maps.of("name", QueryOperator.EQ(name)),
                Maps.of("field_g7Zeh__c", QueryOperator.EQ(type))
        );

        QueryTemplate template2 = QueryTemplate.AND(
                Maps.of("owner", QueryOperator.EQ("100")),
                Maps.of("record_type", QueryOperator.EQ("default__c"))
        );

        //QueryTemplate使用OR条件需要单独开通,请联系销售人员下订单开通产品:【对象列表筛选支持或者】
        QueryTemplate template3 = QueryTemplate.AND(template1, template2);

        //构造RangeRule
        RangeRule rangeRule = RangeRule.builder()
                .queryTemplate(template3)
                .recordType("record_q6iJ7__c") // 查找关联新建时默认用该业务类型
                .build();
        return rangeRule;
    }


    public static void main(String[] args) throws IOException {
        //调试器
        DebugHelper helper = new DebugHelper();
        helper.init();
        Map<String, Object> param = new HashMap<>();
        //模拟调试的上下文,例如开发时想模拟一个客户对象的上下文,以方便开发
        FunctionContext context = helper.context("object_zBB6O__c", "63fd7a30ffd89f00013c7be3");
        RangeRule execute = new RangeRuleExample().execute(context, param);
        Fx.log.info(execute);
    }
}


2024-10-22
0 0