class ScheduledJob(mb.MistralModelBase): """Contains info about scheduled jobs.""" __tablename__ = 'scheduled_jobs_v2' id = mb.id_column() run_after = sa.Column(sa.Integer) # The full name of the factory function that returns/builds a Python # (target) object whose method should be called. Optional. target_factory_func_name = sa.Column(sa.String(200), nullable=True) # May take two different forms: # 1. Full path of a target function that should be called. For example, # "mistral.utils.random_sleep". # 2. Name of a method to call on a target object, if # "target_factory_func_name" is specified. func_name = sa.Column(sa.String(80), nullable=False) func_args = sa.Column(st.JsonDictType()) func_arg_serializers = sa.Column(st.JsonDictType()) auth_ctx = sa.Column(st.JsonDictType()) execute_at = sa.Column(sa.DateTime, nullable=False) captured_at = sa.Column(sa.DateTime, nullable=True) key = sa.Column(sa.String(250), nullable=True)
class EventTrigger(mb.MistralSecureModelBase): """Contains info about event triggers.""" __tablename__ = 'event_triggers_v2' __table_args__ = ( sa.UniqueConstraint('exchange', 'topic', 'event', 'workflow_id', 'project_id'), sa.Index('%s_project_id_workflow_id' % __tablename__, 'project_id', 'workflow_id'), ) id = mb.id_column() name = sa.Column(sa.String(200)) workflow_id = sa.Column( sa.String(36), sa.ForeignKey(WorkflowDefinition.id) ) workflow = relationship('WorkflowDefinition', lazy='joined') workflow_params = sa.Column(st.JsonDictType()) workflow_input = sa.Column(st.JsonDictType()) exchange = sa.Column(sa.String(80), nullable=False) topic = sa.Column(sa.String(80), nullable=False) event = sa.Column(sa.String(80), nullable=False) trust_id = sa.Column(sa.String(80))
class CronTrigger(mb.MistralSecureModelBase): """Contains info about cron triggers.""" __tablename__ = 'cron_triggers_v2' __table_args__ = ( sa.UniqueConstraint('name', 'project_id'), sa.UniqueConstraint( 'workflow_input_hash', 'workflow_name', 'pattern', 'project_id', 'workflow_params_hash', 'remaining_executions', 'first_execution_time' ), sa.Index( '%s_next_execution_time' % __tablename__, 'next_execution_time' ), sa.Index('%s_project_id' % __tablename__, 'project_id'), sa.Index('%s_scope' % __tablename__, 'scope'), sa.Index('%s_workflow_name' % __tablename__, 'workflow_name'), ) id = mb.id_column() name = sa.Column(sa.String(200)) pattern = sa.Column( sa.String(100), nullable=True, default='0 0 30 2 0' # Set default to 'never'. ) first_execution_time = sa.Column(sa.DateTime, nullable=True) next_execution_time = sa.Column(sa.DateTime, nullable=False) workflow_name = sa.Column(sa.String(255)) remaining_executions = sa.Column(sa.Integer) workflow_id = sa.Column( sa.String(36), sa.ForeignKey(WorkflowDefinition.id) ) workflow = relationship('WorkflowDefinition', lazy='joined') workflow_params = sa.Column(st.JsonDictType()) workflow_params_hash = sa.Column( sa.CHAR(64), default=_get_hash_function_by('workflow_params') ) workflow_input = sa.Column(st.JsonDictType()) workflow_input_hash = sa.Column( sa.CHAR(64), default=_get_hash_function_by('workflow_input') ) trust_id = sa.Column(sa.String(80)) def to_dict(self): d = super(CronTrigger, self).to_dict() utils.datetime_to_str_in_dict(d, 'first_execution_time') utils.datetime_to_str_in_dict(d, 'next_execution_time') return d
class DelayedCall(mb.MistralModelBase): """Contains info about delayed calls.""" __tablename__ = 'delayed_calls_v2' id = mb.id_column() factory_method_path = sa.Column(sa.String(200), nullable=True) target_method_name = sa.Column(sa.String(80), nullable=False) method_arguments = sa.Column(st.JsonDictType()) serializers = sa.Column(st.JsonDictType()) auth_context = sa.Column(st.JsonDictType()) execution_time = sa.Column(sa.DateTime, nullable=False)
class Execution(mb.MistralSecureModelBase): """Abstract execution object.""" __tablename__ = 'executions_v2' __table_args__ = ( sa.Index('%s_project_id' % __tablename__, 'project_id'), sa.Index('%s_scope' % __tablename__, 'scope'), sa.Index('%s_state' % __tablename__, 'state'), sa.Index('%s_type' % __tablename__, 'type'), sa.Index('%s_updated_at' % __tablename__, 'updated_at'), ) type = sa.Column(sa.String(50)) __mapper_args__ = { 'polymorphic_on': type, 'polymorphic_identity': 'execution' } # Main properties. id = mb.id_column() name = sa.Column(sa.String(80)) description = sa.Column(sa.String(255), nullable=True) workflow_name = sa.Column(sa.String(80)) workflow_id = sa.Column(sa.String(80)) spec = sa.Column(st.JsonDictType()) state = sa.Column(sa.String(20)) state_info = sa.Column(sa.Text(), nullable=True) tags = sa.Column(st.JsonListType()) # Runtime context like iteration_no of a repeater. # Effectively internal engine properties which will be used to determine # execution of a task. runtime_context = sa.Column(st.JsonLongDictType())
class DelayedCall(mb.MistralModelBase): """Contains info about delayed calls.""" __tablename__ = 'delayed_calls_v2' __table_args__ = (sa.Index('%s_processing_execution_time' % __tablename__, 'processing', 'execution_time'), ) id = mb.id_column() factory_method_path = sa.Column(sa.String(200), nullable=True) target_method_name = sa.Column(sa.String(80), nullable=False) method_arguments = sa.Column(st.JsonDictType()) serializers = sa.Column(st.JsonDictType()) auth_context = sa.Column(st.JsonDictType()) execution_time = sa.Column(sa.DateTime, nullable=False) processing = sa.Column(sa.Boolean, default=False, nullable=False)
class Definition(mb.MistralSecureModelBase): __abstract__ = True id = mb.id_column() name = sa.Column(sa.String(80)) definition = sa.Column(sa.Text(), nullable=True) spec = sa.Column(st.JsonDictType()) tags = sa.Column(st.JsonListType())
class Task(mb.MistralBase): """Contains info about particular task.""" __tablename__ = 'tasks' id = _id_column() name = sa.Column(sa.String(80)) requires = sa.Column(st.JsonDictType()) workbook_name = sa.Column(sa.String(80)) execution_id = sa.Column(sa.String(36)) description = sa.Column(sa.String(200)) task_spec = sa.Column(st.JsonDictType()) action_spec = sa.Column(st.JsonDictType()) state = sa.Column(sa.String(20)) tags = sa.Column(st.JsonListType()) # Data Flow properties. in_context = sa.Column(st.JsonDictType()) parameters = sa.Column(st.JsonDictType()) output = sa.Column(st.JsonDictType()) # Runtime context like iteration_no of a repeater. # Effectively internal engine properties which will be used to determine # execution of a task. task_runtime_context = sa.Column(st.JsonDictType())
class WorkflowExecution(mb.MistralBase): """Contains info about particular workflow execution.""" __tablename__ = 'workflow_executions' id = _id_column() workbook_name = sa.Column(sa.String(80)) task = sa.Column(sa.String(80)) state = sa.Column(sa.String(20)) context = sa.Column(st.JsonDictType())
class Environment(mb.MistralSecureModelBase): """Contains environment variables for workflow execution.""" __tablename__ = 'environments_v2' __table_args__ = (sa.UniqueConstraint('name', 'project_id'), ) # Main properties. id = mb.id_column() name = sa.Column(sa.String(200)) description = sa.Column(sa.Text()) variables = sa.Column(st.JsonDictType())
class ActionDefinition(Definition): """Contains info about registered Actions.""" __tablename__ = 'action_definitions_v2' __table_args__ = (sa.UniqueConstraint('name', 'project_id'), ) # Main properties. description = sa.Column(sa.Text()) input = sa.Column(sa.Text()) # Service properties. action_class = sa.Column(sa.String(200)) attributes = sa.Column(st.JsonDictType()) is_system = sa.Column(sa.Boolean())
class Execution(mb.MistralSecureModelBase): __abstract__ = True # Common properties. id = mb.id_column() name = sa.Column(sa.String(80)) description = sa.Column(sa.String(255), nullable=True) workflow_name = sa.Column(sa.String(80)) workflow_id = sa.Column(sa.String(80)) spec = sa.Column(st.JsonDictType()) state = sa.Column(sa.String(20)) state_info = sa.Column(sa.Text(), nullable=True) tags = sa.Column(st.JsonListType()) # Internal properties which can be used by engine. runtime_context = sa.Column(st.JsonLongDictType())
class ActionDefinition(Definition): """Contains info about registered Actions.""" __tablename__ = 'action_definitions_v2' namespace = sa.Column(sa.String(255), nullable=True) __table_args__ = ( sa.UniqueConstraint('name', 'namespace', 'project_id'), sa.Index('%s_is_system' % __tablename__, 'is_system'), sa.Index('%s_action_class' % __tablename__, 'action_class'), sa.Index('%s_project_id' % __tablename__, 'project_id'), sa.Index('%s_scope' % __tablename__, 'scope'), ) # Main properties. description = sa.Column(sa.Text()) input = sa.Column(sa.Text()) # Service properties. action_class = sa.Column(sa.String(200)) attributes = sa.Column(st.JsonDictType())