我想在一个业务流程的多个实例之间保留一个持久性实体,以防止出现竞争情况
我创建了一个具有基本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”操作时,列表始终为空。我假设这是因为该实体仅应在编排过程中保留,而不是在多个流程中保留?我找不到任何说明这样的文件。