cancel
Showing results for 
Search instead for 
Did you mean: 

Complex nested structure with 2 input plugs

Former Member
0 Kudos

hi guys,

have a similar problem like described in the thread " Web Service - Error in Connection and Data fields missing ".

The webservice I am trying to use is.

http://ig2006/ArcGIS/services/UHV_neu/MapServer?wsdl

I can use the function GetCacheName but I have some problems using the function ExportMapImage.

I am not able to test this function within the VC because it has a complex nested structure type. Furthermore it requieres 2 data inputs. I already tested it in the wsnavigator and it works fine there but when I use it in a VC model I get an error similar to the error in the aboved mentioned thread.

the tips in the thread didnt really help me.

I am not sure if the problem is the nested structure or the fact that the webservice requieres 2 inputs?

So has anybody any plan what might be wrong and how I could fix the problem?

regards milad

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi Milad

Will it be possible for you to add the fully qualified domain name of the server where the WSDL resides (ig2006) and some test input data?

Regards,

shai

Former Member
0 Kudos

Hi Shai.

Too bad I forgot that the service is just available throu our company´s intranet.

Do you have an idea what I could do though?

I can tell you that the service has 2 embedded inputs. The first one ist ImageDescription with 5 inputfields and MapDescription with 18 inputfields.

regards

Milad

Former Member
0 Kudos

Hi Milad,

Can you attach a screens-shot of your model?

Shai

Former Member
0 Kudos

I know this might sound stupid but how do I attach files in here?

milad

Former Member
0 Kudos

It might sound even more stupid, but I never really managed to do this myself either

To attach screen shots i use this public website: http://imageshack.us/

You can find similar sites to upload files and pictures all over the web.

Good luck,

Sgai

Former Member
0 Kudos

hi shai,

I finally uploaded a picture of the VC model. Hope it helps. Here is the [Link|http://www.drop.io/VCModel/interactive]

regards

milad

Former Member
0 Kudos

Try changing the event on the lines to "*submit" (note the star in the beginning).

This means that any submit action in the model will trigger data flow on the line, so both lines will send the data simultaneously.

Regards,

Shai

Former Member
0 Kudos

I already tried that but it didnt work.

any further suggestions?

milad

Former Member
0 Kudos

Hi Milad

There is a complex data structure on your service’s input port “MapDescription”.

In order to pass data correctly to a complex structure you have to use the Data Bridge connector.

Since complex data structures are multidimensional and computer screens are merely two dimensional, it takes a somewhat complex modeling to handle them properly, but it’s easier when you get the hang of things.

So here goes:

First, drag a line out of the port, and select “Data Bridge” on the context menu that appears when you release the mouse button.

You can right click the Data Bridge to see the data structure it holds now (which a copy of the structure on the port).

[See image 1|http://img296.imageshack.us/img296/7375/clusteredinput1lp1.png]

Drag the first view you want to use for editing the data onto the board. Do no connect it to anything yet.

In my example the service input receives a list containing lists, so I will use tables only.

Connect the input port of the View (form or table) to the data bridge.

Note that the connecting line is a bind link (orange color with right angles) this means that the View is seeing the same data as the Data Bridge, not a copy of it.

Right click the View and select “Define Data” from the context menu.

In the Define Data dialog you will need to select which node of the data structure the View will be displaying. The first View can only view the top node of the structure.

[See image 2|http://img179.imageshack.us/img179/4435/clusteredinput2tk2.png]

If you want to handle other nodes of the structure you need to drag more Views onto the board and connect them with a bind link to the Out port of your first View.

Clicking Define Data on these Views will enable you to select which data node they will be viewing.

[See image 3|http://img182.imageshack.us/img182/5986/clusteredinput3wa7.png]

What we have now is a Data Bridge holding structured data with several views bound to it, each displaying a different node of the cluster.

Editing the data on these Views will actually modify the data on the Data Bridge (this is the meaning of bind links).

After the user does all the data entry, we need to send the data to the service. To do that just add a button on any of the Views (or add a form just for this), and set some Custom Action to it. It is not recommended to used Submit in this scenario.

For the document, let’s call the action “sendmapdata”.

Select the line connecting the Data Bridge to the service, go to the Configure Panel, and in the Event name, type “*sendmapdata”. You need to add the start since the action’s origin is not from the element connect to the line.

That’s about it.

Please let me know if you have further question.

Regards,

Shai

Former Member
0 Kudos

Hi Shai,

Thanks for the very helpful answer. It helped me a bit. Didnt know about the data brigde, but it still doesnt work.

My model seems to have 4 Cluster [see pic1|http://img152.imageshack.us/img152/4894/vc2cu8.jpg] but the CustomsGraphics_GrapchicElement is empty [see pic2|http://img85.imageshack.us/img85/2319/vc3oy8.jpg]. So I didnt create a form for that on.

Therefor I have 3 forms. But when I deploy the model I am just able to fill in the stuff for the brigde1. The other layer are greyed out [see pic3|http://img80.imageshack.us/img80/8664/vc4lj0.jpg]

Do you have an idea what I might have done wrong?

thanks

Milad

ok now I am really confused. I just tried another method of the service which also requiers 2 input. One of them again the MapDescription. I just dragged 2 input forms from the output ports renamed the eventname to *submit and it just worked. I have no idea why it works so easily here but not for the exportmap mathod.

Edited by: Milad Saber on Mar 20, 2008 2:47 PM

Former Member
0 Kudos

Hi Milad

it seems that the node "layerDescriptions_layerDescriptions" is an array.

You can notice this by the icon to the left of it on the tree: if the icon has a list on it (1,2,3) it means this is an array. For a single record the icon is just "1" (as it is on the node bridge1).

Each row in the layerDescriptions_layerDescriptions has a child node, also of type array which is SelectionFeatures_Int.

Since the array layerDescriptions_layerDescriptions has no records there can't be any child records of type SelectionFeatures_Int either.

What you need to do is as following:

select a table to display the layerDescriptions_layerDescriptions node.

to this table add a toolbar (through the table configure panel).

Add a button to the table with the "add row" action (you can also add delete row, etc).

Do the same for SelectionFeatures_Int.

Deploy and run the model.

Add a row to layerDescriptions_layerDescriptions.

Fill the row with data.

By now, SelectionFeatures_Int will be active. Do the same there.

Let me know if there are further problem.

Regards,

Shai

deploy and run the model.

Former Member
0 Kudos

hi shai.

I did what u said but it still doesnt work. I dont even get an error message now.

Currently the model looks like that. [Pic|http://img291.imageshack.us/img291/8325/vc5up8.jpg].

You have any idea?

thanks

milad

Former Member
0 Kudos

Hi

From you model, I can see that the data service return a complex data structure. The start shape of the port means that it holds a complex data structure (a rectangle represents an array and a diamond shape is for a singe record).

Can you please add a screen shot of the Define Data dialog of the output form you are using?

I want to make sure that your form is pointed to the correct data nodes of the complex structure on the output of the service.

Regards,

Shai

Former Member
0 Kudos

hi shai.

here is the define data dialog from the output port. [pic|http://img152.imageshack.us/img152/1468/vc6sa0.jpg]

regards

milad

Former Member
0 Kudos

hi.

I am able to narrow the problem down a little bit. I am pretty sure that it doesnt work because of the complex output structure. I have tried an other method with similar inputs (also 2 inputs, one of them mapdescription) and a single record as an output. And it just worked fine.

So how can I model the output the right way?

regards

milad

Former Member
0 Kudos

Hi Milad,

I looked at the screen shot of the model and Define Data for the ExportMapImageResponse form.

Try dragging a new table view from the out port of the ExportMapImageResponse form. The Define Data dialog should open; choose the second node, VisibleLayerIDS_Int in the tree to the left by clicking on it.

Eyal

Former Member
0 Kudos

hi eyal,

thanks for your suggestion but it didnt work.

regards

milad