Plugin Architecture Version 1
The following C# class is taken from our demo project https://github.com/ikarstein/kenaflow.demoplugin.v1
using System;
using System.Collections;
using System.Collections.Generic;
using System.Management.Automation;
namespace kenaflow.demoplugin.v1
{
public class DemoPluginV1 : KenaflowPluginV1
{
private readonly KenaflowPluginConfigurationV1 MyConfig = new KenaflowPluginConfigurationV1
{
Id = Guid.Parse("{E9132626-B03B-415A-A73F-07CBF56D151E}"),
Enabled = true,
Name = "Demo Plugin v1",
Version = new Version("1.0.0.0"),
MinKenaflowVersion = new Version("4.0.0.0"),
LogDebug = true,
SupportedWorkflowTypes = new List<string>{"*"}
};
protected override KenaflowPluginConfigurationV1 GetPluginConfig(Options options)
{
//Return the Plugin Configuriation to kenaflow.
LogNormal("Loading config of DemoPlugin v1");
return MyConfig;
}
protected override void Loaded()
{
//Can be used to initialize the plugin after it was loaded and successfully registered.
}
protected override void Init(WFConfig config)
{
MyConfig.Enabled = true;
}
}
[Cmdlet("Get", "PluginTestV1")]
public class Test : PSCmdlet
{
protected override void ProcessRecord()
{
WriteObject($"Test: {DateTime.Now}");
}
}
}
The plugin class is derrived from KenaflowPluginV1
.
This base class offers some tools that are described in this article: Helper Methods.
It has a configuration object that is stored in a private property called MyConfig
.
During initialization kenaflow requests this configuration object by calling GetPluginConfig
. The parameter options
will contain used the command line options for kenaflow.exe
.
Id
is the unique ID of the plugin.
Enabled
tells kenaflow whether the plugin is available. If set to false
the plugin is going to be ignored. But if kenaflow.exe
was started with command line switch --plugin <assemlby>
the plugin is executed even if it's Enabled
-setting is `false.
Name
is the display name of the plugin. It must be unique in kenaflow. No other plugin can have the same name!
Version
is the version of the plugin. It's the developers choice what to set here.
MinKenaflowVersion
is the minimum kenaflow version that is supported by the plugin.
LogDebug
tells kenaflow to write some debugging messages to the log reporting plugin method calls.
SupportedWorkflowTypes
can be used to restrict the provided Cmdlets to certain workflow types. Valid values are:
SHAREPOINT
SHAREPOINT::SP2013
orSHAREPOINT::SP2013::ALL
orSHAREPOINT::SP2013::SITE
orSHAREPOINT::SP2013::LASTMODIFIED
orSHAREPOINT::SP2013::STATEMACHINE
orSHAREPOINT::SP2013::QUERY
SHAREPOINT::SP2016
orSHAREPOINT::SP2016::ALL
orSHAREPOINT::SP2016::SITE
orSHAREPOINT::SP2016::LASTMODIFIED
orSHAREPOINT::SP2016::STATEMACHINE
orSHAREPOINT::SP2016::QUERY
SHAREPOINT::SP2019
orSHAREPOINT::SP2019::ALL
orSHAREPOINT::SP2019::SITE
orSHAREPOINT::SP2019::LASTMODIFIED
orSHAREPOINT::SP2019::STATEMACHINE
orSHAREPOINT::SP2019::QUERY
SHAREPOINT::SPO
orSHAREPOINT::SPO::ALL
orSHAREPOINT::SPO::SITE
orSHAREPOINT::SPO::LASTMODIFIED
orSHAREPOINT::SPO::STATEMACHINE
orSHAREPOINT::SPO::QUERY
SHAREPOINT::ALL
SHAREPOINT::SITE
SHAREPOINT::LASTMODIFIED
SHAREPOINT::STATEMACHINE
SHAREPOINT::QUERY
EMAIL
EMAIL::EXCHANGE2007SP1
EMAIL::EXCHANGE2010
EMAIL::EXCHANGE2010SP1
EMAIL::EXCHANGE2010SP2
EMAIL::EXCHANGE2013
EMAIL::EXCHANGE2013SP1
EMAIL::EXCHANGE
EMAIL::EXCHANGEONLINE
EMAIL::IMAP
EMAIL::POP3
POWERSHELL
- ... and all custom workflow types that are implemented by Plugins of architecture version 2.
To support all workflow types please specify:
SupportedWorkflowTypes = new List
> To support **no** workflow types please specify:
> ```cs
SupportedWorkflowTypes = null
or
SupportedWorkflowTypes = new List<string()
#### Method `KenaflowPluginConfigurationV1 GetPluginConfig(Options options)`
The method is called to request the plugin configuration.
#### Method `void Loaded()`
The method is called immediately after the plugin was registered successfully.
#### Method `void Init(WFConfig config)`
The method `Init` is called BEFORE each workflow run. Here the plugin gets the configuration of the currently executed workflow. The plugin can decide to deactivate itself by setting `MyConfig.Enabled` to `false`.
### Cmdlet Definition
The class `Test` in the exmaple above defines the cmdlet `Get-PluginTestV1`.