Example #1
0
        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;
            }
        }
Example #2
0
        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;
            }
        }