Пример #1
0
 public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
 {
     Decimal bdval = new Decimal(0);
     Decimal bd = new Decimal(0);
     if (params_Renamed != null)
     {
         for (int idx = 0; idx < params_Renamed.Length; idx++)
         {
             if (params_Renamed[idx] is ValueParam)
             {
                 ValueParam n = (ValueParam) params_Renamed[idx];
                 bdval = n.BigDecimalValue;
             }
             else if (params_Renamed[idx] is BoundParam)
             {
                 BoundParam bp = (BoundParam) params_Renamed[idx];
                 bdval = (Decimal) engine.getBinding(bp.VariableName);
             }
             else if (params_Renamed[idx] is FunctionParam2)
             {
                 FunctionParam2 n = (FunctionParam2) params_Renamed[idx];
                 n.Engine = engine;
                 n.lookUpFunction();
                 IReturnVector rval = (IReturnVector) n.Value;
                 bdval = rval.firstReturnValue().BigDecimalValue;
             }
             bd = new Decimal(Decimal.ToInt32(bdval));
             bd = Decimal.Subtract(bdval, bd);
             if (Decimal.ToDouble(bd) < 0)
                 bdval = new Decimal(Decimal.ToInt32(bdval));
             else if (Decimal.ToDouble(bd) > 0)
                 bdval = new Decimal(Decimal.ToInt32(bdval) + 1);
         }
     }
     DefaultReturnVector ret = new DefaultReturnVector();
     DefaultReturnValue rv = new DefaultReturnValue(Constants.BIG_DECIMAL, bdval);
     ret.addReturnValue(rv);
     return ret;
 }
Пример #2
0
 public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
 {
     DefaultReturnVector ret = new DefaultReturnVector();
     bool eq = false;
     if (params_Renamed != null && params_Renamed.Length > 1)
     {
         Object first = null;
         if (params_Renamed[0] is ValueParam)
         {
             ValueParam n = (ValueParam) params_Renamed[0];
             first = n.Value;
         }
         else if (params_Renamed[0] is BoundParam)
         {
             BoundParam bp = (BoundParam) params_Renamed[0];
             first = (Decimal) engine.getBinding(bp.VariableName);
         }
         else if (params_Renamed[0] is FunctionParam2)
         {
             FunctionParam2 n = (FunctionParam2) params_Renamed[0];
             n.Engine = engine;
             n.lookUpFunction();
             IReturnVector rval = (IReturnVector) n.Value;
             first = rval.firstReturnValue().Value;
         }
         bool eval = true;
         for (int idx = 1; idx < params_Renamed.Length; idx++)
         {
             Object right = null;
             if (params_Renamed[idx] is ValueParam)
             {
                 ValueParam n = (ValueParam) params_Renamed[idx];
                 right = n.Value;
             }
             else if (params_Renamed[idx] is BoundParam)
             {
                 BoundParam bp = (BoundParam) params_Renamed[idx];
                 right = engine.getBinding(bp.VariableName);
             }
             else if (params_Renamed[idx] is FunctionParam2)
             {
                 FunctionParam2 n = (FunctionParam2) params_Renamed[idx];
                 n.Engine = engine;
                 n.lookUpFunction();
                 IReturnVector rval = (IReturnVector) n.Value;
                 right = rval.firstReturnValue().Value;
             }
             if (first == null && right != null)
             {
                 eval = false;
                 break;
             }
             else if (first != null && !first.Equals(right))
             {
                 eval = false;
                 break;
             }
         }
         eq = eval;
     }
     DefaultReturnValue rv = new DefaultReturnValue(Constants.BOOLEAN_OBJECT, eq);
     ret.addReturnValue(rv);
     return ret;
 }
Пример #3
0
 public virtual void resolveValues(Rete engine, IFact[] triggerFacts)
 {
     for (int idx = 0; idx < boundSlots.Length; idx++)
     {
         if (boundSlots[idx] is MultiSlot)
         {
             // for multislot we have to resolve each slot
             Object[] mvals = (Object[]) ((MultiSlot) boundSlots[idx]).Value;
             for (int mdx = 0; mdx < mvals.Length; mdx++)
             {
                 if (mvals[mdx] is BoundParam)
                 {
                     BoundParam bp = (BoundParam) mvals[mdx];
                     bp.ResolvedValue = engine.getBinding(bp.VariableName);
                 }
             }
         }
         else if (boundSlots[idx].Value is BoundParam)
         {
             BoundParam bp = (BoundParam) boundSlots[idx].Value;
             if (bp.column > - 1)
             {
                 bp.Facts = triggerFacts;
             }
             else
             {
                 bp.ResolvedValue = engine.getBinding(bp.VariableName);
             }
         }
     }
 }
Пример #4
0
 /// <summary> update the slots
 /// </summary>
 public virtual void updateSlots(Rete engine, Slot[] updates)
 {
     for (int idx = 0; idx < updates.Length; idx++)
     {
         Slot uslot = updates[idx];
         if (uslot.Value is BoundParam)
         {
             BoundParam bp = (BoundParam) uslot.Value;
             Object val = engine.getBinding(bp.VariableName);
             slots[uslot.Id].Value = val;
         }
         else
         {
             slots[uslot.Id].Value = uslot.Value;
         }
     }
     timeStamp_Renamed_Field = (DateTime.Now.Ticks - 621355968000000000)/10000;
 }
Пример #5
0
 public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
 {
     Object result = null;
     if (params_Renamed != null)
     {
         if (params_Renamed.Length >= 3)
         {
             bool conditionValue = false;
             if (params_Renamed[0] is ValueParam)
             {
                 ValueParam n = (ValueParam) params_Renamed[0];
                 conditionValue = n.BooleanValue;
             }
             else if (params_Renamed[0] is BoundParam)
             {
                 BoundParam bp = (BoundParam) params_Renamed[0];
                 conditionValue = ((Boolean) engine.getBinding(bp.VariableName));
             }
             else if (params_Renamed[0] is FunctionParam2)
             {
                 FunctionParam2 n = (FunctionParam2) params_Renamed[0];
                 n.Engine = engine;
                 n.lookUpFunction();
                 IReturnVector rval = (IReturnVector) n.Value;
                 conditionValue = rval.firstReturnValue().BooleanValue;
             }
             if (params_Renamed[1] is ValueParam && "then".Equals(params_Renamed[1].StringValue))
             {
                 bool elseExpressions = false;
                 for (int i = 2; i < params_Renamed.Length; ++i)
                 {
                     if (params_Renamed[i] is ValueParam && "else".Equals(params_Renamed[i].StringValue))
                     {
                         elseExpressions = true;
                     }
                     else
                     {
                         if ((conditionValue && !elseExpressions) || (!conditionValue && elseExpressions))
                         {
                             if (params_Renamed[i] is ValueParam)
                             {
                                 ValueParam n = (ValueParam) params_Renamed[i];
                                 result = n.Value;
                             }
                             else if (params_Renamed[i] is BoundParam)
                             {
                                 BoundParam bp = (BoundParam) params_Renamed[i];
                                 result = engine.getBinding(bp.VariableName);
                             }
                             else if (params_Renamed[i] is FunctionParam2)
                             {
                                 FunctionParam2 n = (FunctionParam2) params_Renamed[i];
                                 n.Engine = engine;
                                 n.lookUpFunction();
                                 IReturnVector rval = (IReturnVector) n.Value;
                                 if (rval.size() > 0)
                                 {
                                     result = rval.firstReturnValue().Value;
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     DefaultReturnVector ret = new DefaultReturnVector();
     DefaultReturnValue rv = new DefaultReturnValue(Constants.OBJECT_TYPE, result);
     ret.addReturnValue(rv);
     return ret;
 }
Пример #6
0
 public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
 {
     Decimal bdval = new Decimal(0);
     if (params_Renamed != null)
     {
         if (params_Renamed[0] is ValueParam)
         {
             ValueParam n = (ValueParam) params_Renamed[0];
             bdval = n.BigDecimalValue;
         }
         else if (params_Renamed[0] is BoundParam)
         {
             BoundParam bp = (BoundParam) params_Renamed[0];
             bdval = (Decimal) engine.getBinding(bp.VariableName);
         }
         else if (params_Renamed[0] is FunctionParam2)
         {
             FunctionParam2 n = (FunctionParam2) params_Renamed[0];
             n.Engine = engine;
             n.lookUpFunction();
             IReturnVector rval = (IReturnVector) n.Value;
             bdval = rval.firstReturnValue().BigDecimalValue;
         }
         double bdh = Decimal.ToDouble(bdval);
         bdval = Convert.ToDecimal(bdh/57.29578);
     }
     DefaultReturnVector ret = new DefaultReturnVector();
     DefaultReturnValue rv = new DefaultReturnValue(Constants.BIG_DECIMAL, bdval);
     ret.addReturnValue(rv);
     return ret;
 }
Пример #7
0
 /// <summary> method will try to resolve the variable and return the value.
 /// </summary>
 public override Object getValue(Rete engine, int valueType)
 {
     if (fact != null)
     {
         return fact.getSlotValue(column);
     }
     else
     {
         return engine.getBinding(variableName);
     }
 }
Пример #8
0
 public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
 {
     Object o = null;
     Object ro = null;
     String methodname = null;
     Type[] argsclass = null;
     Object[] args = null;
     if (params_Renamed != null)
     {
         if (params_Renamed[0] is ValueParam)
         {
             ValueParam n = (ValueParam) params_Renamed[0];
             o = n.Value;
         }
         else if (params_Renamed[0] is BoundParam)
         {
             BoundParam bp = (BoundParam) params_Renamed[0];
             o = engine.getBinding(bp.VariableName);
         }
         else if (params_Renamed[0] is FunctionParam2)
         {
             FunctionParam2 n = (FunctionParam2) params_Renamed[0];
             n.Engine = engine;
             n.lookUpFunction();
             IReturnVector rval = (IReturnVector) n.Value;
             o = rval.firstReturnValue().Value;
         }
         if (params_Renamed[1] is ValueParam)
         {
             ValueParam n = (ValueParam) params_Renamed[1];
             methodname = n.StringValue;
         }
         else if (params_Renamed[1] is BoundParam)
         {
             BoundParam bp = (BoundParam) params_Renamed[1];
             methodname = (String) engine.getBinding(bp.VariableName);
         }
         else if (params_Renamed[1] is FunctionParam2)
         {
             FunctionParam2 n = (FunctionParam2) params_Renamed[1];
             n.Engine = engine;
             n.lookUpFunction();
             IReturnVector rval = (IReturnVector) n.Value;
             methodname = rval.firstReturnValue().StringValue;
         }
         if (params_Renamed.Length > 2)
         {
             argsclass = new Type[params_Renamed.Length - 1];
             args = new Object[params_Renamed.Length - 1];
         }
         for (int idx = 2; idx < params_Renamed.Length; idx++)
         {
             if (params_Renamed[idx] is ValueParam)
             {
                 ValueParam n = (ValueParam) params_Renamed[idx];
                 argsclass[idx - 1] = n.Value.GetType();
                 args[idx - 1] = n.Value;
             }
             else if (params_Renamed[idx] is BoundParam)
             {
                 BoundParam bp = (BoundParam) params_Renamed[idx];
                 argsclass[idx - 1] = engine.getBinding(bp.VariableName).GetType();
                 args[idx - 1] = engine.getBinding(bp.VariableName);
             }
             else if (params_Renamed[idx] is FunctionParam2)
             {
                 FunctionParam2 n = (FunctionParam2) params_Renamed[idx];
                 n.Engine = engine;
                 n.lookUpFunction();
                 IReturnVector rval = (IReturnVector) n.Value;
                 argsclass[idx - 1] = rval.firstReturnValue().Value.GetType();
                 args[idx - 1] = rval.firstReturnValue().Value;
             }
         }
         try
         {
             Type classDefinition = o.GetType();
             MethodInfo method = classDefinition.GetMethod(methodname, (Type[]) argsclass);
             ro = method.Invoke(o, (Object[]) args);
         }
         catch (UnauthorizedAccessException e)
         {
             // TODO Auto-generated catch block
             System.Diagnostics.Trace.WriteLine(e.Message);
         }
         catch (SecurityException e)
         {
             // TODO Auto-generated catch block
             System.Diagnostics.Trace.WriteLine(e.Message);
         }
         catch (MethodAccessException e)
         {
             // TODO Auto-generated catch block
             System.Diagnostics.Trace.WriteLine(e.Message);
         }
         catch (ArgumentException e)
         {
             // TODO Auto-generated catch block
             System.Diagnostics.Trace.WriteLine(e.Message);
         }
         catch (TargetInvocationException e)
         {
             // TODO Auto-generated catch block
             System.Diagnostics.Trace.WriteLine(e.Message);
         }
     }
     DefaultReturnVector ret = new DefaultReturnVector();
     DefaultReturnValue rv = new DefaultReturnValue(Constants.OBJECT_TYPE, ro);
     ret.addReturnValue(rv);
     return ret;
 }
Пример #9
0
 public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
 {
     Decimal bdval = new Decimal(0);
     if (params_Renamed != null)
     {
         if (params_Renamed[0] is ValueParam)
         {
             bdval = params_Renamed[0].BigDecimalValue;
         }
         else if (params_Renamed[0] is BoundParam)
         {
             BoundParam bp = (BoundParam) params_Renamed[0];
             bdval = (Decimal) engine.getBinding(bp.VariableName);
         }
         else if (params_Renamed[0] is FunctionParam2)
         {
             FunctionParam2 n = (FunctionParam2) params_Renamed[0];
             n.Engine = engine;
             n.lookUpFunction();
             IReturnVector rval = (IReturnVector) n.Value;
             bdval = rval.firstReturnValue().BigDecimalValue;
         }
         for (int idx = 1; idx < params_Renamed.Length; idx++)
         {
             if (params_Renamed[idx] is ValueParam)
             {
                 ValueParam n = (ValueParam) params_Renamed[idx];
                 Decimal bd = n.BigDecimalValue;
                 bdval = Decimal.Multiply(bdval, bd);
             }
             else if (params_Renamed[idx] is FunctionParam2)
             {
                 FunctionParam2 n = (FunctionParam2) params_Renamed[idx];
                 n.Engine = engine;
                 n.lookUpFunction();
                 IReturnVector rval = (IReturnVector) n.Value;
                 Decimal bd = rval.firstReturnValue().BigDecimalValue;
                 if (idx == 0)
                 {
                     bdval = bd;
                 }
                 else
                 {
                     bdval = Decimal.Multiply(bdval, bd);
                 }
             }
         }
     }
     DefaultReturnVector ret = new DefaultReturnVector();
     DefaultReturnValue rv = new DefaultReturnValue(Constants.BIG_DECIMAL, bdval);
     ret.addReturnValue(rv);
     return ret;
 }
Пример #10
0
 /// <summary> The implementation will call Rete.writeMessage(). This means that
 /// if multiple output streams are set, the message will be printed to
 /// all of them.
 /// </summary>
 public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
 {
     // print out some stuff
     if (params_Renamed.Length > 0)
     {
         String output = params_Renamed[0].StringValue;
         for (int idx = 1; idx < params_Renamed.Length; idx++)
         {
             if (params_Renamed[idx] is BoundParam)
             {
                 BoundParam bp = (BoundParam) params_Renamed[idx];
                 Object v = engine.getBinding(bp.VariableName);
                 if (v.GetType().IsArray)
                 {
                     Object[] ary = (Object[]) v;
                     writeArray(ary, engine, output, false);
                 }
                 else
                 {
                     engine.writeMessage(v.ToString(), output);
                 }
             }
             else if (params_Renamed[idx].Value != null && params_Renamed[idx].Value.Equals(Constants.CRLF))
             {
                 engine.writeMessage(Constants.LINEBREAK, output);
             }
             else
             {
                 Object val = params_Renamed[idx].Value;
                 if (val is String)
                 {
                     engine.writeMessage((String) val, output);
                 }
                 else if (val.GetType().IsArray)
                 {
                     Object[] ary = (Object[]) val;
                     writeArray(ary, engine, output, true);
                 }
                 else
                 {
                     engine.writeMessage(val.ToString(), output);
                 }
             }
         }
     }
     // there's nothing to return, so just return a new DefaultReturnVector
     return new DefaultReturnVector();
 }
Пример #11
0
 public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
 {
     bool boolVal = true;
     if (params_Renamed != null)
     {
         if (params_Renamed.Length == 1)
         {
             if (params_Renamed[0] is ValueParam)
             {
                 ValueParam n = (ValueParam) params_Renamed[0];
                 boolVal = n.BooleanValue;
             }
             else if (params_Renamed[0] is BoundParam)
             {
                 BoundParam bp = (BoundParam) params_Renamed[0];
                 boolVal = ((Boolean) engine.getBinding(bp.VariableName));
             }
             else if (params_Renamed[0] is FunctionParam2)
             {
                 FunctionParam2 n = (FunctionParam2) params_Renamed[0];
                 n.Engine = engine;
                 n.lookUpFunction();
                 IReturnVector rval = (IReturnVector) n.Value;
                 boolVal = rval.firstReturnValue().BooleanValue;
             }
             boolVal = (boolVal == false);
         }
     }
     DefaultReturnVector ret = new DefaultReturnVector();
     DefaultReturnValue rv = new DefaultReturnValue(Constants.BOOLEAN_OBJECT, boolVal);
     ret.addReturnValue(rv);
     return ret;
 }