001: /*
002: * This file is part of the WfMOpen project.
003: * Copyright (C) 2001-2004 Danet GmbH (www.danet.de), GS-AN.
004: * All rights reserved.
005: *
006: * This program is free software; you can redistribute it and/or modify
007: * it under the terms of the GNU General Public License as published by
008: * the Free Software Foundation; either version 2 of the License, or
009: * (at your option) any later version.
010: *
011: * This program is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014: * GNU General Public License for more details.
015: *
016: * You should have received a copy of the GNU General Public License
017: * along with this program; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
019: *
020: * $Id: Types.java,v 1.2 2006/09/29 12:32:10 drmlipp Exp $
021: *
022: * $Log: Types.java,v $
023: * Revision 1.2 2006/09/29 12:32:10 drmlipp
024: * Consistently using WfMOpen as projct name now.
025: *
026: * Revision 1.1.1.2 2004/08/18 15:18:47 drmlipp
027: * Update to 1.2
028: *
029: * Revision 1.2 2004/01/27 11:45:33 lipp
030: * Preserve newlines when reading process definitions.
031: *
032: * Revision 1.1 2004/01/19 12:30:59 lipp
033: * SchemaType now supported properly.
034: *
035: */
036: package process;
037:
038: import java.io.BufferedReader;
039: import java.io.InputStream;
040: import java.io.InputStreamReader;
041:
042: import java.util.Collection;
043:
044: import javax.security.auth.login.LoginException;
045:
046: import de.danet.an.util.junit.EJBClientTest;
047:
048: import de.danet.an.workflow.omgcore.ProcessDataInfo;
049: import de.danet.an.workflow.omgcore.WfProcess;
050: import de.danet.an.workflow.omgcore.WfRequester;
051:
052: import de.danet.an.workflow.api.ExternalReference;
053: import de.danet.an.workflow.api.FactoryConfigurationError;
054: import de.danet.an.workflow.api.ProcessDefinitionDirectory;
055: import de.danet.an.workflow.api.ProcessDirectory;
056: import de.danet.an.workflow.api.ProcessMgr;
057: import de.danet.an.workflow.api.SAXEventBuffer;
058: import de.danet.an.workflow.api.WorkflowService;
059: import de.danet.an.workflow.api.WorkflowServiceFactory;
060:
061: import common.UTLoginContext;
062: import junit.framework.Test;
063: import junit.framework.TestCase;
064: import junit.framework.TestSuite;
065:
066: /**
067: * Test the life cycle of different processes.
068: */
069: public class Types extends TestCase {
070: private static UTLoginContext plc = null;
071: static {
072: try {
073: plc = new UTLoginContext();
074: plc.login();
075: } catch (LoginException e) {
076: throw new IllegalStateException(e.getMessage());
077: }
078: }
079:
080: /**
081: * A process directory reference.
082: */
083: private ProcessDirectory pdd = null;
084:
085: /**
086: * Constructor of this TestCase
087: */
088: public Types(String name) {
089: super (name);
090: }
091:
092: /**
093: * Stellt diese TestSuite zusammen.
094: */
095: public static Test suite() {
096: TestSuite suite = new TestSuite();
097: suite.addTest(new Types("importProcessDefinitions"));
098: suite.addTest(new Types("typeInformation"));
099: return new EJBClientTest(plc, suite);
100: }
101:
102: private WorkflowService workflowService = null;
103:
104: /**
105: * Initialisierung.
106: */
107: protected void setUp() throws Exception {
108: try {
109: WorkflowServiceFactory wfsf = WorkflowServiceFactory
110: .newInstance();
111: workflowService = wfsf.newWorkflowService();
112: } catch (FactoryConfigurationError e) {
113: throw new IllegalStateException(e.getMessage());
114: }
115: }
116:
117: protected void tearDown() throws Exception {
118: workflowService.release(workflowService);
119: workflowService = null;
120: }
121:
122: /**
123: * Import the process definitions from a XPDL file
124: * unsing the ProcessDefinitionDirectory bean.
125: */
126: public void importProcessDefinitions() throws Exception {
127: // Create process definition directory bean
128: ProcessDefinitionDirectory pdd = workflowService
129: .processDefinitionDirectory();
130:
131: InputStream is = getClass().getResourceAsStream(
132: "/process/types.xml");
133: assertTrue(is != null);
134: BufferedReader br = new BufferedReader(new InputStreamReader(
135: is, "ISO-8859-1"));
136: StringBuffer sb = new StringBuffer();
137: String st;
138: while ((st = br.readLine()) != null) {
139: sb.append(st + "\n");
140: }
141: pdd.importProcessDefinitions(sb.toString());
142: Collection processDefinitions = pdd.processDefinitions();
143: assertTrue(processDefinitions.size() > 0);
144:
145: }
146:
147: private WfProcess createProcess(String pkgId, String prcId,
148: WfRequester req) throws Exception {
149: ProcessDefinitionDirectory procDir = null;
150: try {
151: procDir = workflowService.processDefinitionDirectory();
152: ProcessMgr pmgr = procDir.processMgr(pkgId, prcId);
153: return pmgr.createProcess(req);
154: } finally {
155: workflowService.release(procDir);
156: }
157: }
158:
159: /**
160: * Test types.
161: */
162: public void typeInformation() throws Exception {
163: ProcessDefinitionDirectory procDir = null;
164: try {
165: procDir = workflowService.processDefinitionDirectory();
166: ProcessMgr pmgr = procDir.processMgr("typestest",
167: "typestest1");
168: ProcessDataInfo pdi = pmgr.contextSignature();
169: assertTrue(pdi.get("XMLField") instanceof SAXEventBuffer);
170: assertTrue(pdi.get("XMLField2") instanceof ExternalReference);
171: assertTrue(((ExternalReference) pdi.get("XMLField2"))
172: .location().toString().equals(
173: "http://somwhere.unknown"));
174: assertTrue(pdi.get("XMLField3").equals(
175: org.w3c.dom.Element.class));
176: } finally {
177: workflowService.release(procDir);
178: }
179: }
180:
181: }
|