Не удалось опубликовать акцию Hybris - PullRequest
0 голосов
/ 23 апреля 2019

Я создал рекламную акцию в hybris 1808, но когда я пытаюсь опубликовать рекламную акцию, она проваливается. То же продвижение действует в 1808 году Vanilla Hybris

Я добавил следующие свойства в localextension.xml и попробовал, но все еще сталкиваюсь с той же проблемой

  1. продвижение двигателя образцы аддона
  2. promotionengineatddtests

Я ожидал, что статус повышения будет «Публикация», но он не выполняется при публикации со следующими журналами ошибок:

19.04.23 17:54:40:527   INFO    *************************************
19.04.23 17:54:40:535   INFO    Starting RuleEngineCompilePublishJob
19.04.23 17:54:40:535   INFO    *************************************
19.04.23 17:54:44:903   ERROR   The rule compilation finished with errors
19.04.23 17:54:44:910   ERROR   Exception caught - de.hybris.platform.servicelayer.exceptions.ModelSavingException: [de.hybris.platform.droolsruleengineservices.interceptors.DroolsRuleValidateInterceptor@3d9f547f]:rule(code:testPromotion) The drl content does not contain the matching rule declaration with the value of your hybris rule's uuid attribute. Please adjust the uuid of your hybris rule and/or add: rule "2e0e0ac2-7475-44c1-9114-07a0d7174534" (i.e. putting the rule uuid in double-quotes) in your drl content.
19.04.23 17:54:44:915   INFO    *************************************
19.04.23 17:54:44:915   INFO    RuleEngineCompilePublishJob finished with errors
19.04.23 17:54:44:915   INFO    *************************************

1 Ответ

1 голос
/ 26 апреля 2019

Какую версию гибриса вы используете?

Потому что я столкнулся с этим при обновлении с 6.3 до 6.7 при публикации промоушена.

Я переопределил метод в моем пользовательском классе в 6.3, который выглядит следующим образом:

@Override
    protected String generateRuleContentRule(final DroolsRuleGeneratorContext context, final String actions, final String metadata)
    {
        final AbstractRuleModel rule = context.getRuleCompilerContext().getRule();
        final Map variables = context.getVariables();
        final StringBuilder buffer = new StringBuilder(4096);
        buffer.append("rule \"").append(rule.getUuid()).append("\"\n");
        buffer.append("@ruleCode(\"").append(rule.getCode()).append("\")\n");
        buffer.append(metadata);
        buffer.append("dialect \"mvel\" \n");
        buffer.append("salience ").append(rule.getPriority()).append('\n');

...

Этот переопределенный метод из класса DefaultDroolsRuleTargetCodeGenerator должен был быть изменен для включения в него droolRule uuid, а не правила uuid, которое является изменением, включенным в класс OOTB DefaultDroolsRuleTargetCodeGenerator в 6.7

     protected String generateRuleContentRule(DroolsRuleGeneratorContext context, String actions, String metadata) {
    AbstractRuleModel rule = context.getRuleCompilerContext().getRule();
    DroolsRuleModel droolsRule = context.getDroolsRule();
    StringBuilder buffer = new StringBuilder(4096);
    buffer.append("rule \"").append(droolsRule.getUuid()).append("\"\n");
    buffer.append("@ruleCode(\"").append(rule.getCode()).append("\")\n");
    buffer.append("@moduleName(\"").append(context.getRuleCompilerContext().getModuleName()).append("\")\n");
    buffer.append(metadata);
    buffer.append("dialect \"mvel\" \n");

Это решило ошибку выше.

Надеюсь, это поможет. Удачного кодирования.

...