一步一步学习工作流--Flow4J(二)
二、 建立F4JStruts工程
1. 建立F4JStruts工程,分别往工程里添加Struts和Flow4J:
2.将Web.xml中有关*.do文件的处理交给Flow4J,修改如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!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>Flow4j-Struts demonstration</display-name>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>net.orthanc.flow4j.runtime.connectors.struts.Flow4JActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>flow-repository-class</param-name>
<param-value>com.F4JStruts.struts.FlowRepository</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- The Usual Welcome File List -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- Struts Tag Library Descriptors -->
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-logic</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-nested</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-tiles</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>
</web-app>
2.建立HelloWorld的Struts模块
(1)添加com.F4JStruts.struts.hello包,在其下创建一个继承自AbstractTaskFlowlet的类HelloWorld.java,在execute()方法下添加如下语句:
dict.put("toOutput", "Hello World");
在getName()下添加:
return "HelloWorldTask";
(2)在com.F4JStruts.struts.hello包下新建一个名为HelloWorldFlow.f4j的Flow Model:
HelloWorldFlow.f4j的内容如下:
相应地,在WebRoot目录下新建文件夹hello,并在hello下新建helloWorld.jsp,在<body>里添加如下内容:
<bean:write name="toOutput"/>
(3)在Struts的配置文件里添加如下内容:
<action path="/helloWorld"
type="action_class">
<forward name="success" path="/hello/helloWorld.jsp"/>
</action>
(4)在com.F4JStruts.struts下新建实现IFlowRepository接口的类FlowRepository.java,在getFlowClasses()方法下添加:
List c = new ArrayList();
c.add(HelloWorldFlow.class);
return c;
(5)重启服务器,在浏览器地址栏中输入http://localhost:8080/F4JStruts/HelloWorld-start.do,在网页中可看到“hello world”。