金蝶云K3 Cloud业务预警业务开发总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“金蝶k3cloud业务流程”。
业务预警业务开发总结
最近研究了下业务预警的业务开发,我们有两点需求目前平台还支持不了,1、能本月预警下个月到期的数据;
2、预警结果可以显示明细、也可以显示汇总,甚至希望能显示时间段内的数据
本文档只是个人总结,还有很多不完善的地方希望和大家沟通,相互学习。这里以应收单的业务预警为例 1.BOSIDE中新建预警对象
平台没有提供模板,不过供应链做过,我们直接复制供应链的预警对象就好 预警对象中有5个参数
1、数据源:需要预警的数据来源,可以是单据、基础资料、报表,我这里选择的是应收单
2、预警方案解析插件:
预警方案建立并启动后,后台服务根据预警周期条件,自动执行预警方案,在此过程中,通过预警服务插件进行灵活干预和控制;可以重写类Kingdee.BOS.Core.Warn.PlugIn.AbstractWarnServicePlugIn来实现干预;
2.1 解析消息变量之前事件
在此事件中,可以自定义需要保存到预警消息的关键数据。一般用于报表预警。以下是示例:
///
/// 解析预警消息之前
/// 用途:主要用于报表预警,唯一确定一条报表数据所需要的关键数据是不一定,所有允许自定义
///
///
void BeforeParseWarnMeage(BeforeParseWarnMeageEventArgs e)
{
//添加预警数据关键字段,如以下示例(添加字段名称为FName的关键数据,将保存到预警消息中,以便后续处理使用)
e.KeyValueFieldNames.Add(“FName”);
base.BeforeParseWarnMeage(e);
}
2.2.解析预警条件之后事件
主要用于附加一些额外的过滤条件,适合一些硬编码的条件。以下是示例:
///
/// 触发预警条件解析之后的事件
/// 用途:主要用于添加额外的一些过滤条件
///
///
void AfterWarnConditionParse(AfterWarnConditionParseArgs e)
{
//将客户=‘海格科技’的过滤掉
string filter = “ FCUSTOMERNAME ='海格科技' ”;
if(string.IsNullOrWhiteSpace(e.Filter))
{
e.Filter = filter;
}
else
{
e.Filter = “ AND ” + filter;
}
base.AfterWarnConditionParse(e);
} 2.3.预警执行事件
主要用于修改预警执行结果集合,不建议重写此事件,以下是示例:
///
/// 执行预警解析
/// 用途:主要用于修改执行后的数据集合,不建议重写
///
void ExcuteWarnParse(ExcuteWarnParseEventArgs e)
{
base.ExcuteWarnParse(e);
//将第一个数据中,客户名称改为 海格科技
//数据源是否为报表
if(this.WarnHelper.IsDataSourceReport)
{
e.WarnMeage.WarnObjectSysReportData.Rows[0][“FName”]=“海格科技”;
}
else
{
e.WarnMeage.WarnObjectDynamicObjects[0][“FName”] = “海格科技”;
}
}
2.4.消息解析之后事件
主要用于修改格式化后的预警消息,或者进一步使用自定义变量格式化预警消息
///
/// 解析预警消息之后
/// 用途:主要用于修改格式化后的预警消息,或者进一步使用自定义变量格式化预警消息
///
///
void AfterParseWarnMeage(AfterParseWarnMeageEventArgs e)
{
base.AfterParseWarnMeage(e);
//将自定义变量{FCUSTOMERNAME.Custom} 格式化为 海格科技
for(int i = 0;i
{
MeageEntity item = e.WarnMeage.MeageEntityList[i].MeageEntity as MeageEntity;
if(item!= null)
{
item.Content = item.Content.Replace(“{FCUSTOMERNAME.Custom}”, “海格科技”);
}
}
}
2.5.消息发送之前事件
对发送消息进一步精确控制,以下是示例:
///
/// 发送预警消息之前
/// 针对消息发送的精确控制
///
///
void BeforeSendWarnMeage(BeforeSendWarnMeageEventArgs e)
{
base.BeforeSendWarnMeage(e);
//当消息发送条数大于100时,取消发送
if(e.WarnMeage.MeageEntityList.Count > 100)
{
e.Cancel = true;
}
}
3、客户端插件重写指导说明
在消息中心,或者首页的预警消息功能下面,可以看到预警消息列表。此列表支持预警消息的查看和处理工作,通过预警方案的消息客户端插件重写,可以自定义处理预警消息和查看消息。
同样可以把自己的插件注册进来
重写类:Kingdee.BOS.Core.Warn.PlugIn.AbstractWarnMeagePlugIn 3.1.查看消息
弹出指定的查看界面,如果不重写,则弹出统一的消息查看界面,以下是示例:
///
/// 显示消息
///
public override void ShowWarnMeage(ShowWarnMeageEventArgs e)
{
//根据传过来的关键数据,进行查看
if(e.MsgDataKeyValueList!= null && e.MsgDataKeyValueList.Count()> 0)
{
// DoShow 查看逻辑
}
//标识从插件中查看,这样就不会显示公用的查看界面了
e.IsShowByPlugIn = true;
base.ShowWarnMeage(e);
} 3.2.处理消息
插件根据传递过来的关键数据,进行处理,以下是示例:
///
/// 处理消息
///
public override void ProceWarnMeage(ProceWarnMeageEventArgs e)
{
if(e.MsgDataKeyValueList!= null && e.MsgDataKeyValueList.Count()> 0)
{
string meage = string.Empty;
meage = DoProce(e.MsgDataKeyValueList);//自定义处理逻辑
//插件中显示了提示消息,公共的提示消息就不显示了
e.Result.IsShowMeage = false;
//标识已被插件处理
e.IsProceByPlugin = true;
this.ParentView.ShowMeage(meage);
}
base.ProceWarnMeage(e);
}
4、预警条件窗体:
第一个是平台的模板,我们也可以继承这个模板自定义我们自己需要的预警条件,预警条件是一个单据;
5、预警方案插件重写指导说明
预警方案维护界面中,对消息的配置支持变量,而变量是根据对应预警对象数据源的元数据构成的。如果开发者需要精简一些无用的变量,则可以通过重写预警方案插件来实现。
重写类:Kingdee.BOS.Core.Warn.PlugIn.AbstractWarnSolutionEditPlugIn 5.1
设置预警条件之前事件
更改预警消息变量来源,适用于精简一些无用的字段变量;
注意,需与下面的设置预警变量之前事件配套使用,否则会出错; 以下是示例:
///
/// 预警条件界面,在设置预警条件字段之前
///
public override void BeforeSetFilterFields(BeforeSetFilterFieldsEventArgs e)
{
//将字段名为FName的字段移除预警条件字段集合 for(int i = e.FilterFields.Count1;i >= 0;i--)
{
WarnMeageVeriable veriable = e.Veriablelist[i];
if(veriable.FiledName.ToUpperInvariant()== “FName”)
{
e.Veriablelist.RemoveAt(i);
}
}
base.BeforeSetVeriableList(e);
} 预警对象建立好后,我们需要用administrator进入我们的系统,然后设置预警方案
预警方案的新增界面,填好编号和名称,选择预警级别,然后选择自己刚刚在BOS里设置的预警对象,选择预警对象好会默认把BOS里配置的预警条件窗体携带到这里的预警条件下,同时会加载消息设置的东西
然后设置预警周期
设置好保存就可以了,最后设置你的消息提示;
明细表体和明细正文就是我们要设置的明细消息提示、用{}框起来需要提示的字段,这里的字段都是你预警对象数据源里的字段,保存这个预警方案,预警方案就算设置好了,然后启动这个预警方案,就会自动执行,当然你也可以手动执行验证; 执行后到预警执行情况列表里查看就行,同时也会发消息到对应的接收人