Expand my Community achievements bar.

SOLVED

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!

Topics

Topics help categorize Community content and increase your ability to discover relevant content.

1 Accepted Solution

Avatar

Correct answer by
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.

View solution in original post

3 Replies

Avatar

Correct answer by
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
            });