0

問題

現在、スケジュールとコマンドを使用して、データベースにSitecoreのスケジュールされたタスクを設定しようとしています。

これまでのところ、必要なもののほとんどについてhttp://sdn.sitecore.net/FAQ/Administration/Scheduled%20tasks.aspxをフォローしています。彼らの方法は以下を使用します:public void WriteToLogFile(Item[] itemArray, CommandItem commandItem, ScheduleItem scheduledItem)。それがスケジュールアイテムで渡されるアイテム、コマンドアイテム自体、およびスケジュールアイテム自体であると想定しています。

同じ構文に従うrun関数がありますprotected void run(Item[] itemArray, CommandItem commandItem, ScheduleItem scheduleditem)。ただし、ログで実行されるときに例外を受け取りました。リンクされているのは例外スタックです:http://pastie.org/1847345、しかしここにネストされた例外があります:

Exception: System.NullReferenceException 
Message: Object reference not set to an instance of an object. 
Source: fhservices at fhservices.twitterPull.run(Item[] itemArray, CommandItem commandItem, ScheduleItem scheduleditem)

運が悪かったので、パラメータのいくつかの異なる組み合わせを試してみました。

web.configセクションのスケジュール:

 <scheduling>
  <!-- Time between checking for scheduled tasks waiting to execute -->
  <frequency>00:01:00</frequency>
  <!-- Agent to process schedules embedded as items in a database -->
  <agent type="Sitecore.Tasks.DatabaseAgent" method="Run" interval="00:02:00">
    <param desc="database">core</param>
    <param desc="schedule root">/sitecore/system/tasks/schedules</param>
    <LogActivity>true</LogActivity>
  </agent>
 ...

このジョブ開始メソッドを介して呼び出されるメソッドでsitecoreが送信するパラメーターを知っている人はいますか?

4

3 に答える 3

1

タスクが実際に実行されているようです。例外は、メソッドが見つからないことについては何も言及しておらず、例外はタスクメソッドからのものです。メソッド内にブレークポイントを設定し、どのオブジェクトがnullであるかを確認してみてください。

参考までに、スケジュールされたタスクに渡されるパラメーターは、コマンドの項目フィールドで指定された項目、コマンド定義項目、およびスケジュール定義項目です。

于 2011-04-29T23:41:04.963 に答える
1

WriteToLogFileSDNでリンクしたスニペットによると、似ているがそうではない独自のメソッドを作成していると思いますRun()。ステップ4は言う:

必要なフィールドに入力します。

タイプ:CustomScheduleTasks.Task1、CustomScheduleTasks

メソッド:WriteToLogFile

タイプは、名前空間とアセンブリファイルを示します。メソッドは、指定されたクラスで呼び出すメソッドを示します。

これで、コマンドをスケジュールされたタスクとして使用する準備が整いました。

したがって、Run()メソッドの代わりに、別の名前を付けてMethod、Sitecoreのコマンドのフィールドに設定します。Run()実行されるSitecoreのDatabaseAgentのメソッドです。

于 2011-04-29T17:22:08.037 に答える
0

ええと...あなたのメソッド定義は「実行」と言っています、少しr。ただし、Web.configにはRunがあり、大きなR. Sitecoreはここで.Netリフレクションを使用してメソッドを検索しているため、大文字と小文字が区別されます。

スケジュールされたタスクをweb.configではなくSystem/Tasksで設定しています。チャームのように機能します。

于 2011-04-29T22:16:15.790 に答える