001: /*--
002:
003: Copyright (C) 2002-2005 Adrian Price.
004: All rights reserved.
005:
006: Redistribution and use in source and binary forms, with or without
007: modification, are permitted provided that the following conditions
008: are met:
009:
010: 1. Redistributions of source code must retain the above copyright
011: notice, this list of conditions, and the following disclaimer.
012:
013: 2. Redistributions in binary form must reproduce the above copyright
014: notice, this list of conditions, and the disclaimer that follows
015: these conditions in the documentation and/or other materials
016: provided with the distribution.
017:
018: 3. The names "OBE" and "Open Business Engine" must not be used to
019: endorse or promote products derived from this software without prior
020: written permission. For written permission, please contact
021: adrianprice@sourceforge.net.
022:
023: 4. Products derived from this software may not be called "OBE" or
024: "Open Business Engine", nor may "OBE" or "Open Business Engine"
025: appear in their name, without prior written permission from
026: Adrian Price (adrianprice@users.sourceforge.net).
027:
028: THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
029: WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
030: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
031: DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT,
032: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
033: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
034: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
035: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
036: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
037: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
038: POSSIBILITY OF SUCH DAMAGE.
039:
040: For more information on OBE, please see
041: <http://obe.sourceforge.net/>.
042:
043: */
044:
045: package org.obe.spi.event;
046:
047: import org.obe.spi.service.WorkflowEventBroker;
048: import org.obe.xpdl.model.workflow.WorkflowProcess;
049: import org.wfmc.audit.WMAEventCode;
050: import org.wfmc.wapi.WMProcessDefinitionState;
051:
052: /**
053: * Delivers process definition event notifications.
054: *
055: * @author Adrian Price
056: */
057: public final class ProcessDefinitionEvent extends WorkflowEvent {
058: private static final long serialVersionUID = 6206079798767638899L;
059: /**
060: * The process definition was created.
061: */
062: public static final int CREATED = WMProcessDefinitionState.CREATE_ACTION;
063: /**
064: * The process definition was deleted.
065: */
066: public static final int DELETED = WMProcessDefinitionState.DELETE_ACTION;
067: /**
068: * The process definition was disabled.
069: */
070: public static final int DISABLED = WMProcessDefinitionState.DISABLE_ACTION;
071: /**
072: * The process definition was enabled.
073: */
074: public static final int ENABLED = WMProcessDefinitionState.ENABLE_ACTION;
075: /**
076: * The process definition was updated.
077: */
078: public static final int UPDATED = WMProcessDefinitionState.UPDATE_ACTION;
079: private static final WMAEventCode[] IF5_EVENT_CODES = {
080: WMAEventCode.UNKNOWN, WMAEventCode.UNKNOWN,
081: WMAEventCode.CHANGED_PROCESS_DEFINITION_STATE,
082: WMAEventCode.CHANGED_PROCESS_DEFINITION_STATE,
083: WMAEventCode.UNKNOWN };
084: private static final String[] EVENT_TYPES = {
085: "ProcessDefinitionCreated", "ProcessDefinitionDeleted",
086: "ProcessDefinitionDisabled", "ProcessDefinitionEnabled",
087: "ProcessDefinitionUpdated" };
088:
089: /**
090: * Constructs a new process definition event.
091: *
092: * @param source
093: * @param id
094: * @param broker
095: */
096: public ProcessDefinitionEvent(WorkflowProcess source, int id,
097: WorkflowEventBroker broker) {
098:
099: super (source, id, WorkflowProcess.class, EVENT_TYPES[id],
100: source.getId(), broker);
101: }
102:
103: /**
104: * Returns the source workflow process definition.
105: *
106: * @return The workflow process that fired the event.
107: */
108: public WorkflowProcess getProcessDefinition() {
109: return (WorkflowProcess) source;
110: }
111:
112: public WMAEventCode getWMAEventCode() {
113: return IF5_EVENT_CODES[_id];
114: }
115:
116: public String toString() {
117: return EVENT_TYPES[_id] + "[source=" + source + +']';
118: }
119: }
|