Dynamics crm 如何在工作流中获取当前日期(Dynamics CRM 2016)

Dynamics crm 如何在工作流中获取当前日期(Dynamics CRM 2016),dynamics-crm,crm,microsoft-dynamics,dynamics-crm-2016,Dynamics Crm,Crm,Microsoft Dynamics,Dynamics Crm 2016,我想问一下如何在工作流中获取当前日期 例如:- 我有一个名为(检查日期)的字段,我想比较一下这个字段是否等于当前日期,然后进入流程 我将创建等待条件,直到当前日期=检验日期,然后执行我的流程 如何在工作流中获取当前日期?在“指定条件”窗口中选择“检验日期”字段,条件为“大于或等于”。在Form Assistant展开选取列表“查找”中,在“本地值”下选择选项“处理”。在拾取列表下方的框中显示“执行时间”。选择它,您就完成了。要回答OP关于如何在工作流中获取当前日期的问题,简短的回答是您不能。正如

我想问一下如何在工作流中获取当前日期

例如:-

我有一个名为(检查日期)的字段,我想比较一下这个字段是否等于当前日期,然后进入流程

我将创建等待条件,直到当前日期=检验日期,然后执行我的流程


如何在工作流中获取当前日期?

在“指定条件”窗口中选择“检验日期”字段,条件为“大于或等于”。在Form Assistant展开选取列表“查找”中,在“本地值”下选择选项“处理”。在拾取列表下方的框中显示“执行时间”。选择它,您就完成了。

要回答OP关于如何在工作流中获取当前日期的问题,简短的回答是您不能。正如Henk van Boeijen所描述的,在一些单独的步骤中可以获得当前日期

在我工作的地方,我们实现了一个非常基本的自定义工作流活动,它只返回当前日期和时间

public class CurrentDateWorkflow : CodeActivity
{
    protected override void Execute(CodeActivityContext executionContext)
    {
        try
        {
            // Create the context and tracing service
            IExecutionContext context = executionContext.GetExtension<IExecutionContext>();
            IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
            IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
            ITracingService tracingService = executionContext.GetExtension<ITracingService>();
            if (tracingService == null)
                throw new InvalidPluginExecutionException("Failed to retrieve tracing service.");

            tracingService.Trace("Entered CurrentDateWorkflow.Execute(), Activity Instance Id: {0}, Workflow Instance Id: {1}",
                executionContext.ActivityInstanceId,
                executionContext.WorkflowInstanceId);

            var DatePartOnly = InputDatePartOnly.Get(executionContext);

            // Set output parameters
            if (DatePartOnly)
                CurrentDate.Set(executionContext, DateTime.UtcNow.Date);
            else
                CurrentDate.Set(executionContext, DateTime.UtcNow);

            // All done
            tracingService.Trace("CurrentDateWorkflow.Execute() Complete. Activity Instance Id: {0}, Workflow Instance Id: {1}",
                executionContext.ActivityInstanceId,
                executionContext.WorkflowInstanceId);
        }
        catch (Exception ex)
        {
            throw new InvalidPluginExecutionException(String.Format("An error occurred in the {0} plug-in.",
                    this.GetType().ToString()),
                    ex);
        }
    }

    [Output("Current Date")]
    public OutArgument<DateTime> CurrentDate { get; set; }

    [Input("Date Only")]
    [Default("False")]
    public InArgument<bool> InputDatePartOnly { get; set; }
}
公共类CurrentDateWorkflow:CodeActivity
{
受保护的覆盖无效执行(CodeActivityContext executionContext)
{
尝试
{
//创建上下文和跟踪服务
IExecutionContext context=executionContext.GetExtension();
IOOrganizationServiceFactory服务工厂=executionContext.GetExtension();
IOOrganizationService=serviceFactory.CreateOrganizationService(context.UserId);
ITracingService tracingService=executionContext.GetExtension();
如果(tracingService==null)
抛出新的InvalidPlugineExecutionException(“检索跟踪服务失败”);
tracingService.Trace(“输入CurrentDateWorkflow.Execute(),活动实例Id:{0},工作流实例Id:{1}”,
executionContext.ActivityInstanceId,
executionContext.WorkflowInstanceId);
var DatePartOnly=InputDatePartOnly.Get(executionContext);
//设置输出参数
如果(仅限日期部分)
CurrentDate.Set(executionContext,DateTime.UtcNow.Date);
其他的
CurrentDate.Set(executionContext,DateTime.UtcNow);
//全部完成
tracingService.Trace(“CurrentDateWorkflow.Execute()Complete.Activity实例Id:{0},工作流实例Id:{1}”,
executionContext.ActivityInstanceId,
executionContext.WorkflowInstanceId);
}
捕获(例外情况除外)
{
抛出新的InvalidPluginExecutionException(String.Format)({0}插件中发生错误。“,
this.GetType().ToString()),
ex);
}
}
[输出(“当前日期”)]
公共输出参数CurrentDate{get;set;}
[输入(“仅限日期”)]
[默认值(“假”)]
公共InArgument InputDatePartOnly{get;set;}
}

我尝试了此解决方案,但不幸的是,它不起作用。非常感谢您的帮助:)。不,执行时间指的是流程的第一次执行,等待条件不考虑当前时间。非常感谢您的回答,您的意思是我无法完成,但在自定义工作流中。?再次感谢。