我需要添加一个复选框,可用于更改Episerver中预定作业的行为:
public class ImportAlarms : ScheduledJobBase
{
/*I want the editor to set this*/
public bool CheckBox { get; set; }
public override string Execute()
{
OnStatusChanged("Starting execution of import alarms");
var status = Import();
return status;
}
private static string Import()
{
/*Do something with CheckBox value here*/
var repository = ServiceLocator.Current.GetInstance<IContentRepository>();
var alarms = ImportAlarmsProvider.Import(DateTime.Now.AddDays(-1), DateTime.Now.AddDays(1));
var createdCount = new AlarmRepository(repository).ImportAlarms(alarms.OrderBy(x => x.Date));
return createdCount == -1 ? "No alarm container page set" : string.Format("Import completed, {0} pages imported", createdCount);
}
}
我还想要一个复选框,例如默认情况下 Active 复选框。
答案 0 :(得分:2)
您的问题没有简单的解决方案,但请查看此博文:https://blog.mathiaskunto.com/2012/02/13/supplying-episerver-scheduled-jobs-with-parameters-through-admin-mode/
这应该可以解决您的问题
答案 1 :(得分:1)
我喜欢 andreasnico 提出的解决方案,但更简单的方法可能是使用插件设置(尽管它们与UI中的预定作业分开管理)
来自https://www.epinova.no/en/blog/configuration-options-for-episerver-sites/的插件设置示例:
using EPiServer.PlugIn;
[GuiPlugIn(Area = PlugInArea.None, DisplayName = "My Plugin Settings")]
public class MyPluginSettings
{
private static MyPluginSettings _instance;
[PlugInProperty(Description = "Some setting", AdminControl = typeof(CheckBox), AdminControlValue = "Checked")]
public bool SomeSetting { get; set; }
public MyPluginSettings()
{
PlugInSettings.SettingsChanged += new EventHandler(PlugInSettings_SettingsChanged);
}
private static void PlugInSettings_SettingsChanged(object sender, EventArgs e)
{
_instance = null;
}
public static MyPluginSettings Instance
{
get
{
if (_instance == null)
{
_instance = new MyPluginSettings();
}
PlugInSettings.AutoPopulate(_instance);
return _instance;
}
}
}
您可以检索预定作业代码中的值,如:
bool setting = MyPluginSettings.Instance.SomeSetting;
答案 2 :(得分:1)
这可能是Episervers预定工作的最大限制......缺乏配置选项。一个人无法向他们发送任何参数,例如,他们无法选择不同的时间来在一天内完成一项工作。
最简单的选择是从appSettings.config或数据库设置作业中所需的值。
否则我会建立一个GuiPlugin。这些通常显示在工具管理下的计划作业上方(如果您选择将其放在该区域中)。您的设置可以按照Ted描述的方式保存,也可以将它们保存在数据库中或使用Episervers DDS(http://world.episerver.com/documentation/Items/Developers-Guide/Episerver-Framework/7/Dynamic-Data-Store/Dynamic-Data-Store/)。
您还可以将设置存储在StartPage或SettingsPage或您选择的任何内容上,但是我并不完全确定这些设置在运行预定作业时会解决,而不是手动解决。