/** * @return the startTime */ public long getStartTime() { return getCreateTime(); }
@Override public List<Workflow> getWorkflowsByType(String workflowName, Long startTime, Long endTime) { Preconditions.checkNotNull(workflowName, "workflowName cannot be null"); Preconditions.checkNotNull(startTime, "startTime cannot be null"); Preconditions.checkNotNull(endTime, "endTime cannot be null"); List<Workflow> workflows = new LinkedList<>(); // Get all date strings between start and end List<String> dateStrs = dateStrBetweenDates(startTime, endTime); dateStrs.forEach(dateStr -> { String key = nsKey(WORKFLOW_DEF_TO_WORKFLOWS, workflowName, dateStr); dynoClient.smembers(key).forEach(workflowId -> { try { Workflow workflow = getWorkflow(workflowId); if (workflow.getCreateTime() >= startTime && workflow.getCreateTime() <= endTime) { workflows.add(workflow); } }catch(Exception e) { logger.error("Failed to get workflow: {}", workflowId, e); } }); }); return workflows; }
@Override public List<Workflow> getWorkflowsByType(String workflowName, Long startTime, Long endTime) { Preconditions.checkNotNull(workflowName, "workflowName cannot be null"); Preconditions.checkNotNull(startTime, "startTime cannot be null"); Preconditions.checkNotNull(endTime, "endTime cannot be null"); List<Workflow> workflows = new LinkedList<>(); withTransaction(tx -> { // @formatter:off String GET_ALL_WORKFLOWS_FOR_WORKFLOW_DEF = "SELECT workflow_id FROM workflow_def_to_workflow " + "WHERE workflow_def = ? AND date_str BETWEEN ? AND ?"; // @formatter:on List<String> workflowIds = query(tx, GET_ALL_WORKFLOWS_FOR_WORKFLOW_DEF, q -> q.addParameter(workflowName) .addParameter(dateStr(startTime)).addParameter(dateStr(endTime)).executeScalarList(String.class)); workflowIds.forEach(workflowId -> { try { Workflow wf = getWorkflow(workflowId); if (wf.getCreateTime() >= startTime && wf.getCreateTime() <= endTime) { workflows.add(wf); } } catch (Exception e) { logger.error("Unable to load workflow id {} with name {}", workflowId, workflowName, e); } }); }); return workflows; }
this.workflowId = workflow.getWorkflowId(); this.correlationId = workflow.getCorrelationId(); if(workflow.getCreateTime() != null){ this.startTime = sdf.format(new Date(workflow.getCreateTime()));
private void addWorkflowDefToWorkflowMapping(Connection connection, Workflow workflow) { String INSERT_WORKFLOW_DEF_TO_WORKFLOW = "INSERT INTO workflow_def_to_workflow (workflow_def, date_str, workflow_id) VALUES (?, ?, ?)"; execute(connection, INSERT_WORKFLOW_DEF_TO_WORKFLOW, q -> q.addParameter(workflow.getWorkflowName()).addParameter(dateStr(workflow.getCreateTime())) .addParameter(workflow.getWorkflowId()).executeUpdate()); }
private void removeWorkflowDefToWorkflowMapping(Connection connection, Workflow workflow) { String REMOVE_WORKFLOW_DEF_TO_WORKFLOW = "DELETE FROM workflow_def_to_workflow WHERE workflow_def = ? AND date_str = ? AND workflow_id = ?"; execute(connection, REMOVE_WORKFLOW_DEF_TO_WORKFLOW, q -> q.addParameter(workflow.getWorkflowName()).addParameter(dateStr(workflow.getCreateTime())) .addParameter(workflow.getWorkflowId()).executeUpdate()); }
if (!update) { String key = nsKey(WORKFLOW_DEF_TO_WORKFLOWS, workflow.getWorkflowName(), dateStr(workflow.getCreateTime())); dynoClient.sadd(key, workflow.getWorkflowId()); if (workflow.getCorrelationId() != null) {
@Override public boolean removeWorkflow(String workflowId) { Workflow workflow = getWorkflow(workflowId, true); if (workflow != null) { recordRedisDaoRequests("removeWorkflow"); // Remove from lists String key = nsKey(WORKFLOW_DEF_TO_WORKFLOWS, workflow.getWorkflowName(), dateStr(workflow.getCreateTime())); dynoClient.srem(key, workflowId); dynoClient.srem(nsKey(CORR_ID_TO_WORKFLOWS, workflow.getCorrelationId()), workflowId); dynoClient.srem(nsKey(PENDING_WORKFLOWS, workflow.getWorkflowName()), workflowId); // Remove the object dynoClient.del(nsKey(WORKFLOW, workflowId)); for (Task task : workflow.getTasks()) { removeTask(task.getTaskId()); } return true; } return false; }
assertTrue(bytime.isEmpty()); bytime = getExecutionDAO().getWorkflowsByType(workflow.getWorkflowName(), workflow.getCreateTime() - 10, workflow.getCreateTime() + 10); assertNotNull(bytime); assertEquals(1, bytime.size());
/** * @return the startTime */ public long getStartTime() { return getCreateTime(); }
@Override public List<Workflow> getWorkflowsByType(String workflowName, Long startTime, Long endTime) { Preconditions.checkNotNull(workflowName, "workflowName cannot be null"); Preconditions.checkNotNull(startTime, "startTime cannot be null"); Preconditions.checkNotNull(endTime, "endTime cannot be null"); List<Workflow> workflows = new LinkedList<>(); // Get all date strings between start and end List<String> dateStrs = dateStrBetweenDates(startTime, endTime); dateStrs.forEach(dateStr -> { String key = nsKey(WORKFLOW_DEF_TO_WORKFLOWS, workflowName, dateStr); dynoClient.smembers(key).forEach(workflowId -> { try { Workflow workflow = getWorkflow(workflowId); if (workflow.getCreateTime() >= startTime && workflow.getCreateTime() <= endTime) { workflows.add(workflow); } }catch(Exception e) { logger.error("Failed to get workflow: {}", workflowId, e); } }); }); return workflows; }
this.workflowId = workflow.getWorkflowId(); this.correlationId = workflow.getCorrelationId(); if(workflow.getCreateTime() != null){ this.startTime = sdf.format(new Date(workflow.getCreateTime()));
if (!update) { String key = nsKey(WORKFLOW_DEF_TO_WORKFLOWS, workflow.getWorkflowName(), dateStr(workflow.getCreateTime())); dynoClient.sadd(key, workflow.getWorkflowId()); if (workflow.getCorrelationId() != null) {
@Override public boolean removeWorkflow(String workflowId) { Workflow workflow = getWorkflow(workflowId, true); if (workflow != null) { recordRedisDaoRequests("removeWorkflow"); // Remove from lists String key = nsKey(WORKFLOW_DEF_TO_WORKFLOWS, workflow.getWorkflowName(), dateStr(workflow.getCreateTime())); dynoClient.srem(key, workflowId); dynoClient.srem(nsKey(CORR_ID_TO_WORKFLOWS, workflow.getCorrelationId()), workflowId); dynoClient.srem(nsKey(PENDING_WORKFLOWS, workflow.getWorkflowName()), workflowId); // Remove the object dynoClient.del(nsKey(WORKFLOW, workflowId)); for (Task task : workflow.getTasks()) { removeTask(task.getTaskId()); } return true; } return false; }