package io.seqera.tower.service.progress
   @Inject
   AuditEventPublisher auditEventPublisher
 @PostConstruct
   void init() {
       log.info "Creating workflow progress updater -- store=${store.getClass().getSimpleName()};"
       publisher = PublishSubject.create()

       publisher
               .observeOn(Schedulers.computation())
               .subscribe { doEvent(it) }
   }

   @Deprecated void create(String workflowId, List<String> processNames) {
       // defer the invocation
       publisher.onNext( { target.create(workflowId, processNames) } )
   }

   @Deprecated void updateStats(String workflowId, List<Task> tasks) {
       // defer the invocation
       publisher.onNext( { target.updateStats(workflowId, tasks) } )
   }
   void doEvent(event) {
       if( event instanceof Closure ) {
           event.call()
       }
       else {
           log.warn "Illegal progress event=$event"
       }
   }