/// <summary> /// Override this method with the <see cref="analyticMacroBase"/> execution code. /// </summary> /// <remarks> /// <para>It is called after initiation part from <see cref="run(analyticJob, analyticJobRunFlags, analyticProject, builderForLog)"/></para> /// <para>This method would never be called it <see cref="analyticJobRunFlags.execution_skipTest"/> is inside <see cref="aFlags"/></para> /// </remarks> /// <param name="aJob">a job.</param> /// <param name="aFlags">a flags.</param> /// <param name="aProject">a project.</param> /// <param name="aTerminal">a terminal.</param> /// <returns></returns> protected abstract bool innerRun(analyticJob aJob, analyticJobRunFlags aFlags, analyticProject aProject, analyticJobRecord aRecord);
/// <summary> /// Helps the method build spiders. /// </summary> /// <param name="aJob">a job.</param> /// <param name="sciProject">The science project.</param> /// <returns></returns> public abstract List <ISpiderEvaluatorBase> helpMethodBuildSpiders(analyticJob aJob, analyticProject sciProject);
/// <summary> /// Runs the macro. To adjust macro execution override <see cref="innerRun(analyticJob, analyticJobRunFlags, analyticProject, builderForLog)"/> method. /// <c>innerRun</c> is called witnih this method, after common initalization procedure /// </summary> /// <remarks> /// <para>Report creation is done after <see cref="innerRun(analyticJob, analyticJobRunFlags, analyticProject, builderForLog)"/> call.</para> /// </remarks> /// <param name="aJob">a job.</param> /// <param name="aFlags">a flags.</param> /// <param name="aProject">a project.</param> /// <param name="aTerminal">a terminal.</param> /// <returns></returns> public deliveryInstance run(analyticJob aJob, analyticJobRunFlags aFlags, analyticProject aProject = null, builderForLog aTerminal = null) { string runstamp = aJob.runstamp; //aFlags = aFlags.SetFlag<analyticJobRunFlags>(analyticJobRunFlags.report_FolderPurge, imbWEMManager.settings.postReportEngine.reportPurgeFolder); //bool projectCreated = false; //if ((aProject == null) || aFlags.HasFlag(analyticJobRunFlags.setup_sciProjectFromPreset)) //{ // //aProject = new analyticProject(); // //aProject.afterLoadDeploy(); // //projectCreated = true; //} //analyticJobRecord aRecord = new analyticJobRecord(aJob, aProject, aFlags); //aceLog.consoleControl.setAsOutput(aRecord, "aRecord"); //// <---------- counting the sample //imbWEMManager.webProfileGroups.setGroupCounts(aProject.mainWebProfiler.webSiteProfiles); //if (projectCreated) aRecord.logBuilder.log("SciProject new instance (byFlag) ::" + aProject.GetType().Name + " with defaults"); // Analytic macro script [" + this.GetType().Name + "] execution started"); //if (aTerminal != null) //{ // //aceLog.logBuilderRegistry.Add(logOutputSpecial.systemMainLog, aTerminal); // logSystem.externalLoger = aTerminal; //} //// ---------------------------------------------------------------- INITIATION SECTION ////----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //if (!aFlags.HasFlag(analyticJobRunFlags.execution_skipTest)) //{ // aRecord.logBuilder.open("tag", "Execution: " + GetType().Name, "the system initial self-configuration"); // ////// ---------------------------------------------------- INNER RUN CALL // innerRun(aJob, aFlags, aProject, aRecord); // ////// ---------------------------------------------------- INNER RUN CALL // aRecord.logBuilder.close(); // ///// inner run called //} else //{ // aRecord.logBuilder.log("The macro script never executed :: " + analyticJobRunFlags.execution_skipTest + " default instance created"); //} //// <---------- Record is finished //aRecord.recordFinish(); //// ---------------------------------------------------------------- REPORTING SECTION //aRecord.logBuilder.log("Report construction initiated"); //// -- create deliveryInstance //executeOtherCommons(aRecord); //metaDocumentRootSet aReport = executeBuildReport(aRecord); // deliveryInstance reportDeliveryInstance = executeRenderReport(aReport, aRecord); return(null); // reportDeliveryInstance; }