CRM开发者证书

!

数据操作

根据ID更新数据

def result = Fx.object.update(String objectAPIName, 
                              String dataId,
                              Map updateData,       
                              UpdateAttribute.builder().build()).result() as Map
 

E.g:

String objectAPIName = 'object_s82CA__c'
String dataId = '64b1113e87ec1c0001bfc102'
Map updateData = [
        "name":"sss"
]
def result = Fx.object.update(objectAPIName, dataId, updateData, UpdateAttribute.builder().build()).result() as Map //(Boolean error_update, Map data_update, String errorMessage_update)
if (result) {
    def id = result['_id'] as String
}

批量更新数据

Fx.object.update(objectApiName, QueryTemplate, Map, UpdateAttribute.builder().build())

数据查询

查询单条数据

自定义条件

def result = Fx.object.findOne("", //对象apiName
		        FQLAttribute.builder()
		                .columns(["_id", "name"]) //需要返回的字段
		                .queryTemplate(QueryTemplate.AND(["_id": QueryOperator.NE("6177cde7a0cb410001930ad0")])) //查询条件
		                .build(),
		        SelectAttribute.builder()
		                .build()).result() as Map //(Boolean find_error, Map find_data, String find_errorMessage)
if(result){
	String dataId = result["_id"] as String
}

通过ID查询

def result = Fx.object.findById("", //对象apiName
             "", //数据id
             FQLAttribute.builder()
                .columns(["_id","name"]) //需要返回的字段
                .build(),
             SelectAttribute.builder()
                .build()).result() as Map //(Boolean error,Map data,String errorMessage)
if(result) {
    String name = result["name"] as String
    log.info("name="+name)
}

人员&部门

根据人员ID列表查询人员信息

def result = Fx.org.findByUserIds(["1001","1002"]).result() as Map // Boolean error,Map data,String errorMessage

对象&字段显示名称

def (Boolean error, Map data, String errorMessage) = Fx.object.findDescribe(objectApiName);
String objectName = data["display_name"] as String
def fields = data["fields"] as Map;

单选字段值

def data = Fx.object.getOptionName(objectApiName, fieldsApiName, fieldsValue).result() as String
log.info("data: " + data )

调用按钮

String contract_id = context.data._id as String
// 调用ERP销售合同的合同清欠按钮
Map param = [
        "objectApiName": "SaleContractObj",//对象apiname
        "buttonApiName": "button_contract_debt_collection_registration__c"//按钮名称
] 
Map header = [:]
Map button_data = [
        "objectDataId": contract_id //数据id
        // "args": ["form_field_cvb2S__c": "100.00"]  //按钮入参 格式:Map ,Map中key格式:form_ + 字段apiName
]
def ret1 = Fx.proxy.callAPI("obj.button.call", param, header, button_data).result() as HttpResult
Map res_data = ret1["content"]["data"] as Map
log.info(res_data)

异常处理

FX.message

throwException

该API在抛出错误后,会终止函数的执行。函数列表页查看为函数执行失败

Fx.message.throwException("获取对象异常"+errorMessage)

throwErrorMessage

该API在抛出错误后,会终止函数的执行。函数列表页查看为函数执行成功

Fx.message.throwErrorMessage("获取对象异常"+errorMessage)

UI事件

Remind

Text 红字提示

该提示会阻断提交操作

remind = Remind.Text("Hello")

Alert 弹窗提示

该提示不会阻断提交操作

remind = Remind.Alert("Hello")

UI 事件&&提醒

UI 事件中对 Remind 的改造用法

UIEvent.Builder builder = UIEvent.Builder.create(context)
// 回填主对象数据
builder.editMaster("name": "", "b": 2)
// UI事件高阶能力  如下面隐藏从对象
builder.editObject 'object_0wK5p__c' hidden(true)
//获取当前操作的从对象数据
UIEvent event = UIEvent.build(context) {
}
Map currentData = event.getCurrentDetail()
//红字提醒
Remind remind_1 = Remind.builder()
  .remindText("field_i621P__c", "测试")
  .build();
builder.setRemind(remind_1);
Remind remind_2 = Remind.Alert("弹窗测试")
builder.setRemind(remind_2);
return builder.getUIEvent()

主表操作明细数据

获取当前操作的数据,可以直接通过MAP进行赋值

UI事件

  1. 新增 获取当前新增的数据:List currentAddData = event.getCurrentAddDetail()
  2. 编辑 获取当前编辑的数据:Map currentData = event.getCurrentDetail()

流程操作

发起业务流程

def result = Fx.bpm.startInstance( bpmId, dataId, objectApiName)

参数说明:

  1. bpmId : 业务流程id
  2. dataId : 数据Id
  3. objectApiName : 业务对象的ApiName

构造器概述

FQLAttribute

FQLAttribute.builder()
            .columns(["_id","name"]) //需要返回的字段    ----必填
            .queryTemplate(QueryTemplate)  //查询条件   ----可选
            .limit(100) //查询数据条数  0~100            ----可选
            .orderBy(["_id":1]) //排序规则  1升序 -1降序  ----可选
            .build()

UpdateAttribute

UpdateAttribute.builder()  
        .triggerWorkflow(true) //是否触发工作流
        .build()

SelectAttribute

SelectAttribute.builder()  
       .needCalculate(true) //是否实时处理计算字段,默认true  
       .needQuote(true) //是否实时处理引用字段,默认true  
       .calculateCount(true) //是否实时处理统计字段,默认true  
       .build()

CreateAttribute

CreateAttribute.builder().build()

QueryTemplate

QueryTemplate.AND(List<Map>)  //与条件
QueryTemplate.OR(QueryTemplate,QueryTemplate) //或条件

代码规范

命名规范

类型规范示例
方法名动词/动宾,首字母小写驼峰getValue(), calculateTotal()
常量全大写,下划线分隔DEFAULT_TIMEOUT, MAX_CONNECTIONS
变量名首字母小写驼峰,避免单字母orderList, customerName
代码块级变量双下划线起始,全小写,下划线分隔__data_id, __data_name
正确示例:
def result = Fx.object.findOne("AccountObj", //对象apiName
        FQLAttribute.builder()
                .columns(["_id", "name"]) //需要返回的字段
                .queryTemplate(QueryTemplate.AND(["_id": QueryOperator.EQ("6177cde7a0cb410001930ad0")])) //查询条件
                .build(),
        SelectAttribute.builder()
                .needCalculate(true) //是否实时处理计算字段,默认true
                .needQuote(true) //是否实时处理引用字段,默认true
                .calculateCount(true) //是否实时处理统计字段,默认true
                .build()).result() as Map
if(result){
    Map map = data as Map
    String name = map["name"] as String
    log.info("name=" + name)
}else{
    log.info("未查询到数据")
}