« Back to Universal Edition Training Forum

cvp4 Subdialog Start element - no Data tab

Combination View Flat View Tree View
Threads [ Previous | Next ]
Is there a reason you removed the "Data" tab from the Subdialog Start element in CVP 4 Studio?

Many of my students define all their Session variables in the Data tab of the Subdialog Start element in CVP 3.1 - this is so they have one common place to refer back to for the spelling and list of their variables. They've used the Subdialog Start element for this function because they know they will never delete that element, it'll always be there.

But now, when they import their apps into CVP 4, they lose that information.

Was this an oversight? Will it be fixed? It's really vexing some of my previous (very experienced, prolific ) students. And it seems to go against the idea of being backward compatible.

Can you plan to reinstate the Data tab on the Subdialog Start in the next point release?

Thanks, Janine

Hi Janine,

Thank you for reporting this issue, we agree that it is a bug. We've opened a bug report in our internal issue tracking system, with an ID of CSCsk18044. Should you wish to check on the status of the bug in the future, or share its tracking information with your students, please use that ID.

We appreciate the detailed description of this issue; it will be considered for resolution in future releases.

Regards,
Vance

Design intent
Answer
8/30/07 3:30 AM as a reply to Janine Graves.
Janine,

This issue was discussed among product management. It turns out this is an intended design change from CVP 3.1 to CVP 4.0. In CVP 3.1 the subdialog start element was a voice element. In CVP 4.0, it became a special element intentionally.

So, we recommend that customers do not use the Subdialog Start element to store data in production applications. It might be useful for a class as a matter of convenience but shouldn't be implemented in production.

So, this will be a new known issue in 3.1 and a warning for those upgrading to 4.0 or the upcoming 4.1 release that it isn't supported. TAC will know this if they call in.

I suggest you recommend to your future students that they not use the data tab in subdialog element in CVP 3.1.

Regards,
Cory

RE: Design intent
Answer
8/30/07 8:39 PM as a reply to Janine Graves.
Can't you just add a Data tab to the new Subdialog Start without making it a voice element? Action and Decision elements come with a Data tab.

The problem is, that programmers REALLY want to have a place that they declare all of their variables. I know you've talked in the past about how the person in Studio doesn't know all the variable names. BUT, often times they DO know the variables. And they want to have them declared in ONE spot - in EVERY application they write.

Almost every other tool I've used to write IVR applications, provides this, and it's a serious shortcoming of CVP Studio that it doesn't have this.

Ideally, there's a window where you declare all your variables, and perhaps include a comment with it, and then ideally you can just use a pull-down menu every time you want to access this variable in the app.

I know that CVP 4 Studio is coming closer to this, with having the Element data listed in a pull down menu. BUT, it seems like it would not be that hard to create a window (or a Data Tab) where someone can list whatever variables they know about, and then later on, this list is accessible in the Substitution tag builder.

Since the very first Audium class I ever taught, and in every succeeding class, this has been the NUMBER ONE most requested addition to Studio. Second most common would be a global Search/Replace.

It really seems like a no-brainer to me. And it would make the tool much more acceptable to experienced IVR programmers.

Just my 2 cents. But here's a direct quote from an HP programmer who's been doing this Audium/CVP programming for about 3 years now:
"I know when I migrated my big World Bank app to CVP 4.0 it was a total nuisance to have to put my initialization on the first audio element. It just looked stupid! "

Janine

Feature update
Answer
8/30/07 9:10 PM as a reply to Janine Graves.
Janine,

One alternative if a user wants to use an element to store static data is that they could use a decision element that is always true. That may make it more appealing than an audio element.

Subdialog starts are special elements, so that's a key change.

One question for you, and this may seem elementary, but for application development best practices, what static data would one put in a application as a hard code?

I'm not talking for classes, because that's understandable that you'd put in temp or dummy data for practice purposes. But for production applications, I would hope the developer would externalize most data.

So, would be interested in your perspective on this before we introduce a panel that would encourage people to load in static data.

Cory

RE: Feature update
Answer
8/31/07 12:31 AM as a reply to Janine Graves.
Here is what one experienced developer (who has done some very big projects for Audium and CVP customers over the last 3 years) says. His comments really do reflect what I hear over and over from my experienced IVR developers.

Developers like to define the names of all the variables they'll be using (even though they change the value later on, it's nice to know the names you'll be using from within Studio). And they'd like a more obvious "assignment" element (not hidden in a Data tab).

From the developer (code name Metralla on the Audium Forum):
I like to create a bunch of session variables at the start and set them
to the string "none". Then I have one custom Java element that sets a
session variable to have a string value (through substitution).

I use this right after menus, data collection elements, etc because it's self documenting visually.

One of the problems with the way you can set session data on the back side of elements in the Data tab in Audium is it's really hidden away
and not obvious in the GUI.

I don't like looking way back in the flow to an element to DIG out the
data assignments. If a number of paths lead to a common point you don't know which element to look back to. So I store it in a session variable using my custom assignment element.

Also, I only like to have one subdialog end element - only one way out. Only one Exit page. So I set up variables as I go through the flow and when I go out the single exit point, I set caller_input and the FromExtVXML[] array.

Decision elements are tricky - if there are many paths out of the
decision element and I want to set a session variable reflecting the
choice, my custom element that sets a session variable is really
useful and self-documenting.

I only like to have one screenful on each page - gotta be able to see it
all without scrolling. So I have lots of pages and lots of Page
Connectors.

I understand that Java classes can set session data, and I do that if
it's complex (like an array of objects), but if it's simple, I like to
pass in the NAME of a session variable and make the class set it. This
is all much more self documenting than the other techniques.

I create re-useable elements with settings etc - even when I only use it
once. I do NOT like Java code just coded into Eclipse right there.
That's just my style.

I like to create a test class that mirrors the way the Action element
works through a single method that does the heavy lifting. Then I test
the class outside of Audium and when it's working, copy in the method
that does the bulk of the work.