2

ワークフローのコード アクティビティでワークフロー インスタンスを取得できませんでした。取得するにはどうすればよいですか? WorkflowEventArgs.WorkflowInstance プロパティを確認しましたが、私のコード アクティビティにはWorkflowEventArgsがありません。代わりにEventArgsがあります。

私がやろうとしていること:

基本的に、キュー内の値を取得するには、ワークフロー キュー データにアクセスする必要があります。上記のURLでは、コードは同じですが、コードアクティビティではありませんか? キューにアクセスする正しい方法は何ですか?

4

2 に答える 2

2

ワークフロー インスタンスの取得から:

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; }
    }
于 2013-04-26T22:11:20.183 に答える
1

私はあなたの質問に少し混乱しています。これは、あなたの望むことですか?

public sealed class GetWorkflowIdActivity : CodeActivity<string>
{
    protected override string Execute(CodeActivityContext context)
    {
        return context.WorkflowInstanceId.ToString();
    }
}
于 2010-08-23T13:03:08.890 に答える