public static IScpWorkflowBuilder UpdateAndTrack ( IScpWorkflowBuilder builder, IReadOnlyList <int> seeds, bool mergeWithPrev, IScpWorkflowTracker tracker ) { IEntity <IScpWorkflow> curWorkflowEntity = builder.Entity; foreach (var seed in seeds) { tracker.TrackItem(curWorkflowEntity.Value); curWorkflowEntity = Entity.Make ( guid: curWorkflowEntity.Guid.Add(seed), val: curWorkflowEntity.Value.Step(seed) ); } return(new ScpWorkflowBuilderImpl( guid: builder.Guid.Add(seeds), inputEntities: InputEntityOptions(builder, mergeWithPrev), entity: curWorkflowEntity, seeds: mergeWithPrev ? builder.Seeds.Concat(seeds).ToList() : seeds.ToList() )); }
public static IReadOnlyDictionary <string, IEntity> InputEntityOptions(IScpWorkflowBuilder builder, bool mergeWithPrev) { return(mergeWithPrev ? builder.InputEntities : builder.ToEntityDictionary()); }
public static IScpWorkflowBuilder Update ( IScpWorkflowBuilder builder, IReadOnlyList <int> seeds, bool mergeWithPrev ) { return(new ScpWorkflowBuilderImpl( guid: builder.Guid.Add(seeds), inputEntities: InputEntityOptions(builder, mergeWithPrev), entity: seeds.Aggregate ( builder.Entity, (current, seed) => { var newWorkflow = Entity.Make( guid: builder.Guid.Add(seed), val: current.Value.Step(seed) ); return newWorkflow; } ), seeds: mergeWithPrev?builder.Seeds.Concat(seeds).ToList() : seeds.ToList() )); }
public static IReadOnlyDictionary <string, IEntity> ToEntityDictionary(this IScpWorkflowBuilder sorterCompParaPoolWorkflowBuilder) { var dict = new Dictionary <string, IEntity>(); dict[SorterCompParaPoolWorkflowParts.AllParts.ToString()] = sorterCompParaPoolWorkflowBuilder.Entity; return(dict); }