目录
1. 流程撤回、拒绝和回退调用自定义函数
1.1 工作流【撤销】回调钩子
1.2 撤销【回退】回调钩子
1.3 工作流【拒绝】回调钩子
1.4 回调钩子在业务系统中的调用示例
2. 自定义审批方式、自定义审批节点名称
1.流程撤回、拒绝和回退调用自定义函数
1.1工作流【撤销】回调钩子
使用方式:把该方法放置到XXX模型的Action下面,或@Fun(XXX.MODEL_MODEL)
触发方式:当流程实例被撤销时
调用入口:pro.shushi.pamirs.workflow.app.core.service.impl.WorkflowInstanceServiceImpl#undoInstance
/**
* XXX为当前流程触发方式为模型触发时对应的触发模型、
* 对应返回不影响流程上下文
* @param data 入参为触发时的业务数据,数据的JsonString
* @return
*/
@Function
public XXX recall(String data) {
// TODO: 根据实际的业务逻辑把data转换为对象
WorkRecord workRecord = JsonUtils.parseObject(data, new TypeReference<WorkRecord>(){});
// TODO: 增加自定义业务逻辑
return new XXX();
}
1.2撤销【回退】回调钩子
使用方式:把该方法放置到XXX模型的Action下面,或@Fun(XXX.MODEL_MODEL)
触发方式:流程待办进行回退操作时
调用入口:pro.shushi.pamirs.workflow.app.core.service.operator.ApprovalFallbackOperatorService
/**
* XXX为当前流程触发方式为模型触发时对应的触发模型
* 对应返回不影响流程上下文
* @param data 入参为触发时的业务数据,数据的JsonString
* @return
*/
@Function
public XXX fallBack(String data) {
// TODO: 根据实际的业务逻辑把data转换为对象
WorkRecord workRecord = JsonUtils.parseObject(data, new TypeReference<WorkRecord>(){});
// TODO: 增加自定义业务逻辑
return new XXX();
}
1.3工作流【拒绝】回调钩子
使用方式:把该方法放置到XXX模型的Action下面,或@Fun(XXX.MODEL_MODEL)
触发方式:流程待办进行拒绝操作时
调用入口:pro.shushi.pamirs.workflow.app.core.service.operator.ApprovalFallbackOperatorService
/**
* XXX为当前流程触发方式为模型触发时对应的触发模型
* 对应返回不影响流程上下文
* @param data 入参为触发时的业务数据,数据的JsonString
* @return
*/
@Function
public XXX reject(String data) {
// TODO: 根据实际的业务逻辑把data转换为对象
WorkRecord workRecord = JsonUtils.parseObject(data, new TypeReference<WorkRecord>(){});
// TODO: 增加自定义业务逻辑
return new XXX();
}
1.4回调钩子在业务系统中的调用示例
@Function(summary = "发起的流程撤销时会自动调用此方法")
@Function.Advanced(displayName = "撤销流程")
public PurchaseProjectProxy recall(String data) {
Object tempObj = BeanDefinitionUtils.findFirst(ClientDataConverter.class).out(PurchaseProjectProxy.MODEL_MODEL, JsonUtils.parseMap(data));
PurchaseProjectProxy proxy = BeanDefinitionUtils.getBean(ClientDataConverter.class)
.<PurchaseProjectProxy>in(new ModelComputeContext(), PurchaseProjectProxy.MODEL_MODEL, tempObj);
PurchaseProject purchaseProject = service.recall(ArgUtils.convert(PurchaseProjectProxy.MODEL_MODEL, PurchaseProject.MODEL_MODEL, proxy));
return ArgUtils.convert(PurchaseProject.MODEL_MODEL, PurchaseProjectProxy.MODEL_MODEL, purchaseProject);
}
2.自定义审批方式、自定义审批节点名称
【注意】 流程自定义函数需指定:category = FunctionCategoryEnum.CUSTOM_DESIGNER
@Model.model(审批模型.MODEL_MODEL)
@Component
public class 审批模型Action {
/**
* 自定义审批方式
* @param json json为业务数据,可用JsonUtils转换
* @return 返回参数:
* COUNTERSIGN_ONEAGREE_ONEREJUST 或签(一名审批人同意或拒绝即可)
* COUNTERSIGN_ALLAGREE_ONEREJUST 会签(需所有审批人同意才为同意,一名审批人拒绝即为拒绝)
* COUNTERSIGN_ONEAGREE_ALLREJUST 会签(一名审批人同意即为同意,需所有审批人拒绝才为拒绝)
* SINGLE 单人
*/
@Function
@Function.Advanced(category = FunctionCategoryEnum.CUSTOM_DESIGNER, displayName = "测试自定义审批类型")
public WorkflowSignTypeEnum signType(String json) {
// TODO: 增加自定义业务逻辑
return WorkflowSignTypeEnum.COUNTERSIGN_ONEAGREE_ONEREJUST;
}
/**
* 自定义审批节点名称
* @return
*/
@Function
@Function.Advanced(category = FunctionCategoryEnum.CUSTOM_DESIGNER, displayName = "测试自定义审批名称")
public String customApprovalName() {
return UUID.randomUUID().toString();
}
}
Oinone社区 作者:望闲原创文章,如若转载,请注明出处:https://doc.oinone.top/backend/4542.html
访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验