public bool Execute() { if (BaseApplication.MainInstance == null) { //ramane apoi sa le numaram sa fie ok BaseApplication.MainInstance = new BaseApplication(1000); } FlowComponent current = StartNode.GetDefaultNextControl(); ExecutionUnitOutput eo = null; Object dataToken = null; while ((current != null) && (!(current is FlowStop))) { //trecem la urmatorul nod si executam tot ce se poate:d //procesam datele if (current is FlowProcessing) { //eo=(current as ProcessingBlock).ProcessData(dataToken, BaseApplication.MainInstance); //dataToken = (current as ProcessingBlock).ProcessData(dataToken, BaseApplication.MainInstance); //if (dataToken == null) return false; eo = (current as FlowProcessing).ExecutionUnit.Execute(dataToken); dataToken = eo.ObjectOutput; if (dataToken == null) { return(false); } current = current.GetDefaultNextControl(); } else if (current is FlowDecision) { eo = (current as FlowDecision).ExecutionUnit.Execute(dataToken); dataToken = eo.ObjectOutput; bool cond = eo.DecisionOutput; //bool cond = (current as DecisionBlock).EvaluateCondition(dataToken, BaseApplication.MainInstance); //dataToken = (current as DecisionBlock).GetData(dataToken, BaseApplication.MainInstance); if (dataToken == null) { return(false); } if (cond) { current = (current as FlowDecision).GetDefaultNextControl(); } else { current = ((current as FlowDecision).GetNegationNextControl() as FlowComponent); } } } return(true); }