Expandir minha barra de realizações na Comunidade.

Mark Solution

Esta conversa foi bloqueada devido à inatividade. Crie uma nova publicação.

SOLUCIONADO

Trigger another action from within an action

Avatar

Community Advisor

Given an "action A" is running and I want to call (based on conditions) different other actions (from within the same app), what is the best way to achieve this?

1) use node-fetch and the action name?

2) release an event and the other action listens to?

 

remark: I can't use sequencing since I don't know what the second acrion is. the second action depends on calculation in the first action.

 

if 2), how can I trigger such an event and how can the "listener"? update the manifest.yml?

thanks in advance for any help!

Tópicos

Os tópicos ajudam a categorizar o conteúdo da comunidade e aumentam sua capacidade de descobrir conteúdo relevante.

1 Solução aceita

Avatar

Resposta correta de
Employee

Hi @Urs_Boller , it is recommended to leverage the openwhisk npm to programmatically call actions, triggers, etc.

In terms of implementation, there could be a few ways to achieve what you need:

- If you only want to invoke one action when the condition is met, you can invoke that particular action only.

- If you want to invoke several actions when the condition is met, you can map a trigger to those actions by rules (trigger --> rule A --> action A, trigger --> rule B --> action B). Then you only invoke the trigger once, and all the actions are activated.

Ver solução na publicação original

3 Respostas

Avatar

Resposta correta de
Employee

Hi @Urs_Boller , it is recommended to leverage the openwhisk npm to programmatically call actions, triggers, etc.

In terms of implementation, there could be a few ways to achieve what you need:

- If you only want to invoke one action when the condition is met, you can invoke that particular action only.

- If you want to invoke several actions when the condition is met, you can map a trigger to those actions by rules (trigger --> rule A --> action A, trigger --> rule B --> action B). Then you only invoke the trigger once, and all the actions are activated.

Avatar

Community Advisor
thanks a lot! will think about this solution with npm and give it a try. maybe we keep things simple and just write single actions doing one thing at a time...

Avatar

Employee

Rule and Trigger is the cleanest way but you can also do this if needed

const openwhisk = require('openwhisk')

const options = {
          apihost: 'HOST:PORT', 
          api_key: 'API_KEY_HERE',
          api: process.env['__OW_API_HOST'] + "/api/v1/"
        }
let wsk = openwhisk(options)

let invokeParams = {"stuff":"my stuff","topass":"in","asparams":"more data"}

 wsk.actions.invoke({
              actionName:"/my/namespace/actionname",
              blocking: false,
              result: false,
              params:invokeParams
            });