2016-09-28 4 views
2

にスケジュールされたジョブの設定を追加する方法:私はEpiserverにスケジュールされたジョブの動作を変更するために使用することができ、チェックボックスを追加する必要があり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); 
     } 
    } 

I want one more checkbox like the Active checkbox that is there by default.

私は1もっと欲しいのデフォルトではアクティブのチェックボックスのチェックボックスがあります。

答えて

2

あり、あなたの問題に対する簡単な解決策はありませんが、このブログの記事をチェックアウト:https://blog.mathiaskunto.com/2012/02/13/supplying-episerver-scheduled-jobs-with-parameters-through-admin-mode/

これは私がandreasnicoによって提案されたソリューションを好きですが、簡単な方法は、可能性があなたの問題

+1

ありがとう、これは何を探していたのですか? P – Dujskan

1

を解決する必要がありますプラグインの設定を使用します(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; 
     } 
    } 
} 

:それは、スケジュールEpiserversに来るとき

bool setting = MyPluginSettings.Instance.SomeSetting; 
+1

Tedさんに感謝しますが、これは探していたものではありませんでしたが、これで多くの良い使い方を見ることができました。実際には何かのために実装しました:) – Dujskan

1

これはおそらく最大の制約でありますジョブ...設定オプションの欠如。 1つのパラメータをそれらに送信することはできず、たとえば、1日にジョブを実行するために異なる時間を選択することはできません。

最も簡単なオプションは、ジョブに必要な値を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などの設定を保存することもできますが、手動ではなくスケジュールされたジョブを実行しているときに解決できるかどうかは完全にはわかりません。

+0

私はこれを保つつもりです次の時間まで心に:) – Dujskan

関連する問題