1. UIWeb
package fx.custom.apl.example.button;
import com.fxiaoke.functions.FunctionContext;
import com.fxiaoke.functions.Fx;
import com.fxiaoke.functions.client.DebugHelper;
import com.fxiaoke.functions.template.IButtonUIAction;
import com.fxiaoke.functions.ui.UIAction;
import com.fxiaoke.functions.ui.WebAction;
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;
/**
* 網(wǎng)頁(yè)端WebAction跳轉(zhuǎn)新建界面,并回填數(shù)據(jù)
* WebAction 彈出對(duì)應(yīng)的新建頁(yè)面,從A對(duì)象直接跳轉(zhuǎn)B對(duì)象的新建,并且回填數(shù)據(jù)
*/
public class ButtonUIWebExample implements IButtonUIAction {
/**
* 按鈕函數(shù)(UIAction)的運(yùn)行方法
*/
@Override
public UIAction execute(FunctionContext context, Map<String, Object> args) {
//跳轉(zhuǎn)后回填的主對(duì)象數(shù)據(jù)
Map projectData = context.getData();
log.debug(context.getDetails().get("object_g1WuF__c"));
Map subProjectData = Maps.newHashMap();
subProjectData.put("field_0fke8__c", projectData.get("_id"));
subProjectData.put("field_0fke8__c__r", projectData.get("name"));
List details = Lists.newArrayList();
Map detail1 = Maps.newHashMap();
detail1.put("record_type", "default__c");
detail1.put("name", "明細(xì)1");
details.add(detail1);
Map detail2 = Maps.newHashMap();
detail2.put("record_type", "default__c");
detail2.put("name", "明細(xì)2");
details.add(detail2);
//跳轉(zhuǎn)后回填的從對(duì)象數(shù)據(jù)
Map subProjectDetails = Maps.newHashMap();
//從對(duì)象的 apiName,每次從對(duì)象是獨(dú)立的一個(gè) Map
subProjectDetails.put("object_62jJG__c", details);
Map actionData = Maps.newHashMap(); //form 組件依賴的傳入數(shù)據(jù)
actionData.put("apiname", "object_zBB6O__c"); //要新建的對(duì)象 apiName
actionData.put("record_type", "default__c"); //要新建的業(yè)務(wù)類型 apiName - 主對(duì)象
actionData.put("data", subProjectData); //非必填,對(duì)象默認(rèn)數(shù)據(jù) - 主對(duì)象數(shù)據(jù)
actionData.put("details", subProjectDetails); //非必填,對(duì)象默認(rèn)數(shù)據(jù) - 從對(duì)象數(shù)據(jù)
actionData.put("showDetail", true);
log.info("subProjectDetails --> " + subProjectDetails);
log.debug("return actionData: " + actionData);
WebAction action = WebAction.builder()
.type("form") //組件類型是 form
.data(actionData)
.build();
return action;
}
public static void main(String[] args) throws IOException {
//調(diào)試器
DebugHelper helper = new DebugHelper();
helper.init();
//模擬了一個(gè)帶有從對(duì)象的對(duì)象數(shù)據(jù)
//{"appId":"","arg":{},"data":{"tenant_id":"749422","field_Tnvig__c":"1","is_deleted":false,"object_describe_api_name":"object_zBB6O__c","owner_department_id":"1000","owner_department":"測(cè)試","owner":["1000"],"lock_status":"0","package":"CRM","last_modified_time":{"dateTimeFormatter":{"decimalStyle":{"decimalSeparator":".","negativeSign":"-","positiveSign":"+","zeroDigit":"0"},"locale":"zh_CN","resolverStyle":"SMART"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":28,"month":2,"second":12,"timestamp":1677569292545,"weekOfMonth":5,"weekOfYear":9,"year":2023},"create_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":11,"minute":51,"month":2,"second":12,"timestamp":1677556272704,"weekOfMonth":5,"weekOfYear":9,"year":2023},"life_status":"normal","last_modified_by":["1000"],"version":10,"created_by":["1000"],"record_type":"default__c","data_own_department":["1000"],"name":"1test","_id":"63fd7a30ffd89f00013c7be3"},"dataList":[],"details":{"object_g1WuF__c":[{"tenant_id":"749422","is_deleted":false,"object_describe_api_name":"object_g1WuF__c","owner_department_id":"1000","owner_department":"測(cè)試","owner":["1000"],"lock_status":"0","package":"CRM","last_modified_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":28,"month":2,"second":26,"timestamp":1677569306991,"weekOfMonth":5,"weekOfYear":9,"year":2023},"create_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":28,"month":2,"second":26,"timestamp":1677569306991,"weekOfMonth":5,"weekOfYear":9,"year":2023},"life_status":"normal","field_1Rwod__c":"63fd7a30ffd89f00013c7be3","last_modified_by":["1000"],"version":1,"created_by":["1000"],"record_type":"default__c","data_own_department":["1000"],"name":"1test","_id":"63fdad1aebfee100016b043f"},{"tenant_id":"749422","lock_rule":"default_lock_rule","is_deleted":false,"object_describe_api_name":"object_g1WuF__c","owner_department_id":"1000","owner_department":"測(cè)試","owner":["1000"],"lock_status":"0","package":"CRM","last_modified_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":27,"month":2,"second":17,"timestamp":1677569237831,"weekOfMonth":5,"weekOfYear":9,"year":2023},"create_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":27,"month":2,"second":17,"timestamp":1677569237831,"weekOfMonth":5,"weekOfYear":9,"year":2023},"life_status":"normal","field_1Rwod__c":"63fd7a30ffd89f00013c7be3","last_modified_by":["1000"],"version":1,"created_by":["1000"],"record_type":"default__c","data_own_department":["1000"],"name":"1","order_by":10,"_id":"63fdacd542400c00019cfcca"}]},"objectIds":[],"outTenantId":"","outUserId":"","relatedData":{},"task":{},"tenantId":"749422","thirdAppId":"","thirdType":"","thirdUserId":"","upstreamOwnerId":"","userId":"1002"}
FunctionContext context = helper.context("object_zBB6O__c", "63fd7a30ffd89f00013c7be3");
Map<String, Object> param = new HashMap<>();
UIAction execute = new ButtonUIWebExample().execute(context, param);
Fx.log.info(execute);
}}
2. UIAlert
package fx.custom.apl.example.button;
import com.fxiaoke.functions.FunctionContext;
import com.fxiaoke.functions.Fx;
import com.fxiaoke.functions.client.DebugHelper;
import com.fxiaoke.functions.template.IButtonUIAction;
import com.fxiaoke.functions.ui.AlertAction;
import com.fxiaoke.functions.ui.UIAction;
import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* AlertAction實(shí)現(xiàn)自定義彈窗內(nèi)容
* 使用自定義UI按鈕實(shí)現(xiàn)自定義彈窗內(nèi)容
*/
public class ButtonUIAlertExample implements IButtonUIAction {
/**
* 按鈕函數(shù)(UIAction)的運(yùn)行方法
*/
@Override
public UIAction execute(FunctionContext context, Map<String, Object> args) {
String content = (String) context.getData().get("field_0D4b2__c");
//如果需要傳遞的參數(shù)為空,直接返回提示
if (StringUtils.isBlank(content)) {
UIAction alertAction = AlertAction.builder()
.type("default")
.text("字段,文本內(nèi)容未填寫,請(qǐng)先填寫內(nèi)容")//具體要提示的信息內(nèi)容
.build();
return alertAction;
}
return AlertAction.builder().type("default").text("xxx信息").build();
}
public static void main(String[] args) throws IOException {
//調(diào)試器
DebugHelper helper = new DebugHelper();
helper.init();
//模擬了一個(gè)帶有從對(duì)象的對(duì)象數(shù)據(jù)
//{"appId":"","arg":{},"data":{"tenant_id":"749422","field_Tnvig__c":"1","is_deleted":false,"object_describe_api_name":"object_zBB6O__c","owner_department_id":"1000","owner_department":"測(cè)試","owner":["1000"],"lock_status":"0","package":"CRM","last_modified_time":{"dateTimeFormatter":{"decimalStyle":{"decimalSeparator":".","negativeSign":"-","positiveSign":"+","zeroDigit":"0"},"locale":"zh_CN","resolverStyle":"SMART"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":28,"month":2,"second":12,"timestamp":1677569292545,"weekOfMonth":5,"weekOfYear":9,"year":2023},"create_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":11,"minute":51,"month":2,"second":12,"timestamp":1677556272704,"weekOfMonth":5,"weekOfYear":9,"year":2023},"life_status":"normal","last_modified_by":["1000"],"version":10,"created_by":["1000"],"record_type":"default__c","data_own_department":["1000"],"name":"1test","_id":"63fd7a30ffd89f00013c7be3"},"dataList":[],"details":{"object_g1WuF__c":[{"tenant_id":"749422","is_deleted":false,"object_describe_api_name":"object_g1WuF__c","owner_department_id":"1000","owner_department":"測(cè)試","owner":["1000"],"lock_status":"0","package":"CRM","last_modified_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":28,"month":2,"second":26,"timestamp":1677569306991,"weekOfMonth":5,"weekOfYear":9,"year":2023},"create_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":28,"month":2,"second":26,"timestamp":1677569306991,"weekOfMonth":5,"weekOfYear":9,"year":2023},"life_status":"normal","field_1Rwod__c":"63fd7a30ffd89f00013c7be3","last_modified_by":["1000"],"version":1,"created_by":["1000"],"record_type":"default__c","data_own_department":["1000"],"name":"1test","_id":"63fdad1aebfee100016b043f"},{"tenant_id":"749422","lock_rule":"default_lock_rule","is_deleted":false,"object_describe_api_name":"object_g1WuF__c","owner_department_id":"1000","owner_department":"測(cè)試","owner":["1000"],"lock_status":"0","package":"CRM","last_modified_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":27,"month":2,"second":17,"timestamp":1677569237831,"weekOfMonth":5,"weekOfYear":9,"year":2023},"create_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":27,"month":2,"second":17,"timestamp":1677569237831,"weekOfMonth":5,"weekOfYear":9,"year":2023},"life_status":"normal","field_1Rwod__c":"63fd7a30ffd89f00013c7be3","last_modified_by":["1000"],"version":1,"created_by":["1000"],"record_type":"default__c","data_own_department":["1000"],"name":"1","order_by":10,"_id":"63fdacd542400c00019cfcca"}]},"objectIds":[],"outTenantId":"","outUserId":"","relatedData":{},"task":{},"tenantId":"749422","thirdAppId":"","thirdType":"","thirdUserId":"","upstreamOwnerId":"","userId":"1002"}
FunctionContext context = helper.context("object_zBB6O__c", "63fd7a30ffd89f00013c7be3");
Map<String, Object> param = new HashMap<>();
UIAction execute = new ButtonUIAlertExample().execute(context, param);
Fx.log.info(execute);
}}
3. UIApp
package fx.custom.apl.example.button;
import com.fxiaoke.functions.FunctionContext;
import com.fxiaoke.functions.Fx;
import com.fxiaoke.functions.client.DebugHelper;
import com.fxiaoke.functions.model.APIResult;
import com.fxiaoke.functions.template.IButtonUIAction;
import com.fxiaoke.functions.ui.AppAction;
import com.fxiaoke.functions.ui.UIAction;
import com.fxiaoke.functions.ui.WebAction;
import com.fxiaoke.functions.utils.Maps;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import static com.fxiaoke.functions.Fx.log;
/**
* 移動(dòng)端AppAction 跳轉(zhuǎn)編輯頁(yè)面,并回填數(shù)據(jù)
* 通過(guò)UIAction跳轉(zhuǎn)到對(duì)象的編輯頁(yè)面,并可以帶上數(shù)據(jù)
*/
public class ButtonUIAppExample implements IButtonUIAction {
/**
* 按鈕函數(shù)(UIAction)的運(yùn)行方法
*/
@Override
public UIAction execute(FunctionContext context, Map<String, Object> args) {
String dataId = (String) context.getData().get("_id");
String objectApiName = "object_6TNd9__c";
String recordType = (String) context.getData().get("record_type");
log.info(context.getData());
UIAction action;
String source = Fx.utils.getRequestSource();
if ("WEB".equals(source)) {
action = WebAction.builder()
.type("form")
.data(Maps.of("apiname", objectApiName, "type", "edit", "dataId", dataId))
.build();
log.info("web action: " + action);
} else {
//如果是移動(dòng)端請(qǐng)求,返回如下結(jié)構(gòu)(移動(dòng)端返回UIAction的按鈕需要開啟移動(dòng)端獨(dú)立布局)
Map map = Maps.newHashMap();
map.put("type", "Edit"); //前幾個(gè)參數(shù)都寫死,表明跳轉(zhuǎn)是編輯頁(yè)組件
map.put("objectModify", "Edit");
map.put("handlerSelector", "objectModify:recordType:masterData:detailData:apiName:backFill:");
map.put("apiName", objectApiName); //對(duì)象APIName
map.put("recordType", recordType); //對(duì)象業(yè)務(wù)類型
map.put("masterData", Fx.json.toJson(context.getData())); //主對(duì)象數(shù)據(jù),從對(duì)象數(shù)據(jù)不用傳
map.put("toDetail", true); //新建完成后是否跳轉(zhuǎn)詳情頁(yè)面
String url = createAppUrl(map);
action = AppAction.builder()
.url(url)
.build();
log.info("app action: " + action);
}
return action;
}
private String createAppUrl(Map params) {
StringBuilder arg = new StringBuilder();
params.forEach((k, v) -> {
APIResult apiResult = Fx.crypto.getURL().encode((String) v);
if (apiResult.isError()) {
Fx.message.throwErrorMessage("編碼錯(cuò)誤,原因?yàn)?:" + apiResult.getMessage());
}
arg.append(k).append(k).append("=").append(apiResult.getData()).append("&");
});
String url = "event://CRM/ObjModify?" + arg.substring(0, arg.length() - 1);
return url;
}
public static void main(String[] args) throws IOException {
//調(diào)試器
DebugHelper helper = new DebugHelper();
helper.init();
//模擬了一個(gè)帶有從對(duì)象的對(duì)象數(shù)據(jù)
//{"appId":"","arg":{},"data":{"tenant_id":"749422","field_Tnvig__c":"1","is_deleted":false,"object_describe_api_name":"object_zBB6O__c","owner_department_id":"1000","owner_department":"測(cè)試","owner":["1000"],"lock_status":"0","package":"CRM","last_modified_time":{"dateTimeFormatter":{"decimalStyle":{"decimalSeparator":".","negativeSign":"-","positiveSign":"+","zeroDigit":"0"},"locale":"zh_CN","resolverStyle":"SMART"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":28,"month":2,"second":12,"timestamp":1677569292545,"weekOfMonth":5,"weekOfYear":9,"year":2023},"create_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":11,"minute":51,"month":2,"second":12,"timestamp":1677556272704,"weekOfMonth":5,"weekOfYear":9,"year":2023},"life_status":"normal","last_modified_by":["1000"],"version":10,"created_by":["1000"],"record_type":"default__c","data_own_department":["1000"],"name":"1test","_id":"63fd7a30ffd89f00013c7be3"},"dataList":[],"details":{"object_g1WuF__c":[{"tenant_id":"749422","is_deleted":false,"object_describe_api_name":"object_g1WuF__c","owner_department_id":"1000","owner_department":"測(cè)試","owner":["1000"],"lock_status":"0","package":"CRM","last_modified_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":28,"month":2,"second":26,"timestamp":1677569306991,"weekOfMonth":5,"weekOfYear":9,"year":2023},"create_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":28,"month":2,"second":26,"timestamp":1677569306991,"weekOfMonth":5,"weekOfYear":9,"year":2023},"life_status":"normal","field_1Rwod__c":"63fd7a30ffd89f00013c7be3","last_modified_by":["1000"],"version":1,"created_by":["1000"],"record_type":"default__c","data_own_department":["1000"],"name":"1test","_id":"63fdad1aebfee100016b043f"},{"tenant_id":"749422","lock_rule":"default_lock_rule","is_deleted":false,"object_describe_api_name":"object_g1WuF__c","owner_department_id":"1000","owner_department":"測(cè)試","owner":["1000"],"lock_status":"0","package":"CRM","last_modified_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":27,"month":2,"second":17,"timestamp":1677569237831,"weekOfMonth":5,"weekOfYear":9,"year":2023},"create_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":27,"month":2,"second":17,"timestamp":1677569237831,"weekOfMonth":5,"weekOfYear":9,"year":2023},"life_status":"normal","field_1Rwod__c":"63fd7a30ffd89f00013c7be3","last_modified_by":["1000"],"version":1,"created_by":["1000"],"record_type":"default__c","data_own_department":["1000"],"name":"1","order_by":10,"_id":"63fdacd542400c00019cfcca"}]},"objectIds":[],"outTenantId":"","outUserId":"","relatedData":{},"task":{},"tenantId":"749422","thirdAppId":"","thirdType":"","thirdUserId":"","upstreamOwnerId":"","userId":"1002"}
FunctionContext context = helper.context("object_zBB6O__c", "63fd7a30ffd89f00013c7be3");
Map<String, Object> param = new HashMap<>();
UIAction execute = new ButtonUIAppExample().execute(context, param);
Fx.log.info(execute);
}}## 4. UIOpenDialog
package fx.custom.apl.example.button;
import com.fxiaoke.functions.FunctionContext;
import com.fxiaoke.functions.Fx;
import com.fxiaoke.functions.client.DebugHelper;
import com.fxiaoke.functions.template.IButtonUIAction;
import com.fxiaoke.functions.ui.OpenDialogAction;
import com.fxiaoke.functions.ui.UIAction;
import com.fxiaoke.functions.utils.Maps;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* OpenDialogAction實(shí)現(xiàn)自定義dialog對(duì)話框
* 使用自定義UI按鈕實(shí)現(xiàn)自定義dialog對(duì)話框,需要自己寫一個(gè)自定義組件
*/public class ButtonUIOpenDialogExample implements IButtonUIAction {
/**
* 按鈕函數(shù)(UIAction)的運(yùn)行方法
*/
@Override
public UIAction execute(FunctionContext context, Map<String, Object> args) {
//自定義組件
OpenDialogAction.Component component = new OpenDialogAction.Component();
//自定義組件的apiName
component.setApiName("comp_yuio8__c");
Map<String, String> userData = Maps.of("key", "value");
OpenDialogAction.Builder builder = OpenDialogAction.Builder.create();
builder.setComponent(component); //自定義組件
builder.setData(userData); //返回的數(shù)據(jù),這部分是用戶的數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)是一個(gè)map
builder.setWidth("123"); //寬度,僅在 ShowCenter 模式下有效
builder.setMaxHeight("123"); //最大高度,僅在 ShowCenter 模式下有效
builder.setTitle("title"); //標(biāo)題
builder.setType("ShowCenter"); //顯示模式,目前支持 「ShowCenter 居中彈框」和「FullScreen 全屏顯示」兩種模式
return builder.toOpenDialogAction();
}
public static void main(String[] args) throws IOException {
//調(diào)試器
DebugHelper helper = new DebugHelper();
helper.init();
//模擬了一個(gè)帶有從對(duì)象的對(duì)象數(shù)據(jù)
//{"appId":"","arg":{},"data":{"tenant_id":"749422","field_Tnvig__c":"1","is_deleted":false,"object_describe_api_name":"object_zBB6O__c","owner_department_id":"1000","owner_department":"測(cè)試","owner":["1000"],"lock_status":"0","package":"CRM","last_modified_time":{"dateTimeFormatter":{"decimalStyle":{"decimalSeparator":".","negativeSign":"-","positiveSign":"+","zeroDigit":"0"},"locale":"zh_CN","resolverStyle":"SMART"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":28,"month":2,"second":12,"timestamp":1677569292545,"weekOfMonth":5,"weekOfYear":9,"year":2023},"create_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":11,"minute":51,"month":2,"second":12,"timestamp":1677556272704,"weekOfMonth":5,"weekOfYear":9,"year":2023},"life_status":"normal","last_modified_by":["1000"],"version":10,"created_by":["1000"],"record_type":"default__c","data_own_department":["1000"],"name":"1test","_id":"63fd7a30ffd89f00013c7be3"},"dataList":[],"details":{"object_g1WuF__c":[{"tenant_id":"749422","is_deleted":false,"object_describe_api_name":"object_g1WuF__c","owner_department_id":"1000","owner_department":"測(cè)試","owner":["1000"],"lock_status":"0","package":"CRM","last_modified_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":28,"month":2,"second":26,"timestamp":1677569306991,"weekOfMonth":5,"weekOfYear":9,"year":2023},"create_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":28,"month":2,"second":26,"timestamp":1677569306991,"weekOfMonth":5,"weekOfYear":9,"year":2023},"life_status":"normal","field_1Rwod__c":"63fd7a30ffd89f00013c7be3","last_modified_by":["1000"],"version":1,"created_by":["1000"],"record_type":"default__c","data_own_department":["1000"],"name":"1test","_id":"63fdad1aebfee100016b043f"},{"tenant_id":"749422","lock_rule":"default_lock_rule","is_deleted":false,"object_describe_api_name":"object_g1WuF__c","owner_department_id":"1000","owner_department":"測(cè)試","owner":["1000"],"lock_status":"0","package":"CRM","last_modified_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":27,"month":2,"second":17,"timestamp":1677569237831,"weekOfMonth":5,"weekOfYear":9,"year":2023},"create_time":{"dateTimeFormatter":{"$ref":"$.data.last\_modified\_time.dateTimeFormatter"},"day":28,"dayOfWeek":2,"dayOfYear":59,"hour":15,"minute":27,"month":2,"second":17,"timestamp":1677569237831,"weekOfMonth":5,"weekOfYear":9,"year":2023},"life_status":"normal","field_1Rwod__c":"63fd7a30ffd89f00013c7be3","last_modified_by":["1000"],"version":1,"created_by":["1000"],"record_type":"default__c","data_own_department":["1000"],"name":"1","order_by":10,"_id":"63fdacd542400c00019cfcca"}]},"objectIds":[],"outTenantId":"","outUserId":"","relatedData":{},"task":{},"tenantId":"749422","thirdAppId":"","thirdType":"","thirdUserId":"","upstreamOwnerId":"","userId":"1002"}
FunctionContext context = helper.context("object_zBB6O__c", "63fd7a30ffd89f00013c7be3");
Map<String, Object> param = new HashMap<>();
UIAction execute = new ButtonUIOpenDialogExample().execute(context, param);
Fx.log.info(execute);
}}