Как изменить данные почтового задания с помощью Spring Boot и Flowable - PullRequest
0 голосов
/ 01 апреля 2019

Я создал конфигурацию почтовой задачи

<serviceTask id="mailtask_name" name="Name" flowable:delegateExpression="${STCustomMail}" flowable:type="mail" >
  <extensionElements>
    <flowable:field name="to">
      <flowable:string><![CDATA[mail@mail.com]]></flowable:string>
    </flowable:field>
    <flowable:field name="subject">
      <flowable:string><![CDATA[Subject]]></flowable:string>
    </flowable:field>
    <flowable:field name="text">
      <flowable:string><![CDATA[Text]]></flowable:string>
    </flowable:field>
  </extensionElements>
</serviceTask>

и класс:

@Log
@Service
public class STCustomMail implements JavaDelegate {

   private Expression subject;
   private Expression to;
   private Expression text;

   public void execute(DelegateExecution execution) {
      log.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
      String subjectText = "New subject";
      execution.setVariable(subject.getValue(execution).toString(), subjectText);
      execution.setVariable(to.getValue(execution).toString(), "newmail@newmail.com");
      execution.setVariable(text.getValue(execution).toString(), "newtext");
   }
}

К сожалению, мой класс STCustomMail не работает.Я не могу изменить какие-либо почтовые данные.

Что не так?

Может быть, есть другое решение, как настроить / создать динамически (?) Расположение почтовых данных?

1 Ответ

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

flowable:delegateExpression и flowable:type нельзя смешивать вместе.

По умолчанию, если flowable:type равно mail, тогда Flowable будет использовать MailActivityBehavior для отправки электронного письма. Это означает, что ваш JavaDelegate никогда не будет вызван.

Если вы хотите изменить поведение почтовой активности, вам потребуется предоставить собственную реализацию для него. Для этого вам нужно предоставить свой ActivityBehaviorFactory (вы можете расширить DefaultActivityBehaviorFactory) и переопределить следующие методы:

  • MailActivityBehavior createMailActivityBehavior(ServiceTask serviceTask)
  • MailActivityBehavior createMailActivityBehavior(SendTask sendTask)
...