001: /*
002: * ====================================================================
003: *
004: * XFLOW - Process Management System
005: * Copyright (C) 2003 Rob Tan
006: * All rights reserved.
007: *
008: * Redistribution and use in source and binary forms, with or without
009: * modification, are permitted provided that the following conditions
010: * are met:
011: *
012: * 1. Redistributions of source code must retain the above copyright
013: * notice, this list of conditions, and the following disclaimer.
014: *
015: * 2. Redistributions in binary form must reproduce the above copyright
016: * notice, this list of conditions, and the disclaimer that follows
017: * these conditions in the documentation and/or other materials
018: * provided with the distribution.
019: *
020: * 3. The name "XFlow" must not be used to endorse or promote products
021: * derived from this software without prior written permission. For
022: * written permission, please contact rcktan@yahoo.com
023: *
024: * 4. Products derived from this software may not be called "XFlow", nor
025: * may "XFlow" appear in their name, without prior written permission
026: * from the XFlow Project Management (rcktan@yahoo.com)
027: *
028: * In addition, we request (but do not require) that you include in the
029: * end-user documentation provided with the redistribution and/or in the
030: * software itself an acknowledgement equivalent to the following:
031: * "This product includes software developed by the
032: * XFlow Project (http://xflow.sourceforge.net/)."
033: * Alternatively, the acknowledgment may be graphical using the logos
034: * available at http://xflow.sourceforge.net/
035: *
036: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
037: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
038: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
039: * DISCLAIMED. IN NO EVENT SHALL THE XFLOW AUTHORS OR THE PROJECT
040: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
041: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
042: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
043: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
044: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
045: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
046: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
047: * SUCH DAMAGE.
048: *
049: * ====================================================================
050: * This software consists of voluntary contributions made by many
051: * individuals on behalf of the XFlow Project and was originally
052: * created by Rob Tan (rcktan@yahoo.com)
053: * For more information on the XFlow Project, please see:
054: * <http://xflow.sourceforge.net/>.
055: * ====================================================================
056: */
057: package xflow.events;
058:
059: import java.util.*;
060: import java.sql.*;
061: import javax.sql.*;
062: import javax.naming.*;
063: import xflow.util.*;
064:
065: import org.apache.log4j.Logger;
066:
067: public class EventsPersistence {
068:
069: private static int a;
070:
071: private static String event = "create table evt_event (eventId int identity, eventType varchar(32) not null, timestamp timestamp not null, workflowName varchar(64) not null, workflowVersion int not null, workflowInstanceId int, parentWorkflowInstanceId int, user varchar (64))";
072:
073: private static String nodeTransitionEvent = "create table evt_NodeTransitionEvent (eventId int not null, fromNodeName varchar(64) not null, fromNodeType varchar(16) not null, toNodeName varchar(64) not null, toNodeType varchar(16) not null)";
074:
075: private static String processTimedOutEvent = "create table evt_ProcessTimedOutEvent (eventId int not null, processName varchar(64) not null)";
076:
077: private static String variableUpdateEvent = "create table evt_VariableUpdateEvent (eventId int not null, variableName varchar(64) not null, variableType varchar(16) not null, variableValue varchar(5000) not null)";
078:
079: private static String eventWorkItem = "create table evt_EventWorkItem (eventId int not null, workItemInternalId identity, workItemId int not null, payloadType varchar(16), payload varchar(5000))";
080:
081: private static String eventWorkItemProperties = "create table evt_EventWorkItemProperties (workItemInternalId int not null, propertyName varchar(64) not null, propertyType varchar(16) not null, propertyValue varchar(5000) not null)";
082:
083: static public void init(Properties props) {
084:
085: try {
086: Db.init(props);
087: } catch (Exception e) {
088: e.printStackTrace();
089: }
090:
091: Connection conn = null;
092: Statement s = null;
093:
094: try {
095:
096: // Create all the necessary tables used by xflow events
097: conn = Db.getConnection();
098: s = conn.createStatement();
099: s.execute(event);
100: s.execute(nodeTransitionEvent);
101: s.execute(processTimedOutEvent);
102: s.execute(variableUpdateEvent);
103: s.execute(eventWorkItem);
104: s.execute(eventWorkItemProperties);
105: System.out.println("XFlow Event Tables created.");
106: } catch (Exception e) {
107: System.out
108: .println("Already existing XFlow Event tables. OK");
109: } finally {
110: if (conn != null) {
111: Db.returnConnection(conn);
112: }
113: }
114: }
115:
116: }
|