公共模块扩展
Provider
dec.provider.schedule
注册新的步骤
方法
registerTaskStep(config[, index])
参数
config:Object,必选,步骤对象。包含属性text为显示的文本、属性value为标志符、属性cardType为新增步骤的组件shortcut。
index:Number,可选,插入位置。数组进行splice操作的起始位置,不填则插入到最后一步。
示例
// 第一个参数为步骤对象
// 第二个参数为插入的位置
BI.config("dec.provider.schedule", function (provider) {
provider.registerTaskStep({
text: BI.i18nText("新增步骤"),
value: "plugin_step",
cardType: "dec.schedule.task.plugin"
}, 1);
});
页面实现示例
!(function () {
var Plugin = BI.inherit(BI.Widget, {
props: {
baseCls: ""
},
render: function () {
return {
type: "bi.label",
text: "新增步骤"
};
},
/**
* 校验函数,可选
* 点击下一步或者可以保存时执行,回调验证结果
* @param callback
*/
validation: function (callback) {
callback(true);
},
/**
* 取值函数,必选
* 返回的值会与当前任务的值this.model.currTask通过BI.extend合并
* @returns {{}}
*/
getValue: function () {
return {};
}
});
BI.shortcut("dec.schedule.task.plugin", Plugin);
})();
从上述可以看出来,添加任务的过程,有一个全局的model用来保存当前已经设置值。可以通过this.model.currTask获取和修改当前编辑任务的值。
效果
新增调度类型
方法
registerDispatcher(dispatcher[, handings])
参数
dispatcher:Object,必选,调度对象类型。包含属性text为显示的文本、属性value为标志符、属性cardType为新增调度类型的组件shortcut。
handings:Array,可选,新增对象类型的处理方式。处理方式定义参考下述新增文件处理方式,不填则默认不注册处理方式,后续可以通过registerHandingWay方式新增处理方式。
示例
// 第一个参数为新增调度对象
// 第二个参数为新增调度对象的处理方式
BI.config("dec.provider.schedule", function (provider) {
provider.registerDispatcher({
value: "plugin",
text: "新增类型",
cardType: "dec.schedule.task.dispatcher.plugin"
}, []);
});
页面的实现同新增一个步骤, 需要实现必选函数getValue,可选函数validation。
效果
新增文件处理方式
方法
registerHandingWay(config, scopes)
参数
config:Object,必选,处理方式。包含属性text为显示的文本、属性value为与后台同步的actionName、属性cardType为新增文件处理方式的组件shortcut。可选属性actions在只显示一种处理方式实际上有多个action时可用,实现参考客户端通知。需要实现类似于定时计算那种不可取消的效果,设置可选属性selected和forceSelected为true。
scopes:Array,必选,处理方式作用范围。此参数必须设置,否则不会注册到任何一种类型的处理方式中,有效值为内置三种(示例中给出了三种内置值)以及插件注册的调度对象类型(即registerDispatcher方法dispatcher参数的value值)。
示例
// 第一个参数为新增处理方式对象
// 第二个参数为作用范围数组,有效值为内置三种以及插件的调度对象类型
BI.config("dec.provider.schedule", function (provider) {
provider.registerHandingWay({
text: "新增处理方式",
value: "com.fr.xxxx", // 插件的actionName
cardType: "dec.schedule.task.file.handling.plugin",
actions: [] // 一种处理方式如果有多个action
}, [DecCst.Schedule.TaskType.DEFAULT, DecCst.Schedule.TaskType.REPORT, DecCst.Schedule.TaskType.BI]);
});
注意:不要注册runType进去,目前有对runType做兼容处理,后期将逐步移除对runType的支持。
页面实现示例
!(function () {
var Plugin = BI.inherit(BI.Widget, {
props: {
baseCls: ""
},
render: function () {
return {
type: "bi.label",
text: "新增类型"
};
},
/**
* 校验函数,可选
* 返回值当前处理方式是否通过校验
* @returns {boolean}
*/
validation: function () {
return true;
},
/**
* 取值函数,必选
* 返回的值放到outputActionList中
* @returns {{}}
*/
getValue: function () {
return {};
}
});
BI.shortcut("dec.schedule.task.file.handling.plugin", Plugin);
})();
新增附件存档方式
方法
registerTaskAttached(config, scopes)
参数
config:Object,必选,处理方式。包含属性text为显示的文本、属性value为与后台交互的值。
scopes:Array,必选,处理方式作用范围。此参数必须设置,否则不会注册到任何一种类型的处理方式中,有效值为示例中给出了两种内置值以及插件注册的调度对象类型(即registerDispatcher方法dispatcher参数的value值)。
示例
// 第一个参数为新增附件存档方式
// 第二个参数为作用范围数组
BI.config("dec.provider.schedule", function (provider) {
provider.registerTaskAttached({
value: 11,
text: "pluginText"
}, [DecCst.Schedule.TaskType.REPORT, DecCst.Schedule.TaskType.BI]);
});
更新记录
2019.10.10:使用provider实现插件注册
2019.11.12:新增附件存档方式