/// <summary> /// Display a summary of the run to the user, including locations of any assets. /// </summary> public static void DisplayRunSummary(LogsharkRequest request) { // Display logset hash, if relevant. if (!String.IsNullOrWhiteSpace(request.RunContext.LogsetHash)) { Log.InfoFormat("Logset hash for this run was '{0}'.", request.RunContext.LogsetHash); } // Display Postgres output location, if relevant. int pluginSuccesses = request.RunContext.PluginResponses.Count(pluginResponse => pluginResponse.SuccessfulExecution); if (pluginSuccesses > 0) { Log.InfoFormat("Plugin backing data was written to Postgres database '{0}\\{1}'.", request.Configuration.PostgresConnectionInfo, request.PostgresDatabaseName); } // A plugin may run successfully, yet not output a workbook. We only want to display the workbook output location if at least one workbook was output. int workbooksOutput = request.RunContext.PluginResponses.Sum(pluginResponse => pluginResponse.WorkbooksOutput.Count); if (workbooksOutput > 0) { Log.InfoFormat("Plugin workbook output was saved to '{0}'.", PluginExecutor.GetOutputLocation(request.RunId)); } // Display information about any published workbooks, if relevant. if (request.PublishWorkbooks && pluginSuccesses > 0) { Log.Info(WorkbookPublisher.BuildPublishingSummary(request.RunContext.PublishedWorkbooks)); } }
/// <summary> /// Execute plugins requested by the user against an initialized logset. /// </summary> private PluginExecutionResult ExecutePlugins(LogsharkRequest request, RunInitializationResult initializationResult) { PublishingOptions publishingOptions = BuildPublishingOptions(request, initializationResult); var pluginExecutionRequest = new PluginExecutionRequest(initializationResult, publishingOptions, request.PluginCustomArguments, request.RunId, request.PostgresDatabaseName); var pluginExecutor = new PluginExecutor(request.Configuration); return(pluginExecutor.ExecutePlugins(pluginExecutionRequest)); }
private void Execute(IPlugin plugin, Dictionary <string, object> parameters, out Dictionary <string, object> returnValues) { var pluginExecutor = PluginExecutor.CreateInstance(); var startParameter = new StartParameter { Parameters = parameters }; pluginExecutor.Execute(plugin, startParameter); returnValues = startParameter.ReturnValues; }
// use this sample if you don't trust Nuget packages and don't want to give client to Nuget Packages static void SamplePluginNoTrustExecute(CrmServiceClient client, Guid userId) { var pluginContext = new PluginExecutionContextFake(); pluginContext.PrimaryEntityId = new Guid("12345678-1234-1234-1234-1234567890AB"); pluginContext.PrimaryEntityName = "account"; pluginContext.UserId = userId; pluginContext.InputParameters.Add("Target", new Entity("account", new Guid("12345678-1234-1234-1234-1234567890AB"))); // workaround - client goes directly to your plugin. PluginExecutor can't touch it. var testPlugin = new TestPluginNoTrust(); var serviceFactory = new ServiceFactoryFake(); serviceFactory.service = client.OrganizationServiceProxy; testPlugin.SetOrganizationServiceFactory(serviceFactory); // end of workaround PluginExecutor.Execute(testPlugin, null, pluginContext); }
static void SamplePluginExecute(CrmServiceClient client, Guid userId) { var pluginContext = new PluginExecutionContextFake(); // if within your plugin you use other stuff of plugincontext, initialize it and put appropriate // e.g. pluginContext.BusinessUnitId = yourBuId // or pluginContext.PreEntityImages.Add("name", someEntity); pluginContext.PrimaryEntityId = new Guid("12345678-1234-1234-1234-1234567890AB"); pluginContext.PrimaryEntityName = "account"; pluginContext.UserId = userId; pluginContext.InitiatingUserId = userId; // set your target record lie this var e = new Entity("account", new Guid("12345678-1234-1234-1234-1234567890AB")); e.Attributes["name"] = "someName"; pluginContext.InputParameters.Add("Target", e); var testPlugin = new TestPlugin(); // sample for plugin constructors requiering secure and unsecure config: // TestPlugin testPlugin = new TestPlugin(yourSecureConfig, yourUnsecureConfig); //- both parameters can be null or empty string PluginExecutor.Execute(testPlugin, client, pluginContext); }
public virtual string BuildRunSummary() { var summary = new StringBuilder(); // Display logset hash, if relevant. if (InitializationResult != null && !String.IsNullOrWhiteSpace(InitializationResult.LogsetHash)) { summary.AppendFormat("Logset hash for this run was '{0}'.", InitializationResult.LogsetHash); } // Display Postgres output location, if relevant. if (PluginExecutionResult != null) { int pluginSuccesses = PluginExecutionResult.PluginResponses.Count(pluginResponse => pluginResponse.SuccessfulExecution); if (pluginSuccesses > 0) { Request.Configuration.PostgresConnectionInfo.MatchSome(connectionInfo => { summary.AppendLine(); summary.AppendFormat("Plugin backing data was written to Postgres database '{0}\\{1}'.", connectionInfo, Request.PostgresDatabaseName); }); } // A plugin may run successfully, yet not output a workbook. We only want to display the workbook output location if at least one workbook was output. int workbooksOutput = PluginExecutionResult.PluginResponses.Sum(pluginResponse => pluginResponse.WorkbooksOutput.Count); if (workbooksOutput > 0) { summary.AppendLine(); summary.AppendFormat("Plugin workbook output was saved to '{0}'.", PluginExecutor.GetRunOutputDirectory(Request.Configuration.ApplicationOutputDirectory, Request.RunId)); } // Display information about any published workbooks, if relevant. if (Request.PublishWorkbooks && pluginSuccesses > 0) { var publishedWorkbookResults = PluginExecutionResult.PluginResponses .Where(response => response.WorkbooksPublished != null) .SelectMany(response => response.WorkbooksPublished) .ToList(); summary.AppendLine(); summary.AppendFormat(WorkbookPublisher.BuildPublishingSummary(publishedWorkbookResults)); } } return(summary.ToString()); }
/// <summary> /// Executes requested Logshark plugins. /// </summary> public static void ExecutePlugins(LogsharkRequest request) { PluginExecutor executor = new PluginExecutor(request); executor.ExecutePlugins(); }
private void RunPlugin(object menuItem) { var pluginExecutor = PluginExecutor.CreateInstance(); pluginExecutor.Execute(menuItem); }