跳到主要内容

扩展点

DispatcherExtension是插件的扩展点接口,它继承了PF4J的ExtensionPoint接口:

public interface DispatcherExtension extends ExtensionPoint {
String handle(Resource resource, DispatchInfo dispatchInfo);

String getName();

default String getIcon() { return null; }

default String getSchema() { return null; }
}

它包含了以下方法:

getName()

getName() 方法用来返回插件的名称,它同时将定义该插件适配的资源协议名称,亦即任务配置中的resourceProtocol字段。Rill Flow将通过resourceProtocol与任务执行器的名称二者的对应关系来为任务选择对应的执行器。

handle()

handle() 方法即任务处理方法,它是任务处理扩展插件的核心,当适配该执行器的任务被Rill Flow分发时,Rill Flow会调用对应执行器的handle()方法来完成该任务的处理。

handle()方法共包含两个参数:

  • resource:Resource类型,包含有resourceName、schemeProtocol及schemeValue字段,用来将task配置的resourceName及解析后的结构传递到执行器中供执行器使用。
  • dispatchInfo:DispatchInfo类型,包含了以下字段:
    • executionId:本次工作流执行的执行ID
    • taskInfo:TaskInfo类型,包含了当前任务的详情信息,包括任务名称、任务状态、任务的定义信息等,具体可参看该类型的代码注释及插件示例代码。

getIcon()

用来给管理后台页面提供任务的展示图标,默认实现返回空,将使用默认图标展示。

如果想要自定义展示图标,那么实现该方法,并返回icon的base64编码字符串。

getSchema()

用来给管理后台页面提供定义该协议的任务时,需要展示和填写的表单格式,具体格式可以参看:json-schema

管理后台页面在创建该协议的任务时,会解析插件返回的schema字符串,并在必要参数之后展示schema定义的表格,并将用户填写信息放置在task定义yaml的parameters字段中,在handle()方法中,你可以通过dispatchInfo.getTaskInfo().getTask().getParameters()方法获取用户填写的参数。