I am doing a POC for implementing an E2E workflow test application. And I think Elixir is perfect for such use case.
There is a feature I want to implement is: Given a set of existing steps(functions), the user should generate new workflow by themselves.
For example:
defmodule St.Workflow do
def get_random_str(params) do
IO.puts("generate random_str")
# assign random string into _params
params
end
def create_resource_group(params) do
IO.puts("create resource group")
params
end
def run_helm_exec_01(params) do
IO.puts("do helm 01")
params
end
def run_helm_exec_02(params) do
IO.puts("do helm 02")
params
end
def run_helm_exec_03(params) do
IO.puts("do helm 03")
params
end
# St.Workflow.workflow_01(%{})
def workflow_01(params) do
get_random_str(params)
|> create_resource_group
|> run_helm_exec_01
|> run_helm_exec_02
|> run_helm_exec_03
end
def install_helm(params) do
run_helm_exec_01(params)
|> run_helm_exec_02
|> run_helm_exec_03
end
# St.Workflow.workflow_02(%{})
def workflow_02(params) do
get_random_str(params)
|> create_resource_group
|> install_helm
end
def eval_workflow(workflow_definition) do
# A workflow_definition could be combination of existing functions in this module.
# workflow_definition = "run_helm_exec_01(params)|> run_helm_exec_03"
# how to run this?
end
end






















