⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 statemachineactiontest.java

📁 OBPM是一个开源
💻 JAVA
字号:
package cn.myapps.core.workflow.engine;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import junit.framework.TestCase;
import cn.myapps.constans.Environment;
import cn.myapps.constans.Web;
import cn.myapps.core.dynaform.document.action.DocumentAction;
import cn.myapps.core.dynaform.document.ejb.Document;
import cn.myapps.core.dynaform.document.ejb.DocumentProcess;
import cn.myapps.core.multilanguage.ejb.LanguageType;
import cn.myapps.core.user.action.WebUser;
import cn.myapps.core.user.ejb.UserProcess;
import cn.myapps.core.user.ejb.UserVO;
import cn.myapps.core.workflow.FlowState;
import cn.myapps.core.workflow.element.Node;
import cn.myapps.core.workflow.storage.definition.ejb.BillDefiProcess;
import cn.myapps.core.workflow.storage.definition.ejb.BillDefiVO;
import cn.myapps.core.workflow.storage.runtime.ejb.NodeRT;
import cn.myapps.util.ProcessFactory;

public class StateMachineActionTest extends TestCase {

	UserVO user;

	Document doc;

	BillDefiVO flow;

	StateMachineAction action;

	DocumentAction docAction;

	protected void setUp() throws Exception {
		super.setUp();

		action = new StateMachineAction();
		docAction = new DocumentAction();
		Map session = new HashMap();

		UserProcess up = (UserProcess) ProcessFactory
				.createProcess(UserProcess.class);
		user = new UserVO();
		user.setName("nicholas");
		user.setEmail("zhen_001@163.com");
		user.setLoginno("nic");
		user.setLoginpwd("123456");
		user.setStatus(1);
		user.setLanguageType(LanguageType.LANGUAGE_TYPE_ENGLISH);
		up.doCreate(user);

		session.put(Web.SESSION_ATTRIBUTE_USER, new WebUser(user));
		action.getContext().setSession(session);
		docAction.getContext().setSession(session);

		BillDefiProcess bp = (BillDefiProcess) ProcessFactory
				.createProcess(BillDefiProcess.class);
		flow = new BillDefiVO();
		flow.setSubject("testBillDefiVO");
		flow.setFlow("<cn.myapps.core.workflow.element.FlowDiagram>\n"
				+ "<ACTION_NORMAL>0</ACTION_NORMAL>\n"
				+ "<ACTION_REMOVE>1</ACTION_REMOVE>\n"
				+ "<ACTION_ADD_ABORTNODE>16</ACTION_ADD_ABORTNODE>\n"
				+ "<ACTION_ADD_AUTONODE>17</ACTION_ADD_AUTONODE>\n"
				+ "<ACTION_ADD_COMPLETENODE>18</ACTION_ADD_COMPLETENODE>\n"
				+ "<ACTION_ADD_MANUALNODE>19</ACTION_ADD_MANUALNODE>\n"
				+ "<ACTION_ADD_STARTNODE>20</ACTION_ADD_STARTNODE>\n"
				+ "<ACTION_ADD_SUSPENDNODE>21</ACTION_ADD_SUSPENDNODE>\n"
				+ "<ACTION_ADD_TERMINATENODE>22</ACTION_ADD_TERMINATENODE>\n"
				+ "<ACTION_ADD_RELATION>4096</ACTION_ADD_RELATION>\n"
				+ "<ACTION_EDIT_NODE>268435472</ACTION_EDIT_NODE>\n"
				+ "<ACTION_EDIT_RELATION>268439552</ACTION_EDIT_RELATION>\n"
				+ "<ACTION_BREAK_LINE>1048576</ACTION_BREAK_LINE>\n"
				+ "<flowstatus>16</flowstatus>\n" + "<flowpath></flowpath>\n"
				+ "<deleteMSG>null</deleteMSG>\n"
				+ "<TOP_ALIGNMENT>0.0</TOP_ALIGNMENT>\n"
				+ "<CENTER_ALIGNMENT>0.5</CENTER_ALIGNMENT>\n"
				+ "<BOTTOM_ALIGNMENT>1.0</BOTTOM_ALIGNMENT>\n"
				+ "<LEFT_ALIGNMENT>0.0</LEFT_ALIGNMENT>\n"
				+ "<RIGHT_ALIGNMENT>1.0</RIGHT_ALIGNMENT>\n"
				+ "<WIDTH>1</WIDTH>\n" + "<HEIGHT>2</HEIGHT>\n"
				+ "<PROPERTIES>4</PROPERTIES>\n" + "<SOMEBITS>8</SOMEBITS>\n"
				+ "<FRAMEBITS>16</FRAMEBITS>\n" + "<ALLBITS>32</ALLBITS>\n"
				+ "<ERROR>64</ERROR>\n" + "<ABORT>128</ABORT>\n"
				+ "<cn.myapps.core.workflow.element.StartNode>\n"
				+ "<prenodeid></prenodeid>\n" + "<backnodeid></backnodeid>\n"
				+ "<formname></formname>\n"
				+ "<fieldpermlist></fieldpermlist>\n"
				+ "<isstartandnext>false</isstartandnext>\n" + "<x>68</x>\n"
				+ "<y>46</y>\n" + "<width>46</width>\n"
				+ "<height>55</height>\n" + "<_iscurrent>false</_iscurrent>\n"
				+ "<scale>0</scale>\n" + "<name>start</name>\n"
				+ "<note></note>\n" + "<id>1177556151406</id>\n"
				+ "</cn.myapps.core.workflow.element.StartNode>\n"
				+ "<cn.myapps.core.workflow.element.ManualNode>\n"
				+ "<remaindertype>0</remaindertype>\n"
				+ "<beforetime></beforetime>\n" + "<namelist>(U" + user.getId()
				+ "|nicholas;)</namelist>\n"
				+ "<realnamelist></realnamelist>\n"
				+ "<passcondition>0</passcondition>\n"
				+ "<exceedaction>0</exceedaction>\n"
				+ "<limittimecount></limittimecount>\n"
				+ "<issetcurruser>false</issetcurruser>\n"
				+ "<inputform></inputform>\n" + "<isgather>false</isgather>\n"
				+ "<issplit>false</issplit>\n" + "<prenodeid></prenodeid>\n"
				+ "<backnodeid></backnodeid>\n" + "<formname></formname>\n"
				+ "<fieldpermlist></fieldpermlist>\n"
				+ "<isstartandnext>false</isstartandnext>\n" + "<x>199</x>\n"
				+ "<y>125</y>\n" + "<width>46</width>\n"
				+ "<height>55</height>\n" + "<_iscurrent>false</_iscurrent>\n"
				+ "<scale>0</scale>\n" + "<name>node1</name>\n"
				+ "<note></note>\n" + "<id>1177556160531</id>\n"
				+ "</cn.myapps.core.workflow.element.ManualNode>\n"
				+ "<cn.myapps.core.workflow.element.Relation>\n"
				+ "<state></state>\n"
				+ "<startnodeid>1177556151406</startnodeid>\n"
				+ "<endnodeid>1177556160531</endnodeid>\n"
				+ "<ispassed>false</ispassed>\n"
				+ "<isreturn>false</isreturn>\n" + "<condition></condition>\n"
				+ "<action></action>\n"
				+ "<pointstack>64;69;198;117</pointstack>\n"
				+ "<validateScript></validateScript>\n" + "<scale>0</scale>\n"
				+ "<name></name>\n" + "<note></note>\n"
				+ "<id>1177556266593</id>\n"
				+ "</cn.myapps.core.workflow.element.Relation>\n"
				+ "<cn.myapps.core.workflow.element.CompleteNode>\n"
				+ "<prenodeid></prenodeid>\n" + "<backnodeid></backnodeid>\n"
				+ "<formname></formname>\n"
				+ "<fieldpermlist></fieldpermlist>\n"
				+ "<isstartandnext>false</isstartandnext>\n" + "<x>341</x>\n"
				+ "<y>69</y>\n" + "<width>46</width>\n"
				+ "<height>55</height>\n" + "<_iscurrent>false</_iscurrent>\n"
				+ "<scale>0</scale>\n" + "<name>end</name>\n"
				+ "<note></note>\n" + "<id>1177556293437</id>\n"
				+ "</cn.myapps.core.workflow.element.CompleteNode>\n"
				+ "<cn.myapps.core.workflow.element.Relation>\n"
				+ "<state></state>\n"
				+ "<startnodeid>1177556160531</startnodeid>\n"
				+ "<endnodeid>1177556293437</endnodeid>\n"
				+ "<ispassed>false</ispassed>\n"
				+ "<isreturn>false</isreturn>\n" + "<condition></condition>\n"
				+ "<action></action>\n"
				+ "<pointstack>196;106;335;78</pointstack>\n"
				+ "<validateScript></validateScript>\n" + "<scale>0</scale>\n"
				+ "<name></name>\n" + "<note></note>\n"
				+ "<id>1177556296828</id>\n"
				+ "</cn.myapps.core.workflow.element.Relation>\n"
				+ "</cn.myapps.core.workflow.element.FlowDiagram>\n");
		bp.doCreate(flow);

		DocumentProcess dp = (DocumentProcess) ProcessFactory
				.createProcess(DocumentProcess.class);
		doc = new Document();
		doc.setFlowid(flow.getId());
		dp.doCreate(doc);
	}

	protected void tearDown() throws Exception {
		super.tearDown();
		UserProcess up = (UserProcess) ProcessFactory
				.createProcess(UserProcess.class);
		up.doRemove(user.getId());

		BillDefiProcess bp = (BillDefiProcess) ProcessFactory
				.createProcess(BillDefiProcess.class);
		bp.doRemove(flow.getId());

		DocumentProcess dp = (DocumentProcess) ProcessFactory
				.createProcess(DocumentProcess.class);
		dp.doRemove(doc.getId());
	}

	public void startFlow() throws Exception {
		// PersistenceUtils.getSessionSignal().sessionSignal++;
		docAction.set_docid(doc.getId());
		docAction.setContent(doc);
		docAction.set_flowid(flow.getId());
		docAction.startFlow();
		// PersistenceUtils.getSessionSignal().sessionSignal--;
	}

	/*
	 * Test method for
	 * 'cn.myapps.core.workflow.engine.StateMachineHelper.toFlowHtmlText(String,
	 * String, WebUser)'
	 */
	public void testWorkFlow() throws Exception {
		startFlow();
		DocumentProcess dp = (DocumentProcess) ProcessFactory
				.createProcess(DocumentProcess.class);
		Document findDoc = (Document) dp.doView(doc.getId());
		assertEquals(findDoc.getState().getState(), FlowState.RUNNING);

		doNext();
		findDoc = (Document) dp.doView(doc.getId());
		assertEquals(findDoc.getState().getState(), FlowState.COMPLETE);
	}

	public void doNext() throws Exception {
		// PersistenceUtils.getSessionSignal().sessionSignal++;

		// Current Node
		NodeRT nodert = StateMachineHelper.getCurrUserNodeRT(doc.getId(), flow
				.getId(), new WebUser(user));

		BillDefiProcess bp = (BillDefiProcess) ProcessFactory
				.createProcess(BillDefiProcess.class);
		BillDefiVO findFlow = (BillDefiVO) bp.doView(flow.getId());
		Collection nextNodeList = StateMachine.getNextToNodeList(doc.getId(),
				findFlow, nodert.getNodeid(), new WebUser(user));
		assertTrue(nextNodeList.size() > 0);

		// Next Nodes
		String[] nextids = new String[nextNodeList.size()];
		int i = 0;
		for (Iterator iter = nextNodeList.iterator(); iter.hasNext();) {
			Node nextNode = (Node) iter.next();
			nextids[i] = nextNode.id;
			i++;
		}

		// action.set_nextids(nextids);
		// action.set_currid(nodert.getNodeid());
		// action.set_docid(doc.getId());
		// action.set_flowid(flow.getId());
		// action.set_flowType("");
		// action.set_attitude("");
		Environment evt = new Environment("c:/");
		StateMachine.doFlow(doc.getId(), findFlow, nodert.getNodeid(), nextids,
				new WebUser(user), "", "", evt);

		// PersistenceUtils.getSessionSignal().sessionSignal--;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -