Skip to content

SENERGY-Platform/smart-service-module-worker-lib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Script Env

worker may receive scripts in the inputs named "prescript" and "postscript". those scripts may be chunked by appending suffixes to the input which. all inputs/scripts with the "prescript" prefix are sort by name, concatenated and executed before the worker code is run. all inputs/scipts with the "postscript" prefix are sort by name, concatenated and executed after the worker code is run.

the script environment allows access to multiple apis to

  • handle smart-service variables
  • read inputs
  • write outputs
  • access the device-repository
  • ...

to allow the web-ui (https://github.com/SENERGY-Platform/web-ui) code completion in https://github.com/SENERGY-Platform/web-ui/tree/master/src/app/modules/smart-services/designer/dialog/edit-smart-service-task-dialog, this repository provides a code generator, that creates an ace completer by calling

go generate ./...

Use Example

import (
	"context"
	"flag"
	"github.com/SENERGY-Platform/smart-service-module-worker-lib/pkg/configuration"
	"github.com/SENERGY-Platform/smart-service-module-worker-process/pkg"
	"github.com/SENERGY-Platform/smart-service-module-worker-process/pkg/processdeployment"
	"log"
	"os"
	"os/signal"
	"sync"
	"syscall"
)

func main() {
	configLocation := flag.String("config", "config.json", "configuration file")
	flag.Parse()

	libConfig, err := configuration.LoadLibConfig(*configLocation)
	if err != nil {
		log.Fatal(err)
	}
	config, err := configuration.Load[processdeployment.Config](*configLocation)
	if err != nil {
		log.Fatal(err)
	}

	ctx, cancel := context.WithCancel(context.Background())

	wg := &sync.WaitGroup{}

	err = pkg.Start(ctx, wg, config, libConfig)
	if err != nil {
		log.Fatal(err)
	}

	go func() {
		shutdown := make(chan os.Signal, 1)
		signal.Notify(shutdown, syscall.SIGINT, syscall.SIGTERM, syscall.SIGKILL)
		sig := <-shutdown
		log.Println("received shutdown signal", sig)
		cancel()
	}()

	<-ctx.Done() //waiting for context end; may happen by shutdown signal
	wg.Wait()
}

func Start(ctx context.Context, wg *sync.WaitGroup, config processdeployment.Config, libConfig configuration.Config) error {
	handlerFactory := func(auth *auth.Auth, smartServiceRepo *smartservicerepository.SmartServiceRepository) (camunda.Handler, error) {
		return processdeployment.New(config, libConfig, auth, smartServiceRepo), nil
	}
	return lib.Start(ctx, wg, libConfig, handlerFactory)
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages