Esempio n. 1
0
        public ProcessReturnValue Execute(ProcessInputParams args, ProcessReturnValue ret)
        {
            float fresult = 0;
            float fa = 0, fb = 0;
            ComplexInput a = args.GetData("a", 0).asComplexInput();
            ComplexInput b = args.GetData("b", 0).asComplexInput();
            XmlDocument doc = new XmlDocument();
            try
            {
                doc.LoadXml(a.ToString());
                fa = float.Parse(doc.InnerText);
            }
            catch { }

            try
            {
                doc.LoadXml(b.ToString());
                fb = float.Parse(doc.InnerText);
            }
            catch { }

            LiteralInput oper = args.GetData("operator", 0).asLiteralInput();
            string myOperator = oper.ToString();

            if (ret.IsOutputIdentifierRequested("result"))
            {
                switch (myOperator)
                {
                    case "sub":
                        fresult = fa - fb;
                        break;
                    case "mult":
                        fresult = fa * fb;
                        break;
                    case "div":
                        if (fb != 0)
                            fresult = fa / fb;
                        else
                            fresult = fa;
                        break;
                    case "add":
                    default:
                        fresult = fa + fb;
                        break;
                }

                ComplexOutput result = null;
                List<OutputData> outputs = ret.GetOutputsForIdentifier("result");

                if (ret.IsRawDataOutput())
                {
                    ret.fileName = "result.xml";
                    result = outputs[0].asComplexOutput();
                    result.SetValue(String.Format("<?xml version='1.0' encoding='{0}'?>\n<number>{1}</number>",
                        result.Format.encoding, fresult));
                    ret.AddData(result);
                }
                else
                {
                    foreach (OutputData output in outputs)
                    {
                        result = output.asComplexOutput();
                        result.SetValue("<number>" + fresult + "</number>");
                        ret.AddData(result);
                    }
                }
            }

            ret.status = ProcessState.Succeeded;
            return ret;
        }
Esempio n. 2
0
        public ProcessReturnValue Execute(ProcessInputParams args, ProcessReturnValue ret)
        {
            int sum = 0;
            int i = 0;
            while (true)
            {
                LiteralInput a = args.GetData("a", i++).asLiteralInput();
                if (a == null) break;
                sum += Int32.Parse(a.ToString());
            }

            LiteralInput b = args.GetData("b", 0).asLiteralInput();
            int ib = Int32.Parse(b.ToString());
            sum += ib;

            if (ret.IsOutputIdentifierRequested("sum"))
            {
                List<OutputData> outputs = ret.GetOutputsForIdentifier("sum");
                // Output 1: a literal containing the raw sum
                LiteralOutput sumOutput = null;
                foreach (OutputData output in outputs)
                {
                    sumOutput = output.asLiteralOutput();
                    sumOutput.Value = sum.ToString();
                    ret.AddData(sumOutput);
                }
            }

            if (ret.IsOutputIdentifierRequested("sumFile"))
            {
                List<OutputData> outputs = ret.GetOutputsForIdentifier("sumFile");
                // Output 2: a complex data type - plain text by default
                if (ret.IsRawDataOutput())
                {
                    ComplexOutput sumOutput = outputs[0].asComplexOutput();
                    if (Utils.StrICmp(sumOutput.Format.mimeType, "text/xml"))
                    {
                        sumOutput.SetValue("<number>" + sum + "</number>");
                        ret.fileName = "result.xml";
                    }
                    else if (Utils.StrICmp(sumOutput.Format.mimeType, "plain/text"))
                    {
                        sumOutput.SetValue("sum is " + sum);
                        ret.fileName = "result.txt";
                    }
                    ret.AddData(sumOutput);
                }
                else
                {
                    ComplexOutput sumOutput = null;
                    foreach (OutputData output in outputs)
                    {
                        sumOutput = output.asComplexOutput();
                        if (Utils.StrICmp(sumOutput.Format.mimeType, "text/xml"))
                            sumOutput.SetValue("<number>" + sum + "</number>");
                        else
                            sumOutput.SetValue("sum is " + sum);
                        ret.AddData(sumOutput);
                    }
                }
            }

            ret.status = ProcessState.Succeeded;
            return ret;
        }