private string ProcessFlowDecision(DecisionFlowItem decisionItem) { try { FireFlowItemInProgess(decisionItem); // For a decision diagram evaluate each of the conditions in order left, bottom, right and take a branch as soon as a true condition is found. if (decisionItem.LeftConnection != null && decisionItem.LeftConnection.DestinationFlowItemId != null && !String.IsNullOrEmpty(decisionItem.LeftConnection.Condition)) { bool result = m_pythonEngine.EvaluateAs <bool>(decisionItem.LeftConnection.Condition); //FireFlowDebugMessage("Decision (left): " + decisionItem.LeftConnection.Condition + " = " + result + CRLF); if (result) { return(decisionItem.LeftConnection.DestinationFlowItemId); } } if (decisionItem.BottomConnection != null && decisionItem.BottomConnection.DestinationFlowItemId != null && !String.IsNullOrEmpty(decisionItem.BottomConnection.Condition)) { bool result = m_pythonEngine.EvaluateAs <bool>(decisionItem.BottomConnection.Condition); //FireFlowDebugMessage("Decision (bottom): " + decisionItem.BottomConnection.Condition + " = " + result + CRLF); if (result) { return(decisionItem.BottomConnection.DestinationFlowItemId); } } if (decisionItem.RightConnection != null && decisionItem.RightConnection.DestinationFlowItemId != null && !String.IsNullOrEmpty(decisionItem.RightConnection.Condition)) { bool result = m_pythonEngine.EvaluateAs <bool>(decisionItem.RightConnection.Condition); //FireFlowDebugMessage("Decision (right): " + decisionItem.RightConnection.Condition + "= " + result + CRLF); if (result) { return(decisionItem.RightConnection.DestinationFlowItemId); } } throw new ApplicationException("A downstream flow connection could not be deterimed from decision flow item with id " + decisionItem.FlowItemId + "."); } catch (Exception excp) { logger.Error("Exception SIPFlow ProcessFlowDecision. " + excp.Message); throw excp; } }
private string ProcessFlowDecision(DecisionFlowItem decisionItem) { try { FireFlowItemInProgess(decisionItem); // For a decision diagram evaluate each of the conditions in order left, bottom, right and take a branch as soon as a true condition is found. if (decisionItem.LeftConnection != null && decisionItem.LeftConnection.DestinationFlowItemId != null && !String.IsNullOrEmpty(decisionItem.LeftConnection.Condition)) { bool result = m_pythonEngine.EvaluateAs<bool>(decisionItem.LeftConnection.Condition); //FireFlowDebugMessage("Decision (left): " + decisionItem.LeftConnection.Condition + " = " + result + CRLF); if (result) { return decisionItem.LeftConnection.DestinationFlowItemId; } } if (decisionItem.BottomConnection != null && decisionItem.BottomConnection.DestinationFlowItemId != null && !String.IsNullOrEmpty(decisionItem.BottomConnection.Condition)) { bool result = m_pythonEngine.EvaluateAs<bool>(decisionItem.BottomConnection.Condition); //FireFlowDebugMessage("Decision (bottom): " + decisionItem.BottomConnection.Condition + " = " + result + CRLF); if (result) { return decisionItem.BottomConnection.DestinationFlowItemId; } } if (decisionItem.RightConnection != null && decisionItem.RightConnection.DestinationFlowItemId != null && !String.IsNullOrEmpty(decisionItem.RightConnection.Condition)) { bool result = m_pythonEngine.EvaluateAs<bool>(decisionItem.RightConnection.Condition); //FireFlowDebugMessage("Decision (right): " + decisionItem.RightConnection.Condition + "= " + result + CRLF); if (result) { return decisionItem.RightConnection.DestinationFlowItemId; } } throw new ApplicationException("A downstream flow connection could not be deterimed from decision flow item with id " + decisionItem.FlowItemId + "."); } catch (Exception excp) { logger.Error("Exception SIPFlow ProcessFlowDecision. " + excp.Message); throw excp; } }