繁体   English   中英

如何确定CRM 2011中的工作流模式?

[英]How to determine the Workflow Mode in the CRM 2011?

我想确定在Microsoft CRM 2011中如何启动(后台/异步)或(实时/按需)工作流? 在OOB工作流程条件中还是在自定义工作流程活动中?

基于以下链接,我可以看到Microsoft在CRM 2013 SDK中引入了新属性( IWorkflowContext.WorkflowMode )来公开该属性。 我想要CRM 2011中的相同信息。

http://msdn.microsoft.com/zh-cn/library/microsoft.xrm.sdk.workflow.iworkflowcontext.workflowmode(v=crm.6).aspx

我认为无法在工作流设计器中区分按需工作流和触发工作流。

在自定义工作流程活动中,如果工作流程是由触发器启动的,则只有Target输入参数:

var context = activityContext.GetExtension<IWorkflowContext>();
if (context.InputParameters.Contains("Target"))
{
    // Started by a trigger
}
else
{
    // Started on demand
}

除此之外,您还可以通过Target的类型确定哪种触发器启动了工作流程。 此信息在context.MessageName中也可用,如果有更新消息,则包含字符串“ Update”。

if (context.MessageName == "Update")
    // this is an update message
var context = activityContext.GetExtension<IWorkflowContext>();
if (context.InputParameters.Contains("Target"))
{
    if (context.InputParameters["Target"].GetType() == typeof(Entity))
    {
        // create and update are Entity
    }
    else if (context.InputParameters["Target"].GetType() == typeof(EntityReference))
    {
        // delete and some other operations are EntityReference
    }       
}
else
{
    // Started on demand
}

可以通过Target包含哪些属性来确定更新了哪些特定字段。
这可用于确定哪个字段触发了工作流。
如果创建消息触发了工作流程,则Target将包含所有字段(用户输入的字段)。 要确定工作流是由字段更新触发的,可以将context.MessageName与检查Target包含的属性结合使用。

您寻求的功能在CRM 2011中不存在IWorkflowContext.WorkflowMode所有工作流都是异步运行的,因此不需要IWorkflowContext.WorkflowMode

您不能使CRM 2011同步运行OOTB工作流。 如果要在交易过程中执行代码(CRM 2013可以使用同步工作流执行的方式),则必须在插件中编写逻辑代码。

我认为您可以通过在实体上添加“隐藏”字段并创建几个填充该字段的“处理程序”工作流,然后触发“实际”工作流来实现您的目标。

步骤1.在您的实体上创建一个字段以保存一个值,该值指示发起者

步骤2.将“实际”工作流程创建为子流程

步骤3.创建一个按需(仅)工作流:
一种。 在“启动器”字段中的实体上设置一个值,指示工作流是手动运行的。
b。 调用子工作流程

步骤4.创建一个未选择按需选择的工作流:
一种。 在“启动器”字段中的实体上设置一个值,以指示工作流程已自动化。
b。 调用子工作流程

步骤5.显示结果
一种。 创建一个显示该值的“管理员”表单和/或,
b。 将字段隐藏在用户表单上,并根据需要通过js显示和/或,
C。 创建一个包含显示此字段的视图和/或,
d。 创建包含此字段的报告和/或,
e。 检查代码中此字段的值

除非有特定值,否则该字段将不会包含在用户表单或视图中。

通过使用自定义字段并通过“处理程序”工作流填充它,您将能够实现OOB目标。 (也就是说,如果您考虑使用Web GUI创建自定义字段和工作流程“ OOB”。)

通过以编程方式检查此字段的值,您将实现您的“自定义工作流”目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM