All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.openwfe.org.engine.impl.dispatch.FileDispatcher Maven / Gradle / Ivy

/*
 * Copyright (c) 2001-2006, John Mettraux, OpenWFE.org
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions are met:
 * 
 * . Redistributions of source code must retain the above copyright notice, this
 *   list of conditions and the following disclaimer.  
 * 
 * . Redistributions in binary form must reproduce the above copyright notice, 
 *   this list of conditions and the following disclaimer in the documentation 
 *   and/or other materials provided with the distribution.
 * 
 * . Neither the name of the "OpenWFE" nor the names of its contributors may be
 *   used to endorse or promote products derived from this software without
 *   specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
 * POSSIBILITY OF SUCH DAMAGE.
 *
 * $Id: FileDispatcher.java 2658 2006-05-24 10:30:29Z jmettraux $
 */

//
// FileDispatcher.java
//
// [email protected]
//
// generated with 
// jtmpl 1.0.04 20.11.2001 John Mettraux ([email protected])
//

package openwfe.org.engine.impl.dispatch;

import openwfe.org.ServiceException;
import openwfe.org.ApplicationContext;
import openwfe.org.time.Time;
import openwfe.org.engine.workitem.WorkItem;
import openwfe.org.engine.workitem.LaunchItem;
import openwfe.org.engine.workitem.InFlowWorkItem;
import openwfe.org.engine.workitem.WorkItemCoder;
import openwfe.org.engine.dispatch.DispatchingException;
import openwfe.org.engine.dispatch.AbstractWorkItemDispatcher;
import openwfe.org.engine.expressions.FlowExpressionId;


/**
 * A very simple dispatcher, dispatches to a directory, into a file.
 *
 * 

CVS Info : *
$Author: jmettraux $ *
$Date: 2006-05-24 12:30:29 +0200 (Wed, 24 May 2006) $ *
$Id: FileDispatcher.java 2658 2006-05-24 10:30:29Z jmettraux $
* * @author [email protected] */ public class FileDispatcher extends AbstractWorkItemDispatcher { private final static org.apache.log4j.Logger log = org.apache.log4j.Logger .getLogger(FileDispatcher.class.getName()); // // CONSTANTS (definitions) /** * The parameter 'directory' is used to indicate into which directory (path) * this dispatcher should deliver its workitems. */ public final static String P_DIRECTORY = "directory"; // // FIELDS private String directory = null; // // CONSTRUCTORS public void init (final String serviceName, final ApplicationContext context, final java.util.Map serviceParams) throws ServiceException { super.init(serviceName, context, serviceParams); this.directory = (String)serviceParams.get(P_DIRECTORY); if ( ! this.directory.startsWith(java.io.File.separator)) this.directory = context.getApplicationDirectory()+this.directory; if (! this.directory.endsWith(java.io.File.separator)) this.directory += java.io.File.separator; } // // METHODS public Object dispatch (WorkItem wi) throws DispatchingException { // // determine file name String fileName = null; if (wi instanceof InFlowWorkItem) { FlowExpressionId id = ((InFlowWorkItem)wi).getLastExpressionId(); fileName = this.directory+ id.getWorkflowDefinitionName()+"--"+ id.getWorkflowDefinitionRevision()+"--"+ id.getWorkflowInstanceId()+"--"+ id.getExpressionName()+"--"+ id.getExpressionId()+ ".xml"; } if (wi instanceof LaunchItem) { LaunchItem li = (LaunchItem)wi; int i = 0; while (true) { fileName = this.directory+ "launch-item--"+ i+ ".xml"; if ((new java.io.File(fileName)).exists()) { i++; continue; } break; } } // // store try { WorkItemCoder coder = instantiateEncoder(); java.io.FileOutputStream fos = new java.io.FileOutputStream(fileName); if (wi instanceof InFlowWorkItem) { ((InFlowWorkItem)wi) .setDispatchTime(Time.toIsoDate()); } byte[] encodedWorkItem = (byte[])coder .encode(wi, getContext(), getParams()); fos.write(encodedWorkItem); fos.flush(); fos.close(); } catch (Exception e) { throw new DispatchingException ("Dispatching failed for "+wi.toString(), e); } return null; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy