持久实体是否仅意味着持久存在于当前编排中?

时间:2019-08-21 19:26:08

标签: azure-durable-functions

我想在一个业务流程的多个实例之间保留一个持久性实体,以防止出现竞争情况

我创建了一个具有基本get / add / remove的持久实体,其中包含状态的List属性

    public class TestEntity
    {
        [FunctionName(nameof(TestEntity))]
        public static void Run([EntityTrigger] IDurableEntityContext ctx, ILogger log)
        {
            var currentValue = ctx.GetState<List<string>>();
            string fileName;

            if (ctx.IsNewlyConstructed)
            {
                currentValue = new List<string>();
                ctx.SetState(currentValue);
            }

            switch (ctx.OperationName)
            {
                case "get":
                    break;
                case "add":
                    fileName = ctx.GetInput<string>();
                    currentValue.Add(fileName);
                    ctx.SetState(currentValue);
                    break;
                case "remove":
                    fileName = ctx.GetInput<string>();
                    currentValue.Remove(fileName);
                    ctx.SetState(currentValue);
                    break;
            }

            ctx.Return(currentValue);
        }
    }

我也使用基于类的方式进行了上述操作,并且得到了相同的结果。我有一个http触发器,需要一个有效负载并开始业务流程。当我再次点击http触发器时,它将通知持久实体,因此当我尝试使用“ get”操作时,列表始终为空。我假设这是因为该实体仅应在编排过程中保留,而不是在多个流程中保留?我找不到任何说明这样的文件。

0 个答案:

没有答案