12-11-2011 10:38 PM
public class Deploy {
private static ApplicationContext ctx;
private static ProcessEngine processEngine;
private static RepositoryService repositoryService;
private static RuntimeService runtimeService;
private static TaskService taskService;
private static HistoryService historyService;
private static ManagementService managementService;
@BeforeClass
public static void setUpBeforeClass() throws Exception{
try{
ctx = new ClassPathXmlApplicationContext("activitiContext.xml");
processEngine = (ProcessEngine)ctx.getBean("processEngine");
repositoryService = (RepositoryService)ctx.getBean("repositoryService");
runtimeService = (RuntimeService)ctx.getBean("runtimeService");
taskService = (TaskService)ctx.getBean("taskService");
historyService = (HistoryService)ctx.getBean("historyService");
managementService = (ManagementService)ctx.getBean("managementService");
}catch(RuntimeException e){
e.printStackTrace();
}
}
@Test
public void OpenDatabase(){
System.out.println("—start test—-");
// assert bean no null
assertNotNull(processEngine);
assertNotNull(repositoryService);
assertNotNull(runtimeService);
assertNotNull(taskService);
assertNotNull(historyService);
assertNotNull(managementService);
//use repositoryService deploy to DB
//repositoryService.createDeployment().name("TestReport.bar")
// .addClasspathResource("com/xiegs/activity/test/bpmn20/TestReport.bpmn20.xml")
// .addClasspathResource("com/xiegs/activity/test/bpmn20/TestReport.png")
// .deploy();
// get deployed processDefinition list
List<ProcessDefinition> processDefinitions = repositoryService
.createProcessDefinitionQuery().orderByProcessDefinitionKey()
.asc().orderByProcessDefinitionVersion().desc().list();
assertNotNull(processDefinitions);
assertEquals(2, processDefinitions.size());
//show definition.because singleResult() returned exception when morethan one result.
//ProcessDefinition processDefinition = repositoryService
// .createProcessDefinitionQuery().processDefinitionKey("TestReport")
// .singleResult();
ProcessDefinition processDefinition = processDefinitions.get(1);
String processResourceName = processDefinition.getResourceName();
String diagramResourceName = processDefinition.getDiagramResourceName();
System.out.println("bpmn's name:" + processResourceName + ",diagram name:" + diagramResourceName);
System.out.println("—- ");
//start a instance
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("TestReport");
assertNotNull(processInstance);
System.out.println("—-instance started—");
//query and exec task
Task task = taskService.createTaskQuery().singleResult();
assertEquals("fill report",task.getName());
taskService.complete(task.getId());
assertEquals(1,taskService.createTaskQuery().count());
System.out.println("—-finished fill report task—–");
//query and exec task again
task = taskService.createTaskQuery().singleResult();
assertEquals("manager sign",task.getName());
taskService.complete(task.getId());
assertEquals(0,taskService.createTaskQuery().count());
System.out.println("——finished manager asign task—–");
// now the instance is finished
assertEquals(0,runtimeService.createProcessInstanceQuery().count());
System.out.println("——instance finished—–");
}
}
2,then, in my springMVC's controller,I write code:public class HelloController implements Controller {
/**
* Logger for this class and subclasses
*/
protected final Log logger = LogFactory.getLog(getClass());
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse arg1) throws Exception {
// add two return parameters
request.setAttribute("helloEntity01", "hello,xiegs2007");
request.setAttribute("helloEntity02", "this is a httpRequest param");
request.setAttribute("helloEntity03", "use ${} get the result");
if(pe == null){
logger.info("—-processInstance isn't established—–");
}
// deploy a processInstance
if (repositoryService != null) {
repositoryService
.createDeployment()
.name("Test-Report.bar")
.addClasspathResource(
"main/resources/diagrams/TestReport.bpmn20.xml")
.addClasspathResource(
"main/resources/diagrams/TestReport.png").deploy();
// get deployed instance list
List<ProcessDefinition> processDefinitions = repositoryService
.createProcessDefinitionQuery()
.orderByProcessDefinitionKey().asc()
.orderByProcessDefinitionVersion().desc().list();
request.setAttribute("processlist", processDefinitions);
// display deployed processDefinition
ProcessDefinition processDefinition = repositoryService
.createProcessDefinitionQuery()
.processDefinitionKey("TestReport").singleResult();
request.setAttribute("processdefinition", processDefinition);
// start a processInstance
// query and exec first task
// query and exec second task
// ensure instance completed and is deleted
}
else{
request.setAttribute("processlist", " ");
request.setAttribute("processdefinition", " ");
}
return new ModelAndView("WEB-INF/page/hello.jsp");
}
@Autowired
protected ProcessEngine pe;
@Autowired
protected RepositoryService repositoryService;
}
12-11-2011 10:39 PM
12-13-2011 03:21 AM
12-13-2011 05:43 AM
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/activity?autoReconnect=true" />
<property name="username" value="activity" />
<property name="password" value="activity" />
<property name="defaultAutoCommit" value="false" />
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="persistenceXmlLocation">
<value>classpath:custom-persistence.xml</value>
</property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter">
<property name="databasePlatform" value="org.apache.openjpa.jdbc.sql.MySQLDictionary" />
</bean>
</property>
</bean>
<context:annotation-config />
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
<property name="dataSource" ref="dataSource" />
<property name="transactionManager" ref="transactionManager" />
<property name="databaseSchemaUpdate" value="true" />
<property name="mailServerHost" value="localhost" />
<property name="mailServerPort" value="5025" />
<property name="jpaEntityManagerFactory" ref="entityManagerFactory" />
<property name="jpaHandleTransaction" value="true" />
<property name="jpaCloseEntityManager" value="true" />
<property name="jobExecutorActivate" value="false" />
</bean>
<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>
<bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" />
…..
<bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService" />
</beans>
12-13-2011 09:46 AM
04-29-2016 01:30 PM
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.