Использование своих java классов в Alfresco
В этой статье я покажу, как использовать свои java классы при написании скриптов в Alfresco.
В качестве примера я предлагаю написать класс, который будет отсылать уведомления по электронной почте. В предыдущей статье я писал о ограничениях, которые наложены на письма, отправляемые при помощи actions. Давайте избавимся от них :) Чтобы класс можно было использовать внутри Alfresco, он обязательно должен быть унаследован от BaseProcessorExtension. Итак, пишем вот такой нехитрый код (Notifier.java):
// пакет package ru.ossportal.notifier; // импорт import org.alfresco.repo.processor.BaseProcessorExtension; import javax.mail.*; import javax.mail.internet.*; import java.util.Properties; // класс для отправки уведомлений // использует smtp-сервер 127.0.0.1:25 без аутентификации public class Notifier extends BaseProcessorExtension { // функция отправки почты public boolean send(String to, String toPerson, String subject, String content) { // результат boolean result = true; try { // задаём параметры соединения Properties props = new Properties(); props.setProperty("mail.transport.protocol", "smtp"); props.setProperty("mail.host", "127.0.0.1"); props.setProperty("mail.port", "25"); // создаём соединение Session mailSession = Session.getDefaultInstance(props, null); Transport transport = mailSession.getTransport(); // задаём параметры письма MimeMessage message = new MimeMessage(mailSession); message.setSubject(subject); message.setText(content); message.setFrom(new InternetAddress("noreply@nohost.zz","Notification system")); message.setRecipient(Message.RecipientType.TO, new InternetAddress(to, toPerson)); // отправялем письмо transport.connect(); transport.send(message); transport.close(); } catch (Exception e) { result = false; } return result; } }
Собираем, делаем jar и кладём в tomcat/webapps/alfresco/WEB-INF/lib. Затем регистрируем наш класс в файле tomcat/webapps/alfresco/WEB-INF/classes/alfresco/script-services-context.xml:
<bean id="Notifier" parent="baseJavaScriptExtension" class="ru.ossportal.notifier.Notifier"> <property name="extensionName"> <value>Notifier</value> </property> </bean>
После этого внутри любого javascript-кода станет доступным новый объект Notifier, при помощи которого можно отправлят уведомления. Вместо кода, который мы писали раньше:
var mail = actions.create("mail"); mail.parameters.to = initiator.properties["cm:email"]; mail.parameters.subject = "Публикация статьи"; mail.parameters.text = "Добрый день.nnВаша статья прошла проверку редактора и отправлена техническому редактору на рассмотрение."; mail.execute(bpm_package);
можно писать вот так:
Notifier.send(initiator.properties["cm:email"], initiator.properties["cm:firstName"]+" "+initiator.properties["cm:lastName"], "Публикация статьи", "Добрый день.nnВаша статья прошла проверку редактора и отправлена техническому редактору на рассмотрение.");
Прикрепленные файлы | Размер |
---|---|
notifier.jar | 1.31 кб |
Комментарии
17/11/2011 - 21:54
Спасибо за статью!
Вопрос - а не возникало ли такой траблы, что после прописывания бина в script-services-context.xml сервак альфрески (томкат) вобще не может подняться? У меня его загрузка просто останавливается на одном месте и висит.. :(
пути и именование класса в описании бина - верные.. джарник тоже подложен в правильное место и класс в нем присутствует
18/11/2011 - 10:14
Нет, такой проблемы не было. Пару раз tomcat не запускался из-за того, что был указан не уникальный bean id. Можете лог показать?