Message-ID: <70168767.3258.1485852534458.JavaMail.confluence@ip-10-127-227-164> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_3257_414774899.1485852534434" ------=_Part_3257_414774899.1485852534434 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html Signal-Slot

Signal-Slot

=20 =20

The Signal-Slot system provides a means for realizing loosely coupled de= pendencies in the sense that a code entity A can react on an event occurrin= g in code entity B, without A and B knowing each other directly. This works= by dispatching event information through a central third instance, the so = called dispatcher:

In the shown schematics, object B and one other object are interested in= a certain signal. B is a so-called Slot that can be announced to be intere= sted in receiving a Signal (indicated by the circular connector to the disp= atcher). Object A now sends the corresponding Signal. The Dispatcher takes = care of realizing the dependency and informs the Slot A (and one other Slot= ) about the occurrence of the Signal.

Signals roughly equal events, while Slots roughly equal event handlers. = An arbitrary number (0=E2=80=A6n) of Slots can listen for a specific Signal= . Every object that receives the Dispatcher as a dependency can send signal= s. However, the following conditions apply (that typically do not apply to = event handling systems):

Those two conditions allow the asynchronous processing of Slots. That me= ans: It is possible to determine, by configuration, that a Slot must not re= ceive a Signal in the very same moment it occurs, but to receive it on a la= ter point in time, maybe after other Signals from a queue have been process= ed or even on a completely different server.

Signal

A Signal represents a specific event, e.g. that a content version has be= en published. It consists of information that is significant to the event, = e.g. the content ID and version number. Therefore, a Signal is represented = by an object of a class that is specific to the Signal and that extends fro= m eZ\Publish\Core\SignalSlot\Signal. The full qualified name o= f the Signal class is used to uniquely identify the Signal. For example, th= e class eZ\Publish\Core\SignalSlot\Signal\ContentService\PublishVersi= onSignal identifies the example Signal.

In order to work properly with asynchronous processing, Signals must not= consist of any logic and must not contain complex data structures (such as= further objects and resources). Instead, they must be exportable using the= __set_state() method, so that it is possible to transfer a Si= gnal to a different system.

Note

Signals can theoretically be sent by any object that gets hold of a SignalD= ispatcher ( eZ\Publish\Core\SignalSlot\SignalDispatcher). However, at a fi= rst stage,=20 Signals are only sent by special implementations of the Public API = to indicate core events. These services must and will be used by d= efault and will wrap the original service implementations.

Slot

A Slot extends the system by realizing functionality that is executed wh= en a certain Signal occurs. To implement a Slot, you must create a class th= at derives from eZ\Publish\Core\SignalSlot\Slot. The full qual= ified name of the Slot class is also used as the unique identifier of the S= lot. The Slot base class requires you to implement the single method = receive(). When your Slot is configured to listen to a certain Signa= l and this Signal occurs, the receive() method of your Slot is= called.

Inside the receive() method of your Slot you can basically = realize any kind of logic. However, it is recommended that you only dispatc= h the action to be triggered to a dedicated object. This allows you to trig= ger the same action from within multiple Slots and to re-use the implementa= tion from a completely different context.

Note that, due to the nature of Signal-Slot, the following requirements = must be fulfilled by your Slot implementation:

Important: A single Slot= should not take care of processing more than one Signal. Instead, if you n= eed to trigger same or similar actions as different Signals occur. you shou= ld encapsulate these actions into a dedicated class, of which your Slots re= ceive an instance to trigger this action.

Example: Updating URL ali= ases

Updating URL aliases is a typical process that can be realized through a= Signal-Slot extension for different reasons:

As a first step it needs to be determined for which Signals we need to l= isten in order to update URL aliases. Some of them are:

There are of course additional Signals that trigger an update of URL ali= ases, but these are left out for simplicity here.

Now that we identified some Signals to react upon, we can start implemen= ting Slots for these signals. For the first Signal, which is issued as soon= as a new version of Content is published, there exists a method in e= Z\Publish\SPI\Persistence\Content\UrlAlias\Handler for exactly that = purpose: publishUrlAliasForLocation(). The Signal contains the= ID of the content item and its newly published version number. Using this = information, the corresponding Slot can fulfill its purposes with the follo= wing steps:

  1. Load the corresponding content and its locations
  2. Call the URL alias creation method for each location

To achieve this, the Slot has 2 dependencies:

So, a stub for the implementation could look like this:

=20
namespace Acme\TestBundle\Slot;

use eZ\Publish\Core\SignalSlot\Slot as BaseSlot;
use eZ\Publish\API\Repository\Repository;
use eZ\Publish\SignalSlot\Signal;

class CreateUrlAliasesOnPublishSlot extends BaseSlot
{
    /**
     * @var \eZ\Publish\API\Repository\Repository
     */
    private $repository;
    public function __construct( Repository $repository )
    {
        $this->repository =3D $reposi=
tory;
    }

    public function receive( Signal $signal )
    {
        if ( !$signal instanceof Signal\=
ContentService\PublishVersionSignal )
        {
            return;
        }
        // Load content
        // Load locations
        // Create URL aliases
    }
}
=20

In order to make the newly created Slot react on the corresponding Signa= l, the following steps must be performed:

  1. Make the Slot available through the Symfony service container as a serv= ice
  2. Register the Slot to react to the Signal of type eZ\Publish\Core\= SignalSlot\Signal\ContentService\PublishVersionSignal
See How to listen to Core events recipe in the d= eveloper cookbook for more information.

 

Related topics:
------=_Part_3257_414774899.1485852534434 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: file:///C:/7978e339955e71e5a7504f566a1e7ca2 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 hPAvs5n1xu40hXEAAAAASUVORK5CYII= ------=_Part_3257_414774899.1485852534434--