You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dynamics365 SLA KPI自定义时间计算插件FetchCalendar方法求助

Dynamics 365 SLA自定义时间计算插件FetchCalendar方法实现

你当前的业务逻辑是根据案例表new_country选项值,运行时动态覆写SLA计算使用的工作日历,FetchCalendar方法的核心是从系统中查询匹配标识的日历记录ID,具体实现如下:

方法逻辑说明

方法接收两个入参:

  • 日历匹配键:对应你提前在系统中创建的IST、PST时区日历的唯一标识
  • 组织服务实例:用于执行Dataverse数据查询
    返回值为Guid类型的日历ID,可直接赋值给calendarId变量完成日历覆写。

完整实现代码

private Guid FetchCalendar(string calendarKey, IOrganizationService service)
{
    // 若直接用日历名称匹配,将下方条件字段替换为name,值与你传入的IST_CALENDAR、PST_CALENDAR保持一致即可
    var fetchXml = $@"
    <fetch top='1' no-lock='true'>
        <entity name='calendar'>
            <attribute name='calendarid'/>
            <filter>
                <condition attribute='new_calendarkey' operator='eq' value='{calendarKey}'/>
                <condition attribute='statecode' operator='eq' value='0'/>
            </filter>
        </entity>
    </fetch>";

    var result = service.RetrieveMultiple(new FetchExpression(fetchXml));
    return result.Entities.Count > 0 ? result.Entities[0].GetAttributeValue<Guid>("calendarid") : Guid.Empty;
}

落地注意事项

  • 若未给calendar表新增自定义标识字段,可直接使用系统自带的name字段做匹配,将fetchXml中条件的new_calendarkey替换为name即可,需保证系统内日历名称和代码中传入的键值完全一致
  • 要加空值兜底逻辑:如果方法返回空GUID,默认回退到系统配置的默认SLA日历,避免因找不到对应日历导致SLA计算流程报错
  • 提前确认对应时区的日历已完成工作时间、假期规则配置,且插件运行账号拥有calendar表的读取权限,避免权限不足导致查询失败
  • 插件需按照SLA自定义计算的要求注册到对应消息步骤,保证覆写逻辑在SLA时间计算前执行

内容的提问来源于stack exchange,提问作者AjaV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 10:39:27