docs: def save(self, status=None, callback_pos=None, id_workflow=None):
          """Save object to persistent storage."""
          if self.model is None:
              raise WorkflowsMissingModel()
  
          with db.session.begin_nested():
              workflow_object_before_save.send(self)
  
              self.model.modified = datetime.now()
              if status is not None:
                  self.model.status = status
  
              if id_workflow is not None:
                  workflow = Workflow.query.filter_by(uuid=id_workflow).one()
                  self.model.workflow = workflow
  
              # Special handling of JSON fields to mark update
              if self.model.callback_pos is None:
                  self.model.callback_pos = list()
              elif callback_pos is not None:
                  self.model.callback_pos = callback_pos
              flag_modified(self.model, 'callback_pos')
  
              if self.model.data is None:
                  self.model.data = dict()
              flag_modified(self.model, 'data')
  
              if self.model.extra_data is None:
                  self.model.extra_data = dict()
              flag_modified(self.model, 'extra_data')
  
              db.session.merge(self.model)
  
              if self.id is not None:
                  self.log.debug("Saved object: {id} at {callback_pos}".format(
                      id=self.model.id or "new",
                      callback_pos=self.model.callback_pos
                  ))
          workflow_object_after_save.send(self)