二开插件 - 获取工作流流程图及节点配置信息的方法

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开插件 - 获取工作流流程图及节点配置信息的方法

客户需求: 有客户需要获取流程图设计时信息,并获取流程图中的消息节点是否勾选了发送短信的选项。二开如何实现呢?


解决方法:

1. 根据流程实例ID获取流程图。

此处注意,一定要根据流程图版本Id获取流程图,不能直接到流程图(T_WF_PROCDEF)中获取。

/// <summary>
/// 获取流程实例Id的流程图
/// </summary>
/// <param name="ctx"></param>
/// <param name="procInstId"></param>
/// <returns></returns>
private Process GetProcess(Context ctx, string procInstId)
{
    string procVerId = GetProcVerId(ctx, procInstId);
    return WorkflowModelServiceHelper.GetProcessByVersionId(ctx, procVerId);
}

/// <summary>
/// 根据流程实例Id获取流程版本Id
/// </summary>
/// <param name="ctx"></param>
/// <param name="procInstId"></param>
/// <returns></returns>
private string GetProcVerId(Context ctx, string procInstId)
{
    string sql = "SELECT FVERSIONID FROM T_WF_PROCINST WHERE FPROCINSTID=@FPROCINSTID";
    return DBServiceHelper.ExecuteScalar<string>(ctx, sql, string.Empty, new SqlParam("@FPROCINSTID", DbType.AnsiString, procInstId));
}


2. 查看流程节点Id的方法。

二开插件 - 查看流程图节点Id的方法

https://vip.kingdee.com/article/178895735277545216


3. 根据流程节点Id获取流程节点运行时信息并获取流程节点中配置项的值

/// <summary>
/// 获取指定节点Id的设计时信息
/// </summary>
/// <param name="process"></param>
/// <param name="activityId"></param>
private void GetMessageAction(Process process, int activityId)
{
    var activity = process.Activities.FirstOrDefault(m => m.ActivityId == activityId);
    var messageAction = activity.ActionEvents.FirstOrDefault(m => m is MessageAction) as MessageAction;
    ActionEventContext actionEventContext = new ActionEventContext();
    bool isMailNotice = messageAction.IsMailNotice.GetValue(actionEventContext);//是否发邮件
    bool isSMSNotice = messageAction.IsSMSNotice.GetValue(actionEventContext);//是否发短信
    bool isXunTongNotice = messageAction.IsXunTongNotice.GetValue(actionEventContext);//是否发云之家
}

其它节点动作也可以参考上述代码获取相关属性。

二开插件 - 获取工作流流程图及节点配置信息的方法

客户需求: 有客户需要获取流程图设计时信息,并获取流程图中的消息节点是否勾选了发送短信的选项。二开如何实现呢?解决方法:1. 根据流...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息