0

I've created an eclipse maven project that is suppose to start a serviceTask in Activti bpm that sends an email to a given user.

I'm using apache James server and have configured it for gmail, I'm able to send emails through telnet but not by using my service task.

The problem is that my configuration gets overwritten by a class called Email in apache commons. I do not understand why this class is called, I don't use apache.commons in my java code.

James configuration: 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>

...

This is the bpmn20.xml containing the process definition:

    <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>

This is the java code:

    // 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();

This is the activiti.cfg.xml file:

    <?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>
agiledevpro
  • 133
  • 1
  • 5
  • 17

1 Answers1

0

This problem is now solved. I solved it by setting the data for my process engine.

     ProcessEngine processEngine = ProcessEngineConfiguration
     .createStandaloneInMemProcessEngineConfiguration()
     .setMailServerHost("smtp.gmail.com")
     .setMailServerPort(587)
     .setMailServerUsername("root")
     .setMailServerPassword("root")
     .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE)
     .setMailServerUseSSL(true)
     .setMailServerUseTLS(true)
     .setMailServerDefaultFrom("workflowact@gmail.com")
     .buildProcessEngine();
agiledevpro
  • 133
  • 1
  • 5
  • 17