特定のユーザーに電子メールを送信する Activti bpm で serviceTask を開始することを想定している Eclipse Maven プロジェクトを作成しました。
Apache James サーバーを使用しており、gmail 用に構成しました。telnet 経由でメールを送信できますが、サービス タスクを使用することはできません。
問題は、構成が apache commons の Email というクラスによって上書きされることです。このクラスが呼び出される理由がわかりません。Java コードで apache.commons を使用していません。
ジェームズの構成: config.xml
<servernames autodetect="true" autodetectIP="true">
<servername>smtp.gmail.com</servername>
</servernames>
<dnsserver>
<servers>
<!--Enter ip address of your DNS server, one IP address per server -->
<!-- element. -->
<!--
<server>127.0.0.1</server>
-->
<server> 8.8.8.8 </server>
<server> 8.8.4.4 </server>
</servers>
<!-- Change autodiscover to false if you would like to turn off autodiscovery -->
<!-- and set the DNS servers manually in the <servers> section -->
<autodiscover>true</autodiscover>
<authoritative>false</authoritative>
<!-- Maximum number of entries to maintain in the DNS cache -->
<maxcachesize>50000</maxcachesize>
</dnsserver>
...
smtpserver enabled="true">
<port>587</port>
...
これは、プロセス定義を含む bpmn20.xml です。
<definitions id="definitions"
targetNamespace="http://activiti.org/bpmn20"
xmlns:activiti="http://activiti.org/bpmn"
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL">
<process id="EmailNotification" name="emailNotification">
<documentation>Simple Email Notification Task</documentation>
<startEvent id="startevent1" name="Start"></startEvent>
<sequenceFlow id="flow1" name="" sourceRef="startevent1"
targetRef="mailtask1"></sequenceFlow>
<endEvent id="endevent1" name="End"></endEvent>
<sequenceFlow id="flow2" name="" sourceRef="mailtask1"
targetRef="endevent1"></sequenceFlow>
<serviceTask id="mailtask1" name="Email Notification"
activiti:type="mail">
<extensionElements>
<activiti:field name="to" expression="workflowact@gmail.com"
></activiti:field>
<activiti:field name="from" expression="no-reply@forgerock.com"
></activiti:field>
<activiti:field name="subject" expression="Simple Email Notification"
></activiti:field>
<activiti:field name="html">
<activiti:expression><![CDATA[Here is a simple Email Notification
from a user.]]></activiti:expression>
</activiti:field>
</extensionElements>
</serviceTask>
</process>
</definitions>
これはJavaコードです:
// Create Activiti process engine
ProcessEngine processEngine = ProcessEngineConfiguration
.createStandaloneInMemProcessEngineConfiguration()
.buildProcessEngine();
// Get Activiti services
RepositoryService repositoryService = processEngine.getRepositoryService();
RuntimeService runtimeService = processEngine.getRuntimeService();
// Deploy the process definition
repositoryService.createDeployment()
.addClasspathResource("risk.bpmn20.xml")
.deploy();
// Start a process instance
String procId =
runtimeService.startProcessInstanceByKey("EmailNotification").getId();
これは activiti.cfg.xml ファイルです。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration" >
<!-- Database configurations -->
<property name="databaseType" value="h2" />
<property name="jdbcUrl
value="jdbc:h2:C:/Users/Alexandra/tmp/activiti;AUTO_SERVER=TRUE" />
<property name="jdbcDriver" value="org.h2.Driver" />
<property name="jdbcUsername" value="sa" />
<property name="jdbcPassword" value="" />
<!-- Database configurations -->
<property name="databaseSchemaUpdate" value="true" />
<!-- job executor configurations -->
<property name="jobExecutorActivate" value="true" />
<!-- mail server configurations -->
<property name="mailServerHost" value="smtp.gmail.com" />
<property name="mailServerPort" value="587" />
<property name="mailServerUsername" value="root" />
<property name="mailServerPassword" value="root" />
<property name="history" value="full" />
<property name="customPostDeployers">
<list>
<bean class="org.activiti.engine.impl.rules.RulesDeployer" />
</list>
</property>
</bean>
</beans>