Friday, January 15, 2016

Jump Start with Activiti BPM along with Spring mvc

To create web application using spring mvc and activiti in background

This post has been migrated to following link.

 My new blog

steps :1
create maven project with following pom
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

 <modelVersion>4.0.0</modelVersion>

 <groupId>com.gk</groupId>

 <artifactId>activitiMakerChecker</artifactId>

 <packaging>war</packaging>

 <version>0.0.1-SNAPSHOT</version>

 <name>activitiMakerChecker Maven Webapp</name>

 <url>http://maven.apache.org</url>

 <properties>

 <org.springframework.version>4.2.4.RELEASE</org.springframework.version>

  <jdk.version>1.6</jdk.version>

  <spring.version>4.0.5.RELEASE</spring.version>

  <jstl.version>1.2</jstl.version>

  <servletapi.version>3.1.0</servletapi.version>

  <org.hibernate.version>4.0.1.Final</org.hibernate.version>

  <org.hibernate.annotation.version>3.5.6-Final</org.hibernate.annotation.version>

 </properties>

 <dependencies>

  <!-- Activiti dependencies -->

  <dependency>

   <groupId>org.activiti</groupId>

   <artifactId>activiti-engine</artifactId>

   <version>5.14</version>

  </dependency>

  <dependency>

   <groupId>org.activiti</groupId>

   <artifactId>activiti-spring</artifactId>

   <version>5.14</version>

  </dependency>

    <dependency>

   <groupId>org.springframework</groupId>

   <artifactId>spring-beans</artifactId>

   <version>${org.springframework.version}</version>

  </dependency>

  <dependency>

   <groupId>org.springframework</groupId>

   <artifactId>spring-context</artifactId>

   <version>4.2.4.RELEASE</version>

  </dependency>

  <dependency>

   <groupId>org.springframework</groupId>

   <artifactId>spring-jdbc</artifactId>

   <version>4.2.4.RELEASE</version>

  </dependency>

  <dependency>

   <groupId>org.springframework</groupId>

   <artifactId>spring-tx</artifactId>

   <version>4.2.4.RELEASE</version>

  </dependency>

  <dependency>

   <groupId>org.springframework</groupId>

   <artifactId>spring-orm</artifactId>

   <version>${org.springframework.version}</version>

  </dependency>

  <dependency>

   <groupId>org.slf4j</groupId>

   <artifactId>slf4j-api</artifactId>

   <version>1.7.2</version>

  </dependency>

  

  

  <!-- Hibernate dep -->

  <dependency>

   <groupId>org.hibernate</groupId>

   <artifactId>hibernate-core</artifactId>

   <version>${org.hibernate.version}</version>

  </dependency>

  <dependency>

   <groupId>org.hibernate</groupId>

   <artifactId>hibernate-entitymanager</artifactId>

   <version>${org.hibernate.version}</version>

  </dependency>

  <dependency>

   <groupId>org.hibernate</groupId>

   <artifactId>hibernate-annotations</artifactId>

   <version>${org.hibernate.annotation.version}</version>

  </dependency>

  <!-- Oracle dependency -->

  <dependency>

   <groupId>com.oracle</groupId>

   <artifactId>ojdbc6</artifactId>

   <version>11.2.0.3</version>

  </dependency>



  <dependency>

   <groupId>org.springframework</groupId>

   <artifactId>spring-webmvc</artifactId>

   <version>${spring.version}</version>

  </dependency>



  <dependency>

   <groupId>javax.servlet</groupId>

   <artifactId>jstl</artifactId>

   <version>${jstl.version}</version>

  </dependency>





  <dependency>

   <groupId>junit</groupId>

   <artifactId>junit</artifactId>

   <version>3.8.1</version>

   <scope>test</scope>

  </dependency>

 </dependencies>

 <build>

  <finalName>activitiMakerChecker</finalName>

 </build>

</project>







Now run command :



mvn eclipse:eclipse -Dwtpversion=2.0

,
step 2:
web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
    <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>


hello-servlet.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" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
  http://www.springframework.org/schema/context 
  http://www.springframework.org/schema/context/spring-context-3.0.xsd 
  http://www.springframework.org/schema/aop
  http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
  http://www.springframework.org/schema/mvc 
  http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<context:component-scan base-package="com" />
<mvc:annotation-driven />

<bean id="dataSource"
class="oracle.jdbc.pool.OracleDataSource">
<property name="URL" value="your url" />
<property name="user" value="user" />
<property name="password" value="password" />

</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>


<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">

<property name="dataSource" ref="dataSource" />
<property name="transactionManager" ref="transactionManager" />
<property name="databaseSchemaUpdate" value="false" />
<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="runtimeService" factory-bean="processEngine"
factory-method="getRuntimeService" />
<bean id="taskService" factory-bean="processEngine"
factory-method="getTaskService" />
<bean id="historyService" factory-bean="processEngine"
factory-method="getHistoryService" />
<bean id="managementService" factory-bean="processEngine"
factory-method="getManagementService" />

<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>






step 3


Java code



package com.nuc.process;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.ProcessEngines;
import org.activiti.spring.SpringProcessEngineConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;


@Controller
public class MyProcess {

 @Autowired
 ProcessEngine processEngine;
 @RequestMapping(value="hello")
 public String sayHello() {
  System.out.println("Controlle is here");
  if(processEngine==null)
  {
   System.out.println("Nulla");
  }
  else
  {
   System.out.println("Not null");
  }
  
  
  return "welcome";
 }
}

Controller class
package com.gk.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpSession;

import org.activiti.bpmn.model.UserTask;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.gk.dao.Dao;
import com.gk.dao.User;
import com.nuc.service.UserTaskList;


@Controller
public class MyController {

 @Autowired
 @Qualifier("dao")
 Dao dao;
 
 @Autowired
 private ProcessEngine processEngine;
 @RequestMapping(value=("login"),method=RequestMethod.POST)
 public String login(@RequestParam("name")String name,@RequestParam("pass")String pass,@RequestParam("gName")String gName,HttpSession session
   ) {
  
  User u1=new User();
  u1.setName(name);
  u1.setgName(gName);
  u1.setPass(pass);
//  dao.save(u1);
 // return "welcome";
 
  String vl="rtl";
  String js="/resources/js/rtl.js";
  if(vl.equalsIgnoreCase("rtl"))
  {
    js="/resources/js/rtl.js";
  }
  session.setAttribute("js", js);

 
 //  " rel="stylesheet">
  //    

  User u2=dao.findById(name);
  if(u2!=null)
  {
   if(u1.getPass().equals(u2.getPass())&&u1.getgName().equals(u2.getgName()))
   {
    
    session.setAttribute("user", u1);
    return "welcome";
   }
   else
   {
    return "error";
   }
  }
  else
  {
   return "error";
  }
  
  
 }
 
 @RequestMapping(value="startProcess",method=RequestMethod.GET)
 public String startProcess(HttpSession session) {
  
  System.out.println("starting new process");
  
  Mapvariables=new HashMap();
  variables.put("name", "true");
  processEngine.getRepositoryService().createDeployment().addClasspathResource("myProcess.bpmn20.xml").deploy();
  processEngine.getRuntimeService().startProcessInstanceByKey("myProcess",variables);
  User user=(User)session.getAttribute("user");

  //processEngine.getRuntimeService().setVariablesLocal("vars", variables);
 // processEngine.getRuntimeService().setVariables("var", variables);
  session.setAttribute("processEngine", processEngine);
  return "myTask";
  
 }
 @RequestMapping(value="myTasks",method=RequestMethod.GET)
 public String myTasks(HttpSession session) {
 
 //System.out.println("starting new process");
  
  User user=(User)session.getAttribute("user");
  session.setAttribute("processEngine", processEngine);
  
  return "myTask";
  
 }
 
 @RequestMapping(value="claim",method=RequestMethod.GET)
 public String claim(@RequestParam("id")String id,HttpSession session) {
  
  User user=(User)session.getAttribute("user");
  processEngine.getTaskService().claim(id,user.getName());
  
  return "myTask";
 }
 
 @RequestMapping(value="complete",method=RequestMethod.GET)
 public String complete(@RequestParam("id")String id,HttpSession session) {
  
  User user=(User)session.getAttribute("user");
  processEngine.getTaskService().complete(id);
  
  return "myTask";
 }

}


JSPs


index.jsp


<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    
<body>
<h2>Hello World! gk1</h2>
<center>
<br>
<form method="post" action="login">

<input type="text" name="name">
<br><br>
<input type="password" name="pass">
<br><br>
<select name="gName">
 <option>m</option>
 <option>c</option>
</select>
<br><br><br>
<input type="submit">
</form>
</center>
</body>
</html>

welcome.jsp



<%@page import="com.gk.dao.User"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>

<%

String myvar=(String)session.getAttribute("js");
%>

 <link href="<c:url value="/resources/css/rtl.css" />" rel="stylesheet">
 <script src=<c:url value="<%=myvar %>" />></script>
</head>
<body>
Welcome <%
User user=(User)session.getAttribute("user");
if(user!=null)
{
 out.print(user.getName());
}

%>

<%= session.getAttribute("js") %>
<c:catch>


</c:catch>
<a href="startProcess">Start Process</a>
<a href="myTasks">MyTasks</a>
</body>
</html>



mytask.jsp



<%@page import="org.activiti.engine.ProcessEngine"%>
<%@page import="org.activiti.engine.task.Task"%>
<%@page import="java.util.List"%>
<%@page import="com.gk.dao.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

your tasks


<%
 User user=(User)session.getAttribute("user");
 ProcessEngine processEngine=(ProcessEngine)session.getAttribute("processEngine");
 List<Task>tasks=processEngine.getTaskService().createTaskQuery().taskCandidateGroup(user.getgName()).list();
 out.print("<br>");
 out.print("Tasks in your group");
 for(Task t:tasks)
 {
  out.print("<br>Id:"+t.getId()+"Name:"+t.getName()+"<a href='claim?id="+t.getId()+"'>Claim it</a>");
 }
 out.print("<br>");
 out.print("Your tasks");
 List<Task>myTasks=processEngine.getTaskService().createTaskQuery().taskAssignee(user.getName()).list();
 for(Task t:myTasks)
 {
  out.print("<br>Id:"+t.getId()+"Name:"+t.getName()+"<a href='complete?id="+t.getId()+"'>Complete it</a>");
 }
 
%>
</body>
</html>



No comments:

Post a Comment