Это один из многих случаев, когда источник Alfresco может быть поучительным. Если вы посмотрите на класс MailActionExecuter, то увидите, что для него определено несколько параметров:
public static final String NAME = "mail";
public static final String PARAM_LOCALE = "locale";
public static final String PARAM_TO = "to";
public static final String PARAM_CC = "cc";
public static final String PARAM_BCC = "bcc";
public static final String PARAM_TO_MANY = "to_many";
public static final String PARAM_SUBJECT = "subject";
public static final String PARAM_SUBJECT_PARAMS = "subjectParams";
public static final String PARAM_TEXT = "text";
public static final String PARAM_HTML = "html";
public static final String PARAM_FROM = "from";
public static final String PARAM_FROM_PERSONAL_NAME = "fromPersonalName";
public static final String PARAM_TEMPLATE = "template";
public static final String PARAM_TEMPLATE_MODEL = "template_model";
public static final String PARAM_IGNORE_SEND_FAILURE = "ignore_send_failure";
public static final String PARAM_SEND_AFTER_COMMIT = "send_after_commit";
Одним из них является PARAM_TEMPLATE_MODEL, который вы задали бы с помощью «template_model». «Модель» в этом параметре - это то, что должно бросаться в глаза. Это означает, что вы можете передать набор ключей и значений с помощью этого параметра.
Позже, в источнике для этого класса мы увидим, где параметр считывается, а затем используется для построения полной модели, которая затем передаетсяв шаблоне Freemarker:
Map<String, Object> suppliedModel = null;
if(ruleAction.getParameterValue(PARAM_TEMPLATE_MODEL) != null)
{
Object m = ruleAction.getParameterValue(PARAM_TEMPLATE_MODEL);
if(m instanceof Map)
{
suppliedModel = (Map<String, Object>)m;
}
else
{
logger.warn("Skipping unsupported email template model parameters of type " + m.getClass().getName() + " : " + m.toString());
}
}
// build the email template model
Map<String, Object> model = createEmailTemplateModel(actionedUponNodeRef, suppliedModel, fromPerson, toRecipients);
Итак, если вы прокомментируете ссылку на шаблон и передаете в действие дополнительный параметр, предполагая, что ваш шаблон использует элементы, добавленные в модель. вы должны увидеть их в полученном электронном письме.
Ваш код будет выглядеть примерно так:
var templateModel = {};
templateModel["fullName"] = fullName;
templateModel["manager"] = manager;
templateModel["joiningDate"] = joiningDate;
mail.parameters.template_model = templateModel;