mpoiriert/business-rule-engine-bundle

dev-master 2014-03-27 13:00 UTC

This package is auto-updated.

Last update: 2024-09-09 13:36:14 UTC


README

Build Status

BusinessRuleEngine集成为Symfony捆绑包。

您应该阅读Business Rule Engine文档,以了解如何以及为什么使用它。当前的文档旨在解释如何在symfony中启用、配置它。

<?php

// in AppKernel::registerBundles()
$bundles = array(
    // ...
    new Nucleus\Bundle\BusinessRuleEngineBundle\NucleusBusinessRuleEngineBundle(),
    // ...
);

从那里您可以开始使用BusinessRuleEngine。

服务名为nucleus.business_rule_engine,因此您可以通过服务容器像这样访问它

<?php

$businessRuleEngine = $serviceContainer->get('nucleus.business_rule_engine');

或者将其注入到您的服务中。当您引用对象时,请务必使用接口Nucleus\BusinessRuleEngine\IBusinessRuleEngine

添加服务作为规则

要将服务作为规则添加,您需要标记特定的服务。

<service id="my_namespace.my_module.my_service" class="MyNamespace\MyModule\MyServiceClass">
    <tag name="nucleus.business_rule_engine.rule" ruleName="myRuleName" />
</service>

示例使用XML,请参考symfony文档了解如何在YML或PHP中标记。

名为nucleus.business_rule_engine.rule的标记由本捆绑包使用,以确定哪些服务是规则。属性ruleName将是您在调用业务规则引擎时必须引用的。

由于BusinessRuleEngine期望可调用对象作为规则,请确保在您的服务中实现了PHP上的__invoke魔术方法。

<?php

namespace MyNamespace\MyModule;

class MyServiceClass
{
    /* ... */

    public function __invoke($toto)
    {
        /* ... do processing ... */

        return $result;//The business rule engine expect to receive a boolean value in return
    }
}

在我们的捆绑包中,我们实现了一个ContainerAware的IRuleProvider,因此服务将在您调用规则之前不会被加载。

symfony集成文档