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

时间:2016-09-04 05:10:19

标签: dynamics-crm crm microsoft-dynamics dynamics-crm-2016

我会询问如何在工作流程中获取当前日期。?

例如: -

我有一个名为(检查日期)的字段我想比较这个字段,如果它等于当前日期然后进入该过程。

我将创建等待条件,等待当前日期=检查日期,然后将完成我的过程。

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

要回答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; }
}