package io.cattle.platform.object.process;
import io.cattle.platform.engine.process.ExitReason;
import io.cattle.platform.engine.process.Predicate;
import io.cattle.platform.engine.process.ProcessInstance;
import java.util.Map;
public interface ObjectProcessManager {
String getStandardProcessName(StandardProcess process, Object object);
String getStandardProcessName(StandardProcess process, String type);
ProcessInstance createProcessInstance(String processName, Object resource, Map<String, Object> data);
void scheduleProcessInstance(String processName, Object resource, Map<String, Object> data);
void scheduleProcessInstance(String processName, Object resource, Map<String, Object> data, Predicate predicate);
void scheduleStandardProcess(StandardProcess process, Object resource, Map<String, Object> data);
void scheduleStandardProcess(StandardProcess process, Object resource, Map<String, Object> data, Predicate predicate);
ExitReason executeStandardProcess(StandardProcess process, Object resource, Map<String, Object> data);
ExitReason executeProcess(String processName, Object resource, Map<String, Object> data);
void scheduleProcessInstanceAsync(String processName, Object resource, Map<String, Object> data);
void scheduleStandardProcessAsync(StandardProcess process, Object resource, Map<String, Object> data);
String getProcessName(Object resource, StandardProcess process);
void scheduleStandardChainedProcessAsync(StandardProcess from, StandardProcess to, Object resource, Map<String, Object> data);
}