blob: 3a654180d000ef14a4c25111a7357be13e47ae74 [file] [log] [blame]
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
packages:
IntegrationTestHelloWorld:
actions:
# helloworld action in NodeJS
helloNodejs:
function: actions/hello.js
runtime: nodejs:default
inputs:
name:
type: string
description: name of a person
place:
type: string
description: location of a person
outputs:
payload:
type: string
description: a simple greeting message, Hello World!
helloNodejsWithCode:
code: |
function main(params) {
msg = "Hello, " + params.name + " from " + params.place;
console.log(msg)
return { payload: msg };
}
runtime: nodejs:default
inputs:
name:
type: string
description: name of a person
place:
type: string
description: location of a person
outputs:
payload:
type: string
description: a simple greeting message, Hello World!
# helloworld action in Java
helloJava:
function: actions/hello.jar
main: Hello
runtime: java
inputs:
name:
type: string
description: name of a person
outputs:
payload:
type: string
description: a simple greeting message, Hello Bob!
# Uncomment Java With Code once action creation is fixed.
# this is failing with internal server application problem.
# helloJavaWithCode:
# code: |
# import com.google.gson.JsonObject;
# public class Hello {
# private JsonObject response;
# public static JsonObject main(JsonObject args) {
# String name = "stranger";
# if (args.has("name"))
# name = args.getAsJsonPrimitive("name").getAsString();
# JsonObject response = new JsonObject();
# response.addProperty("greeting", "Hello " + name + "!");
# System.out.println(response);
# return response;
# }
# }
# main: Hello
# runtime: java
# inputs:
# name:
# type: string
# description: name of a person
# outputs:
# payload:
# type: string
# description: a simple greeting message, Hello Bob!
# helloworld action in python
helloPython:
function: actions/hello.py
runtime: python
inputs:
name:
type: string
description: name of a person
outputs:
payload:
type: string
description: a simple greeting message, Hello Henry!
helloPythonWithCode:
code: |
def main(args):
name = args.get("name", "stranger")
greeting = "Hello " + name + "!"
print(greeting)
return {"greeting": greeting}
runtime: python
inputs:
name:
type: string
description: name of a person
outputs:
payload:
type: string
description: a simple greeting message, Hello Henry!
# helloworld action in swift
helloSwift:
function: actions/hello.swift
runtime: swift:4.2
inputs:
name:
type: string
description: name of a person
outputs:
payload:
type: string
description: a simple greeting message, Hello stranger!
helloSwiftWithCode:
code: |
func main(args: [String:Any]) -> [String:Any] {
var msg = ["greeting": "Hello stranger!"]
if let name = args["name"] as? String {
if !name.isEmpty {
msg["greeting"] = "Hello \(name)!"
}
}
print (msg)
return msg
}
runtime: swift:4.2
inputs:
name:
type: string
description: name of a person
outputs:
payload:
type: string
description: a simple greeting message, Hello stranger!
helloRuby:
function: actions/hello.rb
helloRubyWithCode:
code: |
def main(args)
name = args["name"] || "stranger"
greeting = "Hello #{name}!"
puts greeting
{ "greeting" => greeting }
end
runtime: ruby:2.5
helloGo:
function: actions/_hello.go
helloGoWithCode:
code: |
package main
func Main(obj map[string]interface{}) map[string]interface{} {
name, ok := obj["name"].(string)
if !ok {
name = "stranger!"
}
msg := make(map[string]interface{})
msg["greeting"] = "Hello, " + name + "!"
return msg
}
runtime: go:1.11
sequences:
# sequence of helloworld in all four runtimes
hello-world-series:
actions: helloNodejs, helloNodejsWithCode, helloJava, helloPython, helloPythonWithCode, helloSwift, helloSwiftWithCode, helloRuby, helloRubyWithCode, helloGo, helloGoWithCode
triggers:
# trigger to activate helloworld sequence
triggerHelloworld:
rules:
# rule associating trigger with sequence of helloworld actions
ruleMappingHelloworld:
trigger: triggerHelloworld
action: hello-world-series