7

I found in di.xml from the catalog module this:

<type name="Magento\Framework\Model\OrchestratorPool">
    <arguments>
        <argument name="operations" xsi:type="array">
            <item name="default" xsi:type="array">
                <item name="read" xsi:type="object">Magento\Framework\Model\Operation\Read</item>
                <item name="create" xsi:type="object">Magento\Framework\Model\Operation\Write\Create</item>
                <item name="update" xsi:type="object">Magento\Framework\Model\Operation\Write\Update</item>
                <item name="delete" xsi:type="object">Magento\Framework\Model\Operation\Write\Delete</item>
            </item>
        </argument>
    </arguments>
</type>

What does it do? what does it mean? Where is this used and what for?

6

This class is a part of new database persistence framework. It will allow to save data interfaces implemented in arbitrary way and provide more flexibility, as you will no longer be required to make your model extend Magento\Framework\Model\AbstractModel.

At the moment framework under development but parts of it were introduced for one of the features we are working on. We do not recommend start using it yet as it will significantly change. But it might be interesting to take a look.

The main class is Magento\Framework\Model\EntityManager. EntityManager uses Magento\Framework\Model\OrchestratorPool to get operation for the entity, for instance Magento\Framework\Model\Operation\Write\Create. Operation uses different actions to perform its function. Some actions can be configured to use handlers, for instance Magento\Framework\Model\Entity\Action\CreateRelation.

Also, see di configuration for Magento\Framework\Model\OrchestratorPool, Magento\Framework\Model\Entity\MetadataPool and Magento\Framework\Model\ResourceModel\Db\Relation\ActionPool.

You may find examples of using framework in Magento\Cms\Model\ResourceModel\Page.

Hope this helps.

3
  • I admit it does not make sense 100% to me yet, but it should be enough to get me started. Thanks. One small side question. Since OrchestratorPool is general and not only catalog specific, shouldn't the declaration in my question be added in a different di.xml, not the one in the catalog module?
    – Marius
    Jan 20 '16 at 15:40
  • Yes, it should not be in catalog. It will be moved to different module
    – Anton Kril
    Jan 27 '16 at 13:11
  • 2
    Note to self and all: Within M2.1 this has been moved to app/etc/di.xml and the names of the classes are a bit different: OrchestratorPool is now called OperationPool. Jul 18 '16 at 10:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.