BPM form from a button

I’m back to working on the barcode scanning from before (But I’m smarter than I was back then, so hoping for success this time). You can see some of the history in this thread.

I still don’t have the skill, and really don’t like the drawbacks anyways for trying to make a listening system for barcodes. I have a prototype dashboard working where I can click in a field, scan the barcode, then the C# code that @fredmeissner posted to split the string into parts and populate the filters and refresh. That works pretty good except for the fact that there is this text box that I have on the screen that people can type stuff into and fires my event on field leave, so it’s too easy to tab through the dashboard or accidentally type something in that field, or confuse the end user to know that they have to click in that field… etc.

So workaround that I would like to implement is a button that pops open a BPM form so it’s more clear to the end user that if he needs to scan something, he clicks the button, then a screen opens up and I can control the focus so that the text box is selected, they can scan, and the scanned string can be stored in BPM context and distributed after form close. Here are a couple of threads that talk about calling BPM forms. Neither with any definite solutions.

So I would like to know if anyone has any good tricks for hanging a BPM form off of some event that works well with an on demand button. My current theory is to try to call the form on a dummy BAQ, and I guess call it with a DynamicQueryAdapter, but I haven’t tried it yet, and I figured if anyone else had a creative solution I’d be all ears.

As I’m typing this, I’m wondering if I can call a custom action from my base dashboard, since I could make this an updateable dashboard anyways?

Yeah you can easily call a Custom Action which in turn calls a BPMForm if this is a dashboard that’s the easiest way to go

1 Like

Code to Invoke it on Click. Note that the action needs to be added to the dashboard for the below to work.

MainController.AppControlPanel.AppController.HandleCustomAction("PrintPalletTags");
1 Like

you read my mind!

1 Like

So I’m getting the custom action set up, is the link for the custom action the name of the base processing BPM for RunCustomAction? I got it working, but it seems like one of those “magic string” type linkages and I get warned about all of the time. I just want to make sure I understand the mechanism that I am using.

no, there is a parameter in that method which contains the actionID. You just need toput a condition node that checksif ActionID = “” Then CallBPMForm

So like this. If I don’t put that in there, it would run every custom action that has a base process, right? Thanks for the clarification, that’s why I asked.

1 Like

Correct

One more question (for now anyways), do custom actions always have to be called through code then? I was sort of expecting these to show up in the actions menu of a deployed dashboard, but it doesn’t. Is that expected behavior?

They will show up in the actions menu. If you add the action in your Dashboard.

1 Like

Thank you. The help files are a bit discombobulated with bits and pieces spread around, but nothing that makes a ton of sense.

Interesting conundrum. If I don’t have any information in my grid, the BPM form won’t fire. I don’t want to populate the grid until the BPM form fires so that I can get the filters in place. ugghhhhh…

Any slick ideas on how to do this? Should I just look at customizing the parameters form? Can I do that? I’ve seen where I can get in and customize it, but I don’t know how to apply it. I would imagine that I have to set the customization in the Processes section of the Menu Maintenance?

So you want to run an action on an EmptyBAQ and what does the action do? Ask you to type something in? (A Barcode?) Then you’ll use that barcode to filter down the Dashboard?

If so why not just use a parameter, it automatically prompts you to enter the parameter and uses it to filter.

Because I need to parse the barcode, so I need a customization. Hence the question on customizing the parameter screen. If I can apply it, then that’s the way I will go.

Although it is technically possible to customize the parameter screen I don’t think that’s going to be too fisible. Why not just take the parameter as a whole string and “parse” it in your BAQ?
Meaning wherever you are using your param in your BAQ use an expression to get the pieces you need.

so basically call the same parameter in an expression for each criteria in the BAQ and then have the expression grab the requisite piece? That could work. Good idea.

Back to the customize the parameter screen, what makes that difficult? Is it applying it? The customization screen seems to work fine, it was just not knowing how to make it work without customization mode.

Right there’s no way to apply it as far as I can tell. Maybe using Process Calling… but seems cumbersome how do you differentiate between THIS BAQ and another one?

1 Like

Right

ok. I’ll go with your parameter idea. That seems more feasible anyways.