private ElementExecutionTree CalculateExecutionPlan(IWorkflowElement workflowElement) { var tree = new ElementExecutionTree(); foreach (var element in workflowElement.ToElements) { //plan inner element next elements } return(tree); }
public MyWorkflow(IModel model, string name, Guid guid) { Parameters parameters = new Parameters(GroupingCriterion.Parentage, ProcessingCadence.FirstToken, ProcessingTiming.UponReset, BlockTargets.ArrivalPort, BlockScope.ThisTokenGroup, BlockDuration.Reset, TransitionTo.Complete, TransitionWhen.UponReceipt, ResetCadence.OnLastSiblingNotRunning); //m_rootBlock = (IWorkflowElement)wfeType.GetConstructor(new Type[] { }).Invoke(new object[] { }); m_rootBlock = new FilterBlock(model, name + ".Root", Guid.NewGuid(), 3, parameters); m_RootElements.Add(m_rootBlock); m_rootBlock.Ports["PrimaryOutput"].PortDataPresented += new PortDataEvent(MyWorkflow_PortDataPresented); }