前驗證
package fx.custom.apl.example.button;
import com.alibaba.fastjson.JSON;
import com.fxiaoke.functions.FunctionContext;
import com.fxiaoke.functions.Fx;
import com.fxiaoke.functions.client.DebugHelper;
import com.fxiaoke.functions.model.ButtonValidateResult;
import com.fxiaoke.functions.template.IButtonBeforeAction;
import com.fxiaoke.functions.utils.Maps;
import java.io.IOException;
import java.util.Map;
import java.util.Objects;
/**
* 1. 根據(jù)命名空間以及返回,選擇對應(yīng)的Action
* 2. 這個Action是函數(shù)觸發(fā)入口,對象勾子觸發(fā)時,會到Jar包中查找這個類并且檢查接口以及接口提供的方法
* <p>
* 場景:如新建編輯對象時,添加前驗證校驗數(shù)據(jù),或者對部分數(shù)據(jù)做一些初始化功能
*/
public class ButtonBeforeExample implements IButtonBeforeAction {
@Override
public ButtonValidateResult validate(FunctionContext context, Map<String, Object> map) {
String name = (String) context.getData().get("name");
context.getData().put("name", name + "test");
if (Objects.equals("1", context.getData().get("field_Tnvig__c"))) {
return ButtonValidateResult.builder().error(true).errorMessage("類型錯誤").block(true).build();
}
return ButtonValidateResult.builder().error(false).errorMessage("成功").build();
}
/**
* 調(diào)試入口
*/
public static void main(String[] args) throws IOException {
//調(diào)試器
DebugHelper helper = new DebugHelper();
//調(diào)試器初始化,包括身份以及服務(wù)器的地址
//身份信息聯(lián)系A(chǔ)PL平臺獲取,具體查看application.properties配置
helper.init();
//構(gòu)造當前執(zhí)行類
ButtonBeforeExample example = new ButtonBeforeExample();
//模擬調(diào)試的上下文,例如開發(fā)時想模擬一個客戶對象的上下文,以方便開發(fā)
FunctionContext context = helper.context("object_zBB6O__c", "63fd7a30ffd89f00013c7be3");
//構(gòu)造被觸發(fā)時的參數(shù)
Map<String, Object> argument = Maps.newHashMap();
//執(zhí)行函數(shù)
ButtonValidateResult validate = example.validate(context, argument);
Fx.log.info(JSON.toJSONString(validate));
}}
執(zhí)行
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.IButtonBusinessAction;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* 點擊按鈕后頁面可以跳轉(zhuǎn)到該返回值對應(yīng)的URL
*
* 場景:點擊按鈕后,彈出提示框,提示設(shè)定的提示信息
*/
public class ButtonBusinessExample implements IButtonBusinessAction {
/**
* 業(yè)務(wù)按鈕函數(shù)的運行方法
*/
@Override
public String onClick(FunctionContext context, Map<String, Object> args) {
//做一些業(yè)務(wù)相關(guān)的事情
return "這是我業(yè)務(wù)的提示信息";
}
public static void main(String[] args) throws IOException {
DebugHelper helper = new DebugHelper();
helper.init();
//模擬調(diào)試的上下文,例如開發(fā)時想模擬一個客戶對象的上下文,以方便開發(fā)
FunctionContext context = helper.context("object_zBB6O__c", "63fd7a30ffd89f00013c7be3");
Map<String, Object> map = new HashMap<>();
String s = new ButtonBusinessExample().onClick(context, map);
Fx.log.info(s);
}}
后動作
package fx.custom.apl.example.button;
import com.fxiaoke.functions.FunctionContext;
import com.fxiaoke.functions.client.DebugHelper;
import com.fxiaoke.functions.template.IButtonAfterAction;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* 后置處理
*/
public class ButtonAfterExample implements IButtonAfterAction {
@Override
public void after(FunctionContext context, Map<String, Object> args) {
//do something
}
public static void main(String[] args) throws IOException {
DebugHelper helper = new DebugHelper();
helper.init();
//模擬調(diào)試的上下文,例如開發(fā)時想模擬一個客戶對象的上下文,以方便開發(fā)
FunctionContext context = helper.context("object_zBB6O__c", "63fd7a30ffd89f00013c7be3");
Map<String, Object> map = new HashMap<>();
new ButtonAfterExample().after(context, map);
}}