001 /** 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 package org.apache.oozie.command.wf; 019 020 import org.apache.oozie.AppType; 021 import org.apache.oozie.WorkflowActionBean; 022 import org.apache.oozie.WorkflowJobBean; 023 import org.apache.oozie.command.XCommand; 024 import org.apache.oozie.event.WorkflowActionEvent; 025 import org.apache.oozie.event.WorkflowJobEvent; 026 027 /** 028 * Abstract coordinator command class derived from XCommand 029 * 030 * @param <T> 031 */ 032 public abstract class WorkflowXCommand<T> extends XCommand<T> { 033 /** 034 * Base class constructor for workflow commands. 035 * 036 * @param name command name 037 * @param type command type 038 * @param priority command priority 039 */ 040 public WorkflowXCommand(String name, String type, int priority) { 041 super(name, type, priority); 042 } 043 044 /** 045 * Base class constructor for workflow commands. 046 * 047 * @param name command name 048 * @param type command type 049 * @param priority command priority 050 * @param dryrun true if rerun is enabled for command 051 */ 052 public WorkflowXCommand(String name, String type, int priority, boolean dryrun) { 053 super(name, type, priority, dryrun); 054 } 055 056 protected static void generateEvent(WorkflowJobBean wfJob, String errorCode, String errorMsg) { 057 if (eventService.isSupportedApptype(AppType.WORKFLOW_JOB.name())) { 058 WorkflowJobEvent event = new WorkflowJobEvent(wfJob.getId(), wfJob.getParentId(), wfJob.getStatus(), 059 wfJob.getUser(), wfJob.getAppName(), wfJob.getStartTime(), wfJob.getEndTime()); 060 event.setErrorCode(errorCode); 061 event.setErrorMessage(errorMsg); 062 eventService.queueEvent(event); 063 } 064 } 065 066 protected static void generateEvent(WorkflowJobBean wfJob) { 067 generateEvent(wfJob, null, null); 068 } 069 070 protected void generateEvent(WorkflowActionBean wfAction, String wfUser) { 071 if (eventService.isSupportedApptype(AppType.WORKFLOW_ACTION.name())) { 072 WorkflowActionEvent event = new WorkflowActionEvent(wfAction.getId(), wfAction.getJobId(), 073 wfAction.getStatus(), wfUser, wfAction.getName(), wfAction.getStartTime(), wfAction.getEndTime()); 074 event.setErrorCode(wfAction.getErrorCode()); 075 event.setErrorMessage(wfAction.getErrorMessage()); 076 eventService.queueEvent(event); 077 } 078 } 079 080 }