Exemple #1
0
        /// <summary>
        /// This method is called by the DescribeProcess part of WPS.NET, it must be implemented.
        /// </summary>
        /// <returns>The process description</returns>
        public override ProcessDescription GetDescription()
        {
            ///This is where we create the process description
            ProcessDescription process = new ProcessDescription("AsyncClock", "Async Clock", "Counts a user-defined number of seconds asynchronously (This is an example of async process for developpers)", "1.1");

            ///This check is meant to make sure everything is in it's place so that the process
            ///can be called asynchronously without failing miserably.
            if (this is IAsyncProcess && this.MainAppDomain != null)
            {
                ///Is this process implements IAsyncProcess and if the Main Application Domain is provided,
                ///we can assume that status will be supported (provided status updates are properly coded).
                process.statusSupported = true;

                if (this.BaseUrlToResultPath != String.Empty && this.StoredResultPath != string.Empty)
                {
                    ///If the necessary informations for responses and results storage are provided
                    ///we can enable storage support.
                    process.storeSupported = true;
                }
            }

            ///This is the declaration of the numberOfSeconds parameter
            ///It has 1 minoccurs and 1 maxoccurs, it is mandatory.
            LiteralInput numberOfSeconds = new LiteralInput("numberOfSeconds", "Number of seconds", "The number of seconds this process will count", "integer", "100");

            numberOfSeconds.MinOccurs = 1;
            numberOfSeconds.MaxOccurs = 1;

            ///Dont forget to add the previously created parameter in the inputs collection of the process.
            process.inputs.Add(numberOfSeconds);

            ///A start date should be also specified
            process.processStartDate = this.startDate;

            ///Specify the output of the process
            LiteralOutput output = new LiteralOutput("AsyncClockResult", "Async Clock Result", "A string containing the start datetime and the end datetime", "string");

            output.Value = String.Empty;
            process.outputs.Add(output);

            ///Return the description of the process.
            return(process);
        }
Exemple #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);
        }