ジョブを作成する

ジョブの作成は簡単です。まず、PHPファイルを標準のconcrete5の小文字とアンダースコアのルールに従って作成します。例:"summarize_statistics.php"

次に、このファイルを application/jobs ディレクトリに設置します(パッケージに含める方法は後述)。

次にファイルを開き、ファイル名に対応した名前空間とクラス名を定義し、\Concrete\Core\Job\Job クラスを継承します。

<?php
namespace Application\Job;
use \Concrete\Core\Job\Job as AbstractJob;

class SummarizeStatistics extends AbstractJob
{

    public function getJobName()
    {
        return t("Summarize Statistics.");
    }

    public function getJobDescription()
    {
        return t("Takes all detailed statistics and summarizes them.");
    }

    public function run()
    {
    }
}

ジョブのクラス名は、ファイル名を先頭が大文字でアンダースコアを除いた形式のクラス名となります。ファイルの名前空間は Application\Job となります。すべてのジョブクラスは getJobName() と getJobDescription() メソッドを定義する必要があります。これらは、ジョブの管理画面ページで表示されます。最後に、ジョブに run() メソッドを追加します。このメソッドにこのジョブが実行された際のロジックを記載します。

結果

run() メソッドから返された文字列は自動的にジョブの管理画面ページで表示されます。一般的にこの文字列は、ジョブによって処理されたアイテム数などの、実行が成功した際の詳細メッセージを表示します。

エラーハンドリング

ジョブのエラーハンドリングは例外を投げることで行います。ジョブの中で単に例外を投げるだけで、ジョブはエラー結果を管理画面UIに表示します。

ジョブをインストールする

application/jobs ディレクトリ内のジョブを実行するには、先にインストールする必要があります。管理画面>システムと設定>最適化>自動実行ジョブページからインストールできます。アンインストールされたジョブはページの下部に表示されます。

パッケージに含める

Including a custom job that you've written for the Application namespace (and placed in application/jobs) in a Package is easy. Let's say you've got a package named "SuperStats" that you want to place your Summarize Statistics Job In. First, create a jobs directory within your package's directory:

packages/super_stats/jobs/

Then, place the class in the jobs directory so you have packages/super_stats/jobs/summarize_statistics.php

Next, you'll need to modify the namespace of your Job. So

namespace Application\Job;

becomes

namespace Concrete\Package\SuperStats\Job;

Finally, you'll need to install your Job within your package's install() method, rather than through the UI. From within your concrete5 SuperStats Package, you'll need to add this code.

public function install()
{
    $pkg = parent::install();
    \Concrete\Core\Job\Job::installByPackage('summarize_statistics', $pkg);
}

This is, of course, in addition to anything else that your package's install() method currently contains.

When uninstalling a package, any jobs that that package has installed are automatically uninstalled. You don't need to write custom code to do it.

原文:Creating a Job