/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* Copyright (c) 2013, MPL CodeInside http://codeinside.ru
*/
package ru.codeinside.gses.activiti.behavior;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.delegate.BpmnError;
import org.activiti.engine.impl.bpmn.behavior.MailActivityBehavior;
import org.activiti.engine.impl.bpmn.behavior.TaskActivityBehavior;
import org.activiti.engine.impl.bpmn.helper.ErrorPropagation;
import org.activiti.engine.impl.context.Context;
import org.activiti.engine.impl.pvm.delegate.ActivityExecution;
import ru.codeinside.adm.AdminServiceProvider;
import ru.codeinside.gses.API;
/**
*
* Переопределяет поведение mail task.
*
*/
public class MailBehavior extends TaskActivityBehavior {
private MailActivityBehavior activityBehavior;
public MailBehavior(MailActivityBehavior activityBehavior) {
this.activityBehavior = activityBehavior;
}
public void execute(ActivityExecution execution) throws Exception {
try {
ProcessEngineConfiguration processEngineConfiguration = Context.getProcessEngineConfiguration();
processEngineConfiguration.setMailServerUsername(AdminServiceProvider.get().getSystemProperty(API.MT_SENDER_LOGIN));
processEngineConfiguration.setMailServerDefaultFrom(AdminServiceProvider.get().getSystemProperty(API.MT_DEFAULT_FROM));
processEngineConfiguration.setMailServerPassword(AdminServiceProvider.get().getSystemProperty(API.MT_PASSWORD));
processEngineConfiguration.setMailServerHost(AdminServiceProvider.get().getSystemProperty(API.MT_HOST));
processEngineConfiguration.setMailServerPort(Integer.valueOf(AdminServiceProvider.get().getSystemProperty(API.MT_PORT)));
processEngineConfiguration.setMailServerUseTLS(Boolean.valueOf(AdminServiceProvider.get().getSystemProperty(API.MT_TLS)));
this.activityBehavior.execute(execution);
} catch (Exception err) {
ErrorPropagation.propagateError(new BpmnError("mail-send-error", err.getMessage()), execution);
String message;
Throwable e = err.getCause();
if (e != null)
message = e.getMessage();
else
message = err.getMessage();
execution.setVariable("mail-send-error", message);
err.printStackTrace();
}
}
}