2 * ================================================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ================================================================================
20 package org.openecomp.portalsdk.workflow.services;
22 import java.text.DateFormat;
23 import java.text.SimpleDateFormat;
24 import java.util.ArrayList;
25 import java.util.Date;
26 import java.util.List;
28 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
29 import org.openecomp.portalsdk.core.service.DataAccessService;
30 import org.openecomp.portalsdk.workflow.domain.WorkflowSchedule;
31 import org.openecomp.portalsdk.workflow.scheduler.WorkFlowScheduleRegistry;
32 import org.quartz.JobDetail;
33 import org.quartz.Trigger;
34 import org.springframework.beans.factory.annotation.Autowired;
35 import org.springframework.context.ApplicationContext;
36 import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
37 import org.springframework.scheduling.quartz.SchedulerFactoryBean;
38 import org.springframework.stereotype.Service;
39 import org.springframework.transaction.annotation.Transactional;
43 @Service("workflowScheduleService")
46 public class WorkflowScheduleServiceImpl implements WorkflowScheduleService{
48 EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WorkflowScheduleServiceImpl.class);
52 private DataAccessService dataAccessService;
55 private WorkFlowScheduleRegistry workflowRegistry;
58 private ApplicationContext appContext;
61 public List<WorkflowSchedule> findAll() {
63 /* List<WorkflowSchedule> allworkflows = getDataAccessService().getList(WorkflowSchedule.class, null);
64 for (WorkflowSchedule ws : allworkflows) {
66 System.out.println("Key:"+ws.getWorkflowKey()+" "+"CronDetails:"+ws.getStartdatetimecron());
68 @SuppressWarnings("unchecked")
69 List<WorkflowSchedule> list = getDataAccessService().getList(WorkflowSchedule.class, null);
74 public void saveWorkflowSchedule(WorkflowSchedule ws){
76 getDataAccessService().saveDomainObject(ws, null);
77 logger.info(EELFLoggerDelegate.debugLogger, ("Workflow Scheduled " + ws.getId() + " " + ws.getEndDateTime()));
78 triggerWorkflowScheduling((SchedulerFactoryBean)appContext.getBean(SchedulerFactoryBean.class),ws);
82 public void triggerWorkflowScheduling(SchedulerFactoryBean schedulerBean, WorkflowSchedule ws) {
85 final CronTriggerFactoryBean triggerBean = workflowRegistry.setUpTrigger(ws.getId(), ws.getServerUrl(), ws.getWorkflowKey(),ws.getArguments(),ws.getCronDetails(), ws.getStartDateTime(),ws.getEndDateTime());
86 schedulerBean.getScheduler().scheduleJob((JobDetail)triggerBean.getJobDataMap().get("jobDetail"),triggerBean.getObject());
87 } catch (Exception e) {
88 logger.debug(EELFLoggerDelegate.debugLogger, ("Error scheduling work flow with Id" + ws.getId() + e.getMessage()));
93 public List<Trigger> triggerWorkflowScheduling() {
95 Date date = new Date();
96 List<Trigger> triggers = new ArrayList<Trigger>();
98 DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
100 if (getDataAccessService() != null) {
101 @SuppressWarnings("unchecked")
102 List<WorkflowSchedule> allWorkflows = getDataAccessService()
103 .executeQuery("From WorkflowSchedule where endDateTime > '" + dateFormat.format(date) + "'", null);
105 for (WorkflowSchedule ws : allWorkflows) {
106 logger.info(EELFLoggerDelegate.debugLogger, ("Workflow Scheduled " + ws.getId() + "/ End Time: " + ws.getEndDateTime()));
110 final CronTriggerFactoryBean triggerBean = workflowRegistry.setUpTrigger(ws.getId(), ws.getServerUrl(), ws.getWorkflowKey(),ws.getArguments(), ws.getCronDetails(), ws.getStartDateTime(),ws.getEndDateTime());
112 triggers.add(triggerBean.getObject());
114 //schedulerBean.getScheduler().scheduleJob(trigger);
117 } catch (Exception e) {
118 logger.debug(EELFLoggerDelegate.debugLogger, ("Error scheduling work flow with Id" + ws.getId() + e.getMessage()));
129 public DataAccessService getDataAccessService() {
130 return dataAccessService;
134 public void setDataAccessService(DataAccessService dataAccessService) {
135 this.dataAccessService = dataAccessService;
139 public WorkflowSchedule getWorkflowScheduleByKey(Long key) {
140 return (WorkflowSchedule)(getDataAccessService().getDomainObject(WorkflowSchedule.class, key, null));