亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jdbcworkflowstore.java

?? 一個很好實用的工作流OSWORKFLOW開發例子.有著非常優秀的靈活性.
?? JAVA
?? 第 1 頁 / 共 4 頁
字號:
/* * Copyright (c) 2002-2003 by OpenSymphony * All rights reserved. */package com.opensymphony.workflow.spi.jdbc;import com.opensymphony.module.propertyset.PropertySet;import com.opensymphony.module.propertyset.PropertySetManager;import com.opensymphony.workflow.StoreException;import com.opensymphony.workflow.query.Expression;import com.opensymphony.workflow.query.FieldExpression;import com.opensymphony.workflow.query.NestedExpression;import com.opensymphony.workflow.query.WorkflowExpressionQuery;import com.opensymphony.workflow.query.WorkflowQuery;import com.opensymphony.workflow.spi.SimpleStep;import com.opensymphony.workflow.spi.SimpleWorkflowEntry;import com.opensymphony.workflow.spi.Step;import com.opensymphony.workflow.spi.WorkflowEntry;import com.opensymphony.workflow.spi.WorkflowStore;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import java.sql.*;import java.util.*;import java.util.Date;import javax.naming.InitialContext;import javax.naming.NamingException;import javax.sql.DataSource;/** * JDBC implementation. * <p> * * The following properties are all <b>required</b>: * <ul> *  <li><b>datasource</b> - the JNDI location for the DataSource that is to be used.</li> *  <li><b>entry.sequence</b> - SQL query that returns the next ID for a workflow entry</li> *  <li><b>entry.table</b> - table name for workflow entry</li> *  <li><b>entry.id</b> - column name for workflow entry ID field</li> *  <li><b>entry.name</b> - column name for workflow entry name field</li> *  <li><b>entry.state</b> - column name for workflow entry state field</li> *  <li><b>step.sequence</b> - SQL query that returns the next ID for a workflow step</li> *  <li><b>history.table</b> - table name for steps in history</li> *  <li><b>current.table</b> - table name for current steps</li> *  <li><b>step.id</b> - column name for step ID field</li> *  <li><b>step.entryId</b> - column name for workflow entry ID field (foreign key relationship to [entry.table].[entry.id])</li> *  <li><b>step.stepId</b> - column name for step workflow definition step field</li> *  <li><b>step.actionId</b> - column name for step action field</li> *  <li><b>step.owner</b> - column name for step owner field</li> *  <li><b>step.caller</b> - column name for step caller field</li> *  <li><b>step.startDate</b> - column name for step start date field</li> *  <li><b>step.dueDate</b> - column name for optional step due date field</li> *  <li><b>step.finishDate</b> - column name for step finish date field</li> *  <li><b>step.status</b> - column name for step status field</li> *  <li><b>currentPrev.table</b> - table name for the previous IDs for current steps</li> *  <li><b>historyPrev.table</b> - table name for the previous IDs for history steps</li> *  <li><b>step.previousId</b> - column name for step ID field (foreign key relation to [history.table].[step.id] or [current.table].[step.id])</li> * </ul> * * @author <a href="mailto:plightbo@hotmail.com">Pat Lightbody</a> */public class JDBCWorkflowStore implements WorkflowStore {    //~ Static fields/initializers /////////////////////////////////////////////    private static final Log log = LogFactory.getLog(JDBCWorkflowStore.class);    //~ Instance fields ////////////////////////////////////////////////////////    protected DataSource ds;    protected String currentPrevTable;    protected String currentTable;    protected String entryId;    protected String entryName;    protected String entrySequence;    protected String entryState;    protected String entryTable;    protected String historyPrevTable;    protected String historyTable;    protected String stepActionId;    protected String stepCaller;    protected String stepDueDate;    protected String stepEntryId;    protected String stepFinishDate;    protected String stepId;    protected String stepOwner;    protected String stepPreviousId;    protected String stepSequence;    protected String stepStartDate;    protected String stepStatus;    protected String stepStepId;    protected boolean closeConnWhenDone = false;    //~ Methods ////////////////////////////////////////////////////////////////    public void setEntryState(long id, int state) throws StoreException {        Connection conn = null;        PreparedStatement ps = null;        try {            conn = getConnection();            String sql = "UPDATE " + entryTable + " SET " + entryState + " = ? WHERE " + entryId + " = ?";            ps = conn.prepareStatement(sql);            ps.setInt(1, state);            ps.setLong(2, id);            ps.executeUpdate();        } catch (SQLException e) {            throw new StoreException("Unable to update state for workflow instance #" + id + " to " + state, e);        } finally {            cleanup(conn, ps, null);        }    }    public PropertySet getPropertySet(long entryId) {        HashMap args = new HashMap(1);        args.put("globalKey", "osff_" + entryId);        return PropertySetManager.getInstance("jdbc", args);    }    ////////////METHOD #2 OF 3 //////////////////    ////////// ...gur;  ////////////////////    //kiz    public boolean checkIfORExists(NestedExpression nestedExpression) {        //GURKAN;        //This method checks if OR exists in any nested query        //This method is used by doNestedNaturalJoin() to make sure        //OR does not exist within query        int numberOfExp = nestedExpression.getExpressionCount();        if (nestedExpression.getExpressionOperator() == NestedExpression.OR) {            return true;        }        for (int i = 0; i < numberOfExp; i++) {            Expression expression = nestedExpression.getExpression(i);            if (expression.isNested()) {                NestedExpression nestedExp = (NestedExpression) expression;                return checkIfORExists(nestedExp);            }        }        //System.out.println("!!!...........false is returned ..!!!");        return false;    }    public Step createCurrentStep(long entryId, int wfStepId, String owner, Date startDate, Date dueDate, String status, long[] previousIds) throws StoreException {        Connection conn = null;        try {            conn = getConnection();            long id = createCurrentStep(conn, entryId, wfStepId, owner, startDate, dueDate, status);            addPreviousSteps(conn, id, previousIds);            return new SimpleStep(id, entryId, wfStepId, 0, owner, startDate, dueDate, null, status, previousIds, null);        } catch (SQLException e) {            throw new StoreException("Unable to create current step for workflow instance #" + entryId, e);        } finally {            cleanup(conn, null, null);        }    }    public WorkflowEntry createEntry(String workflowName) throws StoreException {        Connection conn = null;        PreparedStatement stmt = null;        try {            conn = getConnection();            String sql = "INSERT INTO " + entryTable + " (" + entryId + ", " + entryName + ", " + entryState + ") VALUES (?,?,?)";            if (log.isDebugEnabled()) {                log.debug("Executing SQL statement: " + sql);            }            stmt = conn.prepareStatement(sql);            long id = getNextEntrySequence(conn);            stmt.setLong(1, id);            stmt.setString(2, workflowName);            stmt.setInt(3, WorkflowEntry.CREATED);            stmt.executeUpdate();            return new SimpleWorkflowEntry(id, workflowName, WorkflowEntry.CREATED);        } catch (SQLException e) {            throw new StoreException("Error creating new workflow instance", e);        } finally {            cleanup(conn, stmt, null);        }    }    public List findCurrentSteps(long entryId) throws StoreException {        Connection conn = null;        PreparedStatement stmt = null;        ResultSet rset = null;        PreparedStatement stmt2 = null;        try {            conn = getConnection();            String sql = "SELECT " + stepId + ", " + stepStepId + ", " + stepActionId + ", " + stepOwner + ", " + stepStartDate + ", " + stepDueDate + ", " + stepFinishDate + ", " + stepStatus + ", " + stepCaller + " FROM " + currentTable + " WHERE " + stepEntryId + " = ?";            String sql2 = "SELECT " + stepPreviousId + " FROM " + currentPrevTable + " WHERE " + stepId + " = ?";            if (log.isDebugEnabled()) {                log.debug("Executing SQL statement: " + sql);            }            stmt = conn.prepareStatement(sql);            if (log.isDebugEnabled()) {                log.debug("Executing SQL statement: " + sql2);            }            stmt2 = conn.prepareStatement(sql2);            stmt.setLong(1, entryId);            rset = stmt.executeQuery();            ArrayList currentSteps = new ArrayList();            while (rset.next()) {                long id = rset.getLong(1);                int stepId = rset.getInt(2);                int actionId = rset.getInt(3);                String owner = rset.getString(4);                Date startDate = rset.getTimestamp(5);                Date dueDate = rset.getTimestamp(6);                Date finishDate = rset.getTimestamp(7);                String status = rset.getString(8);                String caller = rset.getString(9);                ArrayList prevIdsList = new ArrayList();                stmt2.setLong(1, id);                ResultSet rs = stmt2.executeQuery();                while (rs.next()) {                    long prevId = rs.getLong(1);                    prevIdsList.add(new Long(prevId));                }                long[] prevIds = new long[prevIdsList.size()];                int i = 0;                for (Iterator iterator = prevIdsList.iterator();                        iterator.hasNext();) {                    Long aLong = (Long) iterator.next();                    prevIds[i] = aLong.longValue();                    i++;                }                SimpleStep step = new SimpleStep(id, entryId, stepId, actionId, owner, startDate, dueDate, finishDate, status, prevIds, caller);                currentSteps.add(step);            }            return currentSteps;        } catch (SQLException e) {            throw new StoreException("Unable to locate current steps for workflow instance #" + entryId, e);        } finally {            cleanup(null, stmt2, null);            cleanup(conn, stmt, rset);        }    }    public WorkflowEntry findEntry(long theEntryId) throws StoreException {        Connection conn = null;        PreparedStatement stmt = null;        ResultSet rset = null;        try {            conn = getConnection();            String sql = "SELECT " + entryName + ", " + entryState + " FROM " + entryTable + " WHERE " + entryId + " = ?";            if (log.isDebugEnabled()) {                log.debug("Executing SQL statement: " + sql);            }            stmt = conn.prepareStatement(sql);            stmt.setLong(1, theEntryId);            rset = stmt.executeQuery();            rset.next();            String workflowName = rset.getString(1);            int state = rset.getInt(2);            return new SimpleWorkflowEntry(theEntryId, workflowName, state);        } catch (SQLException e) {            throw new StoreException("Error finding workflow instance #" + entryId);        } finally {            cleanup(conn, stmt, rset);        }    }    public List findHistorySteps(long entryId) throws StoreException {        Connection conn = null;        PreparedStatement stmt = null;        PreparedStatement stmt2 = null;        ResultSet rset = null;        try {            conn = getConnection();            String sql = "SELECT " + stepId + ", " + stepStepId + ", " + stepActionId + ", " + stepOwner + ", " + stepStartDate + ", " + stepDueDate + ", " + stepFinishDate + ", " + stepStatus + ", " + stepCaller + " FROM " + historyTable + " WHERE " + stepEntryId + " = ? ORDER BY " + stepId + " DESC";            String sql2 = "SELECT " + stepPreviousId + " FROM " + historyPrevTable + " WHERE " + stepId + " = ?";            if (log.isDebugEnabled()) {                log.debug("Executing SQL statement: " + sql);            }            stmt = conn.prepareStatement(sql);            if (log.isDebugEnabled()) {                log.debug("Executing SQL statement: " + sql2);            }            stmt2 = conn.prepareStatement(sql2);            stmt.setLong(1, entryId);            rset = stmt.executeQuery();            ArrayList currentSteps = new ArrayList();            while (rset.next()) {                long id = rset.getLong(1);                int stepId = rset.getInt(2);                int actionId = rset.getInt(3);                String owner = rset.getString(4);                Date startDate = rset.getTimestamp(5);                Date dueDate = rset.getTimestamp(6);                Date finishDate = rset.getTimestamp(7);                String status = rset.getString(8);                String caller = rset.getString(9);                ArrayList prevIdsList = new ArrayList();                stmt2.setLong(1, id);                ResultSet rs = stmt2.executeQuery();                while (rs.next()) {                    long prevId = rs.getLong(1);                    prevIdsList.add(new Long(prevId));                }                long[] prevIds = new long[prevIdsList.size()];                int i = 0;                for (Iterator iterator = prevIdsList.iterator();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区四区在线免费观看| 国产精品三级在线观看| 在线精品亚洲一区二区不卡| 国产精品18久久久久久久久| 国产一区二区三区四区五区美女 | 91蝌蚪porny成人天涯| 韩国欧美国产一区| 国产+成+人+亚洲欧洲自线| 国产精品系列在线观看| 成人av网址在线| 色噜噜狠狠色综合欧洲selulu| 欧美亚洲一区三区| 欧美一区二区三区日韩| 精品国内二区三区| 亚洲国产精品二十页| 亚洲欧美激情小说另类| 亚洲午夜精品网| 激情深爱一区二区| 成人蜜臀av电影| 欧美日韩高清不卡| 日韩欧美在线综合网| 国产欧美日韩视频一区二区| √…a在线天堂一区| 亚洲国产一区二区视频| 另类小说综合欧美亚洲| www.一区二区| 欧美日韩精品一区二区三区四区 | 欧美日韩中文一区| 欧美变态tickling挠脚心| 国产蜜臀av在线一区二区三区| 亚洲激情校园春色| 精品一区二区免费| www.亚洲精品| 日韩精品一区二区三区中文精品| 久久久久国产一区二区三区四区| 国产精品短视频| 精品一区二区国语对白| 在线一区二区三区做爰视频网站| 精品美女在线观看| 一区二区三区四区精品在线视频 | 亚洲精品视频在线看| 日本大胆欧美人术艺术动态| 国产91色综合久久免费分享| 在线一区二区三区做爰视频网站| 久久综合色一综合色88| 亚洲一区二区免费视频| 成人激情小说乱人伦| 在线不卡a资源高清| 成人欧美一区二区三区1314| 极品销魂美女一区二区三区| 欧美影院一区二区| 中文字幕一区二区在线观看| 国产麻豆成人精品| 日韩亚洲欧美中文三级| 亚洲国产精品精华液网站| 成人av动漫网站| 国产欧美一区二区精品秋霞影院| 美女尤物国产一区| 欧美精品乱码久久久久久按摩 | 日本中文一区二区三区| 色呦呦日韩精品| 国产精品久久久久三级| 国产酒店精品激情| 久久蜜臀中文字幕| 国产自产视频一区二区三区| 欧美一级免费大片| 日韩不卡免费视频| 欧美日韩精品久久久| 亚洲va天堂va国产va久| 色婷婷国产精品| 亚洲一区在线观看免费| 欧美日韩在线免费视频| 一区二区三区四区国产精品| 一本一道久久a久久精品| 国产精品家庭影院| 91在线精品一区二区| 日韩美女久久久| 欧美在线|欧美| 日韩精品电影一区亚洲| 欧美高清性hdvideosex| 捆绑变态av一区二区三区| 欧美大胆一级视频| 国内精品伊人久久久久av影院| 久久久亚洲综合| 成人精品一区二区三区中文字幕| 中文字幕一区二区三区在线观看 | 亚洲精品一二三四区| 欧美亚洲免费在线一区| 亚瑟在线精品视频| 欧美草草影院在线视频| 懂色av一区二区三区免费看| 亚洲私人影院在线观看| 欧美午夜精品久久久久久孕妇| 无码av免费一区二区三区试看| 日韩一区二区中文字幕| 成人伦理片在线| 亚洲一区二区高清| 日韩欧美高清一区| 成人看片黄a免费看在线| 夜夜夜精品看看| 久久亚洲综合av| 日本伦理一区二区| 国产又粗又猛又爽又黄91精品| 国产日韩欧美综合在线| 在线观看网站黄不卡| 毛片不卡一区二区| 亚洲免费在线电影| 欧美α欧美αv大片| 色欧美片视频在线观看| 久久爱www久久做| 一区二区三区.www| 国产午夜精品理论片a级大结局| 91在线观看视频| 老色鬼精品视频在线观看播放| 自拍偷拍亚洲综合| 欧美不卡在线视频| 欧美丝袜自拍制服另类| 国产成人精品免费网站| 五月婷婷激情综合网| 国产精品乱人伦中文| 欧美一区二区三区在线视频 | 九九视频精品免费| 亚洲国产乱码最新视频| 日本一区二区免费在线| 日韩免费高清视频| 欧美网站一区二区| 99久久国产免费看| 国产精品1区2区3区| 美女视频一区在线观看| 亚洲电影视频在线| 亚洲人妖av一区二区| 日本一区二区久久| 日韩精品在线网站| 日韩一二三区视频| 777亚洲妇女| 欧美日韩国产一级片| 色综合天天视频在线观看| 国产成人精品三级麻豆| 激情文学综合丁香| 精品在线你懂的| 麻豆精品一区二区| 美腿丝袜一区二区三区| 亚洲福利电影网| 亚洲一区二区三区中文字幕| 国产精品精品国产色婷婷| 亚洲国产精品黑人久久久| 久久精品视频一区二区三区| 亚洲精品在线网站| 精品国产免费久久| 久久天天做天天爱综合色| 日韩精品在线网站| 久久久欧美精品sm网站| 久久女同精品一区二区| 国产欧美精品区一区二区三区 | 免费在线观看一区二区三区| 香蕉久久一区二区不卡无毒影院 | 91电影在线观看| 欧美日韩在线播| 欧美一区二区三区人| 日韩视频在线观看一区二区| 日韩一级完整毛片| 国产亚洲欧美一级| 亚洲天堂成人网| 亚洲一区二区在线视频| 亚洲大片精品永久免费| 日本网站在线观看一区二区三区 | 日韩av在线发布| 看电影不卡的网站| 国产成人福利片| 色综合天天视频在线观看 | 久久99精品国产麻豆婷婷| 韩国三级电影一区二区| 成人av集中营| 欧美剧在线免费观看网站| 亚洲精品一区二区三区蜜桃下载| 欧美激情一区二区| 一区二区日韩av| 久久91精品久久久久久秒播| 成人av在线一区二区三区| 91免费视频观看| 日韩三级高清在线| 最新高清无码专区| 免费成人在线观看| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲乱码中文字幕综合| 天天操天天综合网| 粉嫩久久99精品久久久久久夜| 在线观看不卡一区| 久久精品日产第一区二区三区高清版| 亚洲欧美日韩电影| 国产在线精品一区在线观看麻豆| av欧美精品.com| 精品少妇一区二区三区视频免付费| 国产精品美女久久久久aⅴ | 婷婷综合在线观看| 国产91丝袜在线观看| 日韩午夜激情电影| 亚洲成人一二三| 97se狠狠狠综合亚洲狠狠| 精品三级av在线|