Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn more

View all

Sign in to view all badges

SOLVED

Trigger another action from within an action

ursboller
Community Advisor
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!

1 Accepted Solution
duypnguyen
Correct answer by
Employee
Employee

Hi @ursboller , 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
duypnguyen
Correct answer by
Employee
Employee

Hi @ursboller , 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

ursboller
Community Advisor
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...
dr_venture
Employee
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
            });