# Licensed to the Apache Software Foundation (ASF) under one or more contributor
# license agreements; and to You under the Apache License, Version 2.0.

packages:
    helloworld1:
        actions:
            hello:
                function: actions/hello.js
        triggers:
            trigger1:
        rules:
            rule1:
                trigger: trigger1
                action: hello
    helloworld2:
        actions:
            hello:
                function: actions/hello.js
        triggers:
            trigger2:
        rules:
            rule1:
                trigger: trigger2
                action: hello
            rule2:
                trigger: trigger2
                action: hello

