First alpha release of the Rules module for Drupal 8.
Warning: this is a preview release and is not intended for production sites. Use at your own risk.
API stability: while we still expect some changes to the underlying API provided by Rules we have now reached a certain maturity so that future changes should be minimal. The most stable part are the APIs for modules to provide actions, conditions and events. Thus, we encourage developers to start implementing/porting their actions and conditions for Rules now. There are many examples already included in this release, see RulesAction and Condition plugins.
User interface: You can configure reaction rules in the UI and they will work - but the UI is still in early stages and not nice to use. The most obvious missing part is auto completion for available data selectors, which we will be worked on in the next months.
Configuration: Reaction rules and components are stored as configuration entities, which is already working and they can be exported to YAML. We can’t promise absolute configuration schema stability at this point, but we don’t expect any changes so far. Be prepared to fix the configuration or to re-create your rules at one of the next releases - we don’t support an upgrade path before the first beta release.
Upgrading from Drupal 7: not supported, you have to re-create all your rules. Patches/ideas for automating this are welcome!
Documentation for contributing or developing with Rules can be found at http://docs.d8rules.org. It currently mostly covers the essentials: Providing actions, conditions and events.
Bug reports are welcome, please file them as usual in the issue queue.
- Implemented an embeddable UI, so that other modules can easily integrate Rules configuration forms and pages into their UI.
Implemented a reusable token replacement API that covers all entities and fields via Typed Data. Some examples of valid tokens would be:
[ node:field_integer:2:value | default('0') ] [ node:title:value | default('tEsT') | lower ]
The replacement API makes use of twig style replacements and is extensible via further filter plugins (like default, or lower). As the token replacement API is independent of Rules, we are working on moving it and other Typed Data API improvements to another location, such that those APIs are re-usable independently of Rules.
Changes since 8.x-3.0-unstable7:
- #2682773 by fago: Repair adding components and embed UI for editing expressions.
- #2682533 by fago: Make config tag storage multiple.
- #2682531 by fago: Store rules config version instead of the core version in config.
- #2682535 by fago: Remove deprecated module property from config.
- #2672816 by fago: Update namespace in RulesUiDefinition exception.
- #2672816 by fago: Move UI related classes into a UI namespace.
- #2681733 by fago: Improve metadata assertions test coverage.
- #2681733 by fago: Improve docs to clarify the difference between refining context definitions and asserting metadata.
- #2681733 by fago: Add test coverage for metadata assertions.
- #2681733 by fago: Add metadata assertion support to expressions.
- #2681733 by fago: Allow context-aware plugins to assert metadata.
- #2664700: Expose Rules components as action plugin
- Removed duplicate config schema definition
- Enabled Drupal 8.2.x dev in testing
- Improve prepareContextWithMetadata() documentation to mention possibly thrown context exceptions.
- #2281079 by fago: Add test-coverage for refining context definitions of data comparisons.
- #2676996 by fago: Add test coverage for checking integrity based upon selected context.
- Re-name data comparison operator context to operation and make it required.
- Improve work-around for #2677162 to only silently catch exception for required context.
- Fix integrity checks of required context to respect default values.
- #2676996 by fago: Allow contextual plugins to fetch metadata of configured context.
- 2677028 by fago: Make VariableAddTest properly refine context.
- #2677034 by fago: Document how integrity checks and exeuction metadata state preparations relate.
- #2677034 by fago: Make type checking strict while there is no type inheritance support.
- #2677034: Update ContextHandlerTraitTest to recent changes.
- #2677034 by fago: Make checking integrity work with preparing metadata and fix refined context to be respected.
- #2677034 by fago: Simplify preparation of metadata state logic and prepare its usage for integrity checks.
- Re-factored to move context-related integrity checks below Context namespace.
- #2677034: Add test case to verify provided variables use refined context when checking integrity.
- #2677034: Add a test case to ensure context is refined when checking integrity.
- #2677042 by fago: Test that using provided variables passes integrity check.
- #2677018 by fago: Condition and Action expression plugins have unused context methods. Also improve the documenation of those plugins a bit.
- #2666200 by a.milkovsky: Change reaction-rule config to save the event with settings
- #2453469 by fago: Added configuration schema for the test log actions.
- #2453469 by fago: Allow condition and action plugins to provide context value schema and provide some examples.
- #2453469 by fago: Enable strict config schema checking in tests.
- #2453469 by fago: Make rules settings config schema validate.
- #2453469 by fago: Make rules condition config schema validate.
- #2658842 by a.milkovsky: Add support for Rules event handlers and per-bundle entities
- #2672456 by fago: Add cancel button to embed form example.
- #2672456 by fago: Make lock-form handling re-usable when embedding component forms.
- #2672828 by fago: RulesUiHandlerTrait needs to have a setter.
- Add missing group annotation to RulesUiEmbedTest.
- #2672746 by fago: ActionSetForm really should be ActionContainerForm.
- #2672452 by fago: Remove getConfigEntityId() method from expressions.
- #2671056 by fago: Add test coverage for the example embedded UI.
- #2671056 by fago: Fix container forms to do not hard-code routes and implement re-used conditions UI in the test example settings form.
- Re-factor to have calculateDependencies() in the re-usable RulesComponent class.
- #2671056 by fago: Move configuration import/export helper to RulesComponent and refactor RulesComponentConfig to use it. Also fixes #2671200 to consistenly deal with provided config names only.
- #2671056 by fago: Refactor configuration export of config entities for re-usable component sub-keys.
- #2671056 by fago: Add RulesUiComponentProviderInterface for config entities providing the edited component.
- #2672446 by fago: ReactionRuleForm really is just RuleForm.
- Fixed tests fails on Drupal 8.1.x because of lazy installed router DB table
- Enable PHP 5.6 testing with the latest version
- Fixed Rules redirect kernel test to not fail on Drupal 8.1.x
- #2659028 by fago: Convert RulesUI to work based on RulesComponent
- #2665264 by klausi: Added provided context definitions to Rules component config
- #2664712 by emclaughlin: Remove the redundant "entity" part from entity create action IDs
- #2501939: Implemented Preparing execution metadata state for an expression in the tree
- #2664706 by fago: Fix expression edit routes to use the admin theme by default.
- Removed unused variables
- Removed another PHPCS exception, now fixed in Coder
- Updated PHPCS config for new released Coder version
- #2663934: Convert rules_ui plugin definitions to objects, generate basic UI routes and convert the existing UI to use the generated routes.
- #2662816 by martin107: Added missing @group for UI embed test
- #2659954: Fixed bogus UI cancel test
- #2659954: Enable web server output in Travis CI for backtracing random test fails
- #2659808: Improved browser tests to check for PHP errors
- #2659806 by Cogax, klausi: Fixed PHP warnings when adding an action
- #2663572: Add integrity violation UUID where it is created
- #2660000 by fago: Correct RulesDefaultEeventHandler::getContextDefinition() to consider refined context.
- #2660000 by fago: Small improvements / fixes for the documentation of RulesConfigurableEventHandlerInterface.
- #2660000 by fago: Add todo for cloning execution state before execution another reaction rule.
- #2661362: @file block for kernel tests incorrect namespace updated.
- #2659932 by fago: Allow modules to define Rules UI instances via yaml files.
- #2659990 by vasi1186: Creating reaction rules via API does not trigger container rebuilds
- #2662464 by fago: Move RulesEventManager below the Core sub-namespace.
- Updated Travis CI to run composer install for Drupal 8.1.x
- #2658372 by Cogax: Complete Entity Create action context refining
- #2660000 by fago: Leverage event plugin classes as event handlers.
- #2659680 by klausi: addExpressionObject() method should always return $this.
- Removed unused methods from ExpressionBase