001 /* 002 * Copyright 2011 The Kuali Foundation. 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017 package org.kuali.kfs.sys.document.workflow; 018 019 import java.rmi.RemoteException; 020 021 import org.apache.log4j.Logger; 022 import org.kuali.kfs.sys.context.SpringContext; 023 import org.kuali.rice.kew.dto.ActionTakenEventDTO; 024 import org.kuali.rice.kew.dto.AfterProcessEventDTO; 025 import org.kuali.rice.kew.dto.BeforeProcessEventDTO; 026 import org.kuali.rice.kew.dto.DeleteEventDTO; 027 import org.kuali.rice.kew.dto.DocumentLockingEventDTO; 028 import org.kuali.rice.kew.dto.DocumentRouteLevelChangeDTO; 029 import org.kuali.rice.kew.dto.DocumentRouteStatusChangeDTO; 030 import org.kuali.rice.kew.postprocessor.PostProcessorRemote; 031 import org.kuali.rice.kns.service.PostProcessorService; 032 033 /** 034 * This class is the public entry point by which workflow communicates status changes, level changes, and other useful changes. Note 035 * that this class delegates all of these activities to the PostProcessorService, which does the actual work. This is done to ensure 036 * proper transaction scoping, and to resolve some issues present otherwise. Because of this, its important to understand that a 037 * transaction will be started at the PostProcessorService method call, so any work that needs to be done within the same 038 * transaction needs to happen inside that service implementation, rather than in here. 039 */ 040 public class PostProcessor implements PostProcessorRemote { 041 042 private static Logger LOG = Logger.getLogger(PostProcessor.class); 043 044 public Long[] getDocumentIdsToLock(DocumentLockingEventDTO arg0) throws Exception { 045 return SpringContext.getBean(PostProcessorService.class).getDocumentIdsToLock(arg0); 046 } 047 048 /** 049 * @see org.kuali.rice.kew.clientapp.PostProcessorRemote#doRouteStatusChange(org.kuali.rice.kew.clientapp.vo.DocumentRouteStatusChangeDTO) 050 */ 051 public boolean doRouteStatusChange(DocumentRouteStatusChangeDTO statusChangeEvent) throws RemoteException { 052 return SpringContext.getBean(PostProcessorService.class).doRouteStatusChange(statusChangeEvent); 053 } 054 055 /** 056 * @see org.kuali.rice.kew.clientapp.PostProcessorRemote#doActionTaken(org.kuali.rice.kew.clientapp.vo.ActionTakenEventDTO) 057 */ 058 public boolean doActionTaken(ActionTakenEventDTO event) throws RemoteException { 059 return SpringContext.getBean(PostProcessorService.class).doActionTaken(event); 060 } 061 062 /** 063 * @see org.kuali.rice.kew.clientapp.PostProcessorRemote#doDeleteRouteHeader(org.kuali.rice.kew.clientapp.vo.DeleteEventDTO) 064 */ 065 public boolean doDeleteRouteHeader(DeleteEventDTO event) throws RemoteException { 066 return SpringContext.getBean(PostProcessorService.class).doDeleteRouteHeader(event); 067 } 068 069 /** 070 * @see org.kuali.rice.kew.clientapp.PostProcessorRemote#doRouteLevelChange(org.kuali.rice.kew.clientapp.vo.DocumentRouteLevelChangeDTO) 071 */ 072 public boolean doRouteLevelChange(DocumentRouteLevelChangeDTO levelChangeEvent) throws RemoteException { 073 return SpringContext.getBean(PostProcessorService.class).doRouteLevelChange(levelChangeEvent); 074 } 075 076 public boolean afterProcess(AfterProcessEventDTO arg0) throws Exception { 077 return true; 078 } 079 080 public boolean beforeProcess(BeforeProcessEventDTO arg0) throws Exception { 081 return true; 082 } 083 }