之前承诺过要逐一讲解helloworld.xml的配置文件细节,但是在讲解这些节点之前,需要先让我们的helloworld飞起来,在这里,我们采用junit4进行测试,应此,读者除了需要将osworkflow所需要的jar文件加入到您的classpath之外,还需要将junit加入进来,话已至此,先让我们的osworkflow飞起来哈!
1、HelloWorld单元测试。
package com.wangwenjun.osworkflow;其中Workflow是一个比较重量级的对象,他在创建的时候需要创建一系列对象,比如解析配置文件,初始化持久化对象等等,因此在实际的项目中尽量的缓存,这样可以减少很多的开销。
import java.util.Collections;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import com.opensymphony.workflow.InvalidActionException;
import com.opensymphony.workflow.InvalidEntryStateException;
import com.opensymphony.workflow.InvalidInputException;
import com.opensymphony.workflow.InvalidRoleException;
import com.opensymphony.workflow.Workflow;
import com.opensymphony.workflow.WorkflowException;
import com.opensymphony.workflow.basic.BasicWorkflow;
import com.opensymphony.workflow.spi.WorkflowEntry;
/**
* @author Alex(QQ:532500648)
* Create first work flow and test basic method,read and execute this unit test source
* maybe you will know the basic use of work flow,if you have some questions don't discard,
* Insist on reading the back of the article or give me a message.
*/
public class HelloWorld {
private Workflow wf = null;
@Before
public void init()
{
wf = new BasicWorkflow("helloWorld");
}
@Test
public void helloWorld()
{
try {
long id = wf.initialize("first", 100, Collections.EMPTY_MAP);
/*test is or not work flow have 1 valid steps*/
Assert.assertEquals(1,wf.getCurrentSteps(id).size());
/* invoke do action method.*/
wf.doAction(id, 1, Collections.EMPTY_MAP);
Assert.assertEquals(1,wf.getCurrentSteps(id).size());
/*query history steps*/
Assert.assertEquals(1, wf.getHistorySteps(id).size());
/*invoke do action method again.*/
wf.doAction(id, 2, Collections.EMPTY_MAP);
/*query history steps*/
Assert.assertEquals(2, wf.getHistorySteps(id).size());
/*test wf is or not finished.*/
Assert.assertEquals(0,wf.getCurrentSteps(id).size());
/*also can use state to test.*/
Assert.assertEquals(WorkflowEntry.COMPLETED,wf.getEntryState(id));
} catch (InvalidActionException e) {
e.printStackTrace();
} catch (InvalidRoleException e) {
e.printStackTrace();
} catch (InvalidInputException e) {
e.printStackTrace();
} catch (InvalidEntryStateException e) {
e.printStackTrace();
} catch (WorkflowException e) {
e.printStackTrace();
}
}
}
针对上一篇文章中的配置文件,我们的测试用例全部测试通过,那么我们是不是应该对xml中的配置进行比较详细的解释,嗯,我看着是一个比较不错的主意(有点自说自话的意思哈,见谅!)
我们下一篇文章见!详细介绍helloworld的各个配置细节,如果您还保持着比较浓烈的好奇心,请等待这下一篇的新鲜出炉。