本文整理汇总了C#中WorkflowContext.GetStateFor方法的典型用法代码示例。如果您正苦于以下问题:C# WorkflowContext.GetStateFor方法的具体用法?C# WorkflowContext.GetStateFor怎么用?C# WorkflowContext.GetStateFor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorkflowContext
的用法示例。
在下文中一共展示了WorkflowContext.GetStateFor方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: IsExpired
private bool IsExpired(WorkflowContext workflowContext, ActivityContext activityContext) {
DateTime started;
if (!workflowContext.HasStateFor(activityContext.Record, "StartedUtc")) {
workflowContext.SetStateFor(activityContext.Record, "StartedUtc", started = _clock.UtcNow);
}
else {
started = workflowContext.GetStateFor<DateTime>(activityContext.Record, "StartedUtc");
}
var amount = activityContext.GetState<int>("Amount");
var type = activityContext.GetState<string>("Unity");
return _clock.UtcNow > When(started, amount, type);
}
示例2: OnActivityExecuted
public override void OnActivityExecuted(WorkflowContext workflowContext, ActivityContext activityContext) {
// activity records pointed by the executed activity
var outboundActivities = workflowContext.GetOutboundTransitions(activityContext.Record);
// if a direct target of a Branch Activity is executed, then suppress all other direct waiting activities
var childBranches = outboundActivities
.Where(x => x.DestinationActivityRecord.Name == this.Name)
.ToList();
foreach (var childBranch in childBranches) {
var branchesState = workflowContext.GetStateFor<string>(childBranch.DestinationActivityRecord, "Branches");
var branches = GetBranches(branchesState);
branches = branches.Union(new[] { GetTransitionKey(childBranch)}).Distinct();
workflowContext.SetStateFor(childBranch.DestinationActivityRecord, "Branches", String.Join(",", branches.ToArray()));
}
}
示例3: Execute
public override IEnumerable<LocalizedString> Execute(WorkflowContext workflowContext, ActivityContext activityContext) {
// wait for all incoming branches to trigger the Execute before returning the result
var branchesState = workflowContext.GetStateFor<string>(activityContext.Record, "Branches");
if (String.IsNullOrWhiteSpace(branchesState)) {
yield break;
}
var branches = GetBranches(branchesState);
var inboundActivities = workflowContext.GetInboundTransitions(activityContext.Record);
var done = inboundActivities
.All(x => branches.Contains(GetTransitionKey(x)));
if(done) {
yield return T("Done");
}
}
示例4: IsExpired
private bool IsExpired(WorkflowContext workflowContext, ActivityContext activityContext) {
DateTime started;
if (!workflowContext.HasStateFor(activityContext.Record, "StartedUtc")) {
var dateString = activityContext.GetState<string>("Date");
var date = _dateServices.ConvertFromLocalizedString(dateString);
started = date ?? _clock.UtcNow;
workflowContext.SetStateFor(activityContext.Record, "StartedUtc", started);
}
else {
started = workflowContext.GetStateFor<DateTime>(activityContext.Record, "StartedUtc");
}
var amount = activityContext.GetState<int>("Amount");
var type = activityContext.GetState<string>("Unity");
return _clock.UtcNow > When(started, amount, type);
}
示例5: PopNextWatcherId
private int PopNextWatcherId(WorkflowContext workflowContext, ActivityContext activityContext)
{
TrySetupWatcherIdsState(workflowContext, activityContext);
var watcherIdsSerialized = workflowContext.GetStateFor<string>(activityContext.Record, _stateKey);
var split = watcherIdsSerialized.Split(new[] { ',' }, 2, StringSplitOptions.RemoveEmptyEntries);
if (split.Length == 0) return 0; // No more IDs
if (split.Length == 1)
{
workflowContext.SetStateFor(activityContext.Record, _stateKey, string.Empty);
}
else
{
workflowContext.SetStateFor(activityContext.Record, _stateKey, split[1]);
}
return int.Parse(split[0]);
}