/// <summary>
        /// This method executes a workflow that will fail. A popup is forced so KNIME blocks.
        /// A second thread is spawned that will abort the execution and kill KNIME.
        /// </summary>
        /// <returns></returns>
        public static async Task <ExitStatus> FailingExecutionAfterCancel()
        {
            var output = new EventBasedTextWriter();
            var error  = new EventBasedTextWriter();

            output.OnWriteLine += OnOutputReceived;
            error.OnWriteLine  += OnErrorReceived;
            var shellProxy = new ShellProxy(KnimeDir)
            {
                Arguments =
                {
                    WorkFlowDir    = FailingWorkFlow,
                    SuppressErrors = false // provoke blocking KNIME instance in case the workflow ends too fast
                },
                KillOnError = true,
            };

#pragma warning disable 4014
            Task.Run(() => CancelKnime(shellProxy)); // parallel cancel helper
#pragma warning restore 4014
            var exitStatus = await shellProxy.StartKnime(null, output, error).ConfigureAwait(false);

            Console.WriteLine("Killed KNIME successfully? " + exitStatus.KilledProcess);
            return(exitStatus);
        }
        /// <summary>
        /// This example executes a workflow that ends without errors and binds the output/error to event based textwriters.
        /// </summary>
        /// <returns></returns>
        public static async Task <ExitStatus> SucceedingExecutionWithEventBasedBinding()
        {
            var output = new EventBasedTextWriter();
            var error  = new EventBasedTextWriter();

            output.OnWriteLine += OnOutputReceived;
            error.OnWriteLine  += OnErrorReceived;
            var shellProxy = new ShellProxy(KnimeDir)
            {
                Arguments =
                {
                    WorkFlowDir = SucceedingWorkFlow
                }
            };
            var exitStatus = await shellProxy.StartKnime(null, output, error);

            return(exitStatus);
        }
Пример #3
0
        /// <summary>
        /// This method executes a workflow that will fail. A popup is forced so KNIME blocks.
        /// After a timeout is reached KNIME will be killed.
        /// </summary>
        /// <returns></returns>
        private static async Task <ExitStatus> FailingExecutionAfterTimeout()
        {
            var output = new EventBasedTextWriter();
            var error  = new EventBasedTextWriter();

            output.OnWriteLine += OnOutputReceived;
            error.OnWriteLine  += OnErrorReceived;
            var shellProxy = new ShellProxy(KnimeDir)
            {
                Arguments =
                {
                    WorkFlowDir    = FailingWorkFlow,
                    SuppressErrors = false // provoke blocking KNIME instance in case the workflow ends too fast
                },
                KillOnError = true,
                Timeout     = 20
            };
            var exitStatus = await shellProxy.StartKnime(null, output, error).ConfigureAwait(false);

            Console.WriteLine("Killed KNIME successfully? " + exitStatus.KilledProcess);
            return(exitStatus);
        }