
package cust.cm_report;

import wt.auth.*;
import wt.fc.*;
import wt.query.*;
import wt.part.*;
import wt.epm.*;
import wt.doc.*;
import wt.util.*;
import wt.vc.*;

import java.util.*;

import wt.fc.WTObject;

import wt.workflow.*;
import wt.workflow.engine.*;

import wt.inf.team.*;
import wt.inf.container.*;
import wt.inf.container.WTContainer;

import wt.org.*;
import wt.org.WTPrincipal;
import wt.org.WTOrganization;

import wt.projmgmt.admin.*;
import wt.pdmlink.*;
import wt.pdmlink.PDMLinkProduct;

import wt.change2.*;
import wt.change2.ChangeActivity2;
import wt.change2.ChangeRequest2;
import wt.change2.ChangeIssue;
import wt.change2.ChangeOrder2;
import wt.change2.ChangeHelper2;

import wt.change2.WTChangeIssue;
import wt.change2.WTChangeOrder2;
import wt.change2.WTChangeRequest2;
import wt.change2.WTChangeActivity2;

import wt.change2.ChangeOrderIfc;
import wt.change2.ChangeRequestIfc;
import wt.change2.ChangeItem;

import wt.workflow.definer.*;
import wt.workflow.robots.*;
import wt.workflow.work.*;
import wt.workflow.WfException;

import wt.content.ApplicationData;
import wt.method.RemoteMethodServer;
import wt.httpgw.GatewayAuthenticator;

import wt.workflow.worklist.*;
import wt.workflow.work.WfHtmlFormat;

import wt.change2.ChangeItem;
import wt.change2.ChangeAnalysis;
import wt.clients.change2.Change2RB;

import wt.fc.QueryResult;
import wt.util.WTProperties;
import wt.util.WTMessage;
import wt.util.WTException;
import wt.util.WTRuntimeException;
import java.util.NoSuchElementException;

//=============

import wt.query.*;
import wt.workflow.engine.*;
import wt.workflow.definer.*;

import wt.fc.*;
import wt.fc.QueryResult;
import wt.fc.WTObject;

import wt.method.RemoteMethodServer;
import wt.httpgw.GatewayAuthenticator;

import java.util.*;

public class wf_demo_test_03 {

	public static void main(String[] args) throws Exception{
		RemoteMethodServer rms = RemoteMethodServer.getDefault();
		GatewayAuthenticator auth = new GatewayAuthenticator();
		auth.setRemoteUser("wcadmin");
		rms.setAuthenticator(auth);

		/*
		QueryResult resWFPT=PersistenceHelper.manager.find(
			new QuerySpec(WfProcessTemplate.class)
		);

		while(resWFPT.hasMoreElements()) {
			WfProcessTemplate wtwfpt = (WfProcessTemplate)resWFPT.nextElement();
			System.out.println( "Name: " + wtwfpt.getName() + " & Desc: " + wtwfpt.getDescription()  );
		}
		System.out.println("\nNumber of WfProcessTemplate: " + resWFPT.size() + div);

		//====================================

		QuerySpec qs = new QuerySpec(EPMDocumentMaster.class);

		qs.appendSearchCondition(
			new SearchCondition(
				EPMDocumentMaster.class,
				EPMDocumentMaster.NUMBER,
				SearchCondition.LIKE,
				number
			)
		);

		final QueryResult qr = PersistenceHelper.manager.find(qs);

		while (qr.hasMoreElements()) {
			EPMDocumentMaster epmm = (EPMDocumentMaster)qr.nextElement();
			System.out.println( "EPMDoc - Number: " + epmm.getNumber() + " - Name: " + epmm.getName()+ " - CadName: " + epmm.getCADName() );
		*/

		try {
			WfProcessTemplate processTemplateName = new WfProcessTemplate();
			Enumeration templateEnum = null;
			WTObject anObject = null;

			// -- Step 1. Retrieve the workflow template on which the process will be based.

			QuerySpec qs = new QuerySpec(WfProcessTemplate.class);

			qs.appendWhere(
				new SearchCondition(
					WfProcessTemplate.class,
					WfTemplateObject.NAME,
					SearchCondition.EQUAL,
					processTemplateName
				)
			);

			templateEnum = PersistenceHelper.manager.find (qs);

			if (templateEnum.hasMoreElements()) {
				processTemplateName = (wt.workflow.definer.WfProcessTemplate)templateEnum.nextElement();
			}

			// -- Step 2. Create a Process for the ProcessTemplate

			WfProcess process = WfEngineHelper.service.createProcess(processTemplateName, null);

			// -- Step 3.1 Set basic values

			process.setName("Programatically Instantiated Process");
			process.setDescription("SomeDescriptionText");
			process.setPriority(1);

			// -- Step 3.2 Save the process

			process = (WfProcess)PersistenceHelper.manager.save(process);

			// -- Step 4  Get process context and populate variables in table

			ProcessDataInfo signature = processTemplate.getContextSignature();
			ProcessData input = ProcessData.newProcessData(signature);
			input.setValue("primaryBusinessObject", anObject);

			// -- Step 5. Start the process.

			process = WfEngineHelper.service.startProcess(process, input, 1);
		}
		catch (wt.util.WTException wex) {
			wex.printStackTrace();
		}
	}
}
