# 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:
    helloworld:
        actions:
            hello:
                function: actions/hello.js
                runtime: nodejs:6
            helloWithParams:
                function: actions/hello.js
                runtime: nodejs:6
                inputs:
                    name: Amy
                    place: Paris
            helloWithParams1:
                function: actions/hello.js
                runtime: nodejs:6
                inputs:
                    name: Amy
                    place: Paris
        sequences:
            hello:
                actions: helloWithParams, helloWithParams1

