001/* 002 * Copyright (c) 2016-2017 Chris K Wensel <chris@wensel.net>. All Rights Reserved. 003 * Copyright (c) 2007-2017 Xplenty, Inc. All Rights Reserved. 004 * 005 * Project and contact information: http://www.cascading.org/ 006 * 007 * This file is part of the Cascading project. 008 * 009 * Licensed under the Apache License, Version 2.0 (the "License"); 010 * you may not use this file except in compliance with the License. 011 * You may obtain a copy of the License at 012 * 013 * http://www.apache.org/licenses/LICENSE-2.0 014 * 015 * Unless required by applicable law or agreed to in writing, software 016 * distributed under the License is distributed on an "AS IS" BASIS, 017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 018 * See the License for the specific language governing permissions and 019 * limitations under the License. 020 */ 021 022package cascading.flow; 023 024import cascading.management.CascadingServices; 025 026/** 027 * FlowSession implementations provide a call-back interface into the current flow management system, if any. 028 * <p> 029 * A FlowSession is effectively unique to the current {@link Flow}, where a {@link FlowProcess} is unique 030 * to each underlying 'job'. 031 * 032 * @see FlowProcess 033 */ 034public class FlowSession 035 { 036 /** Field NULL is a noop implementation of FlowSession. */ 037 public static final FlowSession NULL = new FlowSession(); 038 039 protected CascadingServices cascadingServices; 040 041 /** Field currentProcess */ 042 private FlowProcess currentProcess = FlowProcess.NULL; // is set via accessor 043 044 public FlowSession() 045 { 046 } 047 048 public FlowSession( CascadingServices cascadingServices ) 049 { 050 this.cascadingServices = cascadingServices; 051 } 052 053 /** 054 * Method setCurrentProcess sets the currentProcess of this FlowSession object. 055 * 056 * @param currentProcess the currentProcess of this FlowSession object. 057 */ 058 public void setCurrentProcess( FlowProcess currentProcess ) 059 { 060 this.currentProcess = currentProcess; 061 } 062 063 /** 064 * Method getCurrentProcess returns the currentProcess of this FlowSession object. 065 * 066 * @return the currentProcess (type FlowProcess) of this FlowSession object. 067 */ 068 public FlowProcess getCurrentProcess() 069 { 070 return currentProcess; 071 } 072 073 public CascadingServices getCascadingServices() 074 { 075 return cascadingServices; 076 } 077 078 /** 079 * Method getID returns the parent {@link Flow} ID value. 080 * 081 * @return of type String 082 */ 083 public String getID() 084 { 085 return currentProcess.getStringProperty( Flow.CASCADING_FLOW_ID ); 086 } 087 }