GoodDocFlow Java based WorkFlow and DocFlow engine

Date:23-Aug-2008

Changies:


Client sample

how to start: java Main -client -Djava.security.auth.login.config=dfc.conf

package ru.goodidea.client.jms;

import java.awt.event.ActionListener;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.naming.NamingException;
import javax.swing.JPanel;

import ru.goodidea.df.constructor.panel.DefaultPresentationPanel;
import ru.goodidea.df.constructor.panel.PanelBuilder;
import ru.goodidea.df.dictionary.Field;
import ru.goodidea.df.dto.DtoRole;
import ru.goodidea.doc.DefaultDocument;

public class Main extends AbstractDocProcessor implements ConnectionListener,MessageListener {
	
	private final static String login="tester";

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Main m = new Main();
		m.process();
		System.out.println("END!!!");
	}
	
	private void process() {
		ConnectionFactory cf = ConnectionFactory.getInstance();
		cf.addConnectionListener(this);
		cf.setHost("www.newgoodidea.com");
		try {
			cf.connect();

			cf.Auth(login, "test");
			for (DtoRole r : roles) {
				System.out.println("ROLE:" + r);
			}
			init(this,login);
			ConnectionDispatcher d = new ConnectionDispatcher();
			Command cmd = new Command("GET CREATIVES",
					Command.CMD_GET_CREATIVES);
			d.send(cmd);
			for (String pr : cf.getProjects().keySet()) {
				System.out.println("PROJECT:" + pr);
			}
			//cf.diconnect();
		} catch (NamingException e) {
			e.printStackTrace();
		} catch (JMSException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	@Override
	public void disconnect() {

	}

	@Override
	public void fireCheckoutFailed(String msgId, CompletitionTypes type) {

	}

	@Override
	public void fireNewActivity(DefaultDocument document) {
		System.out.println("Doc:" + document);
		if("simple1".equals(document.getProjectName()))
		{	
			
			JPanel p=new JPanel();
			PanelBuilder pb=new PanelBuilder(p); 
			DefaultPresentationPanel dp=new DefaultPresentationPanel(pb,this);
			Field fld= document.getFieldByName("num1");
			fld.setValue(new Integer(10));
			fld= document.getFieldByName("num2");
			fld.setValue(new Integer(23));
			document.init(document.getCurrentNodeindex(), ConnectionFactory.getInstance().getPersistanceService());//Init visual components. Not required for this test
//			document.assignValueFromComponents(pb.getMap(), document);
			boolean promoteStatus=document.execute(document.getCurrentNodeindex(), pb.getMap(),
					dp, ConnectionFactory.getInstance().getPersistanceService());
			if(promoteStatus&&document.promote(document.getCurrentNodeindex())) {
					sendCommand(document);
			}
		}
	}

	@Override
	public void fireProcessAccomplished() {
		System.out.println("DONE!");
		try {
			Thread.currentThread().sleep(1000);//Wait until message be processed
			ConnectionFactory.getInstance().diconnect();
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.exit(-1);
	}

	@Override
	public void fireProjectDisabled(String msgId) {
		int t=0;
	}

	@Override
	public void fireStatusChanged(String status) {
		int t=0;
	}

	@Override
	public List getActionListeners() {
		return Collections.EMPTY_LIST;
	}

	@Override
	public HashSet getReactors() {
		return null;
	}

	@Override
	public List getRoles() {
		return roles;
	}

	@Override
	public void setConnectedUserLogin(String login) {

	}

	@Override
	public void setConnectedUserPassword(String password) {

	}

	@Override
	public void setCurrentRole(DtoRole role) {

	}

	@Override
	public void processed(String messegeId, CompletitionTypes type) {
        try {
			DefaultDocument doc=getIncomingDocument(messegeId);
			if(doc==null)return;
			JPanel p=new JPanel();
			PanelBuilder pb=new PanelBuilder(p); 
			DefaultPresentationPanel dp=new DefaultPresentationPanel(pb,this);
			dp.init(doc, null, ConnectionFactory.getInstance().getCurrentRole(), ConnectionFactory.getInstance().getPersistanceService());
			switch(doc.getCurrentNodeindex()) {
			case 3:
				
				Field fld= doc.getFieldByName("message");
				System.out.println("MESSAGE1:"+fld.getValue());
				fld= doc.getFieldByName("str1");
				fld.setValue("first");
				fld= doc.getFieldByName("str2");
				fld.setValue("SECOND");
				
				boolean promoteStatus=doc.execute(doc.getCurrentNodeindex(), Collections.EMPTY_MAP,
						dp, ConnectionFactory.getInstance().getPersistanceService());
				if(promoteStatus&&doc.promote(doc.getCurrentNodeindex())) {
						sendCommand(doc);
				}
				break;
			case 5:	
				doc.init(doc.getCurrentNodeindex(), ConnectionFactory.getInstance().getPersistanceService());
				fld= doc.getFieldByName("message");
				System.out.println("MESSAGE2:"+fld.getValue());
				fld= doc.getFieldByName("file1");
				fld= doc.getFieldByName("file2");
				promoteStatus=doc.execute(doc.getCurrentNodeindex(), pb.getMap(),
						dp, ConnectionFactory.getInstance().getPersistanceService());
				if(promoteStatus&&doc.promote(doc.getCurrentNodeindex())) {
						sendCommand(doc);
				}
				break;				
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	@Override
	public void showErrorMessage(String message) {
		System.out.println("err msg:"+message);
	}

	@Override
	public void showMessage(String message) {
		System.out.println("msg:"+message);
	}

	@Override
	public void onMessage(Message arg0) {
		System.out.println("*******ON MESSAGE:"+arg0);
	}

}



contact information: Konstantin Pupkov df@goodidea.ru
icq:17631963
yahoo:www_goodidea_ru
Copyright © 2004...2009