我无法在我的工作流的代码活动中获取工作流实例。如何获取它?我确实检查了WorkflowEventArgs.WorkflowInstance 属性,但在我的代码活动中我没有WorkflowEventArgs。相反,我有EventArgs。
我正在尝试做的事情:
基本上,我需要访问工作流队列数据以获取队列中的值。在上面的 url 中,代码是相同的,但它不在代码活动中?访问队列的正确方法是什么?
我无法在我的工作流的代码活动中获取工作流实例。如何获取它?我确实检查了WorkflowEventArgs.WorkflowInstance 属性,但在我的代码活动中我没有WorkflowEventArgs。相反,我有EventArgs。
我正在尝试做的事情:
基本上,我需要访问工作流队列数据以获取队列中的值。在上面的 url 中,代码是相同的,但它不在代码活动中?访问队列的正确方法是什么?
public sealed class LogState : CodeActivity
{
protected override void Execute(CodeActivityContext context)
{
Guid instanceId = context.WorkflowInstanceId;
var connection = ConfigurationManager.ConnectionStrings["ConnectionString"];
WorkflowInstanceProxy proxy = context.GetExtension<WorkflowInstanceInfo>().GetProxy();
//...
}
protected override void CacheMetadata(CodeActivityMetadata metadata)
{
base.CacheMetadata(metadata);
metadata.AddDefaultExtensionProvider<WorkflowInstanceInfo>(() => new WorkflowInstanceInfo());
}
public class WorkflowInstanceInfo : IWorkflowInstanceExtension
{
WorkflowInstanceProxy proxy;
public IEnumerable<object> GetAdditionalExtensions()
{
yield break;
}
public void SetInstance(WorkflowInstanceProxy instance)
{
this.proxy = instance;
}
public WorkflowInstanceProxy GetProxy() { return proxy; }
}
我对你的问题有点困惑。这是你想要的吗?
public sealed class GetWorkflowIdActivity : CodeActivity<string>
{
protected override string Execute(CodeActivityContext context)
{
return context.WorkflowInstanceId.ToString();
}
}