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事件
- 新增
获取当前新增的数据:
List currentAddData = event.getCurrentAddDetail() - 编辑
获取当前编辑的数据:
Map currentData = event.getCurrentDetail()
流程操作
发起业务流程
def result = Fx.bpm.startInstance( bpmId, dataId, objectApiName)参数说明:
bpmId: 业务流程iddataId: 数据IdobjectApiName: 业务对象的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("未查询到数据")
}