Dynamic index arrays BPEL

Hi,
What I am doing wrong below. I am trying to dynamic access index of array in BPEL.
<assign name="InitializeLoopCounter">
<copy>
*<from expression="1"/>*
*<to variable="loopCounter"/>* </copy>
</assign>
<while name="While1"
condition="bpws:getVariableData('loopCounter') &lt; ora:countNodes('RetrieveEventSummary_GetEventSummary_OutputVariable','part','/ns1:GetEventSummaryResponse/AgencyEventSummary')">
<sequence name="Sequence2">
<assign name="AssignAgencyEventId">
<copy>
*<from expression="bpws:getVariableData('RetrieveEventSummary_GetEventSummary_OutputVariable','part','/ns1:GetEventSummaryResponse/AgencyEventSummary[position()=bpws:getVariableData('loopCounter')]/AgencyEventId')"/>* <to variable="RetrieveEventDetail_GetEventDetail_InputVariable"
part="part"
query="/ns1:GetEventDetailRequest/AgencyEventId"/>
</copy>
</assign>
<invoke name="RetrieveEventDetail" partnerLink="CadDataService"
portType="ns1:Cad" operation="GetEventDetail"
inputVariable="RetrieveEventDetail_GetEventDetail_InputVariable"
outputVariable="RetrieveEventDetail_GetEventDetail_OutputVariable"
bpelx:invokeAsDetail="no"/>
</sequence>
</while>
Thanks
Edited by: user5108636 on 13/07/2011 22:49
Edited by: user5108636 on 13/07/2011 22:49

answered in:
Bind variables in SQL query of DBAdapter

Similar Messages

  • Index array is not getting new values from DAQ

    I am measuring force values with my DAQ card and these values are always changing.  However, in my programming something is not working right with the way I have things set up.  After my DAQ I have a "Convert to Dynamic Data" and after that I have an "Index Array".  When the program is executing and I turn on the highlight option I do not get changing force values after the "Convert to Dynamic Data" and therefore no changing force values enter my "Index Array".  Whaterever the first value is that gets passed to the "Convert to Dynamic Data" is the only value that I get for the remainder of the program.  I tried plugging in an indicator between the DAQ and the "Convert to Dynamic Data" and it did show varying values.  Please help with my program.  I have tried messing with the properties of the "Convert to Dynamic Data" and nothing has worked.  I am stuck and cannot see how to fix this problem.  I have attached my program as it is currently put together.
    Thank You In Advance,
    Gabe.
    Attachments:
    Actuator_Gabe_Oct27_Flat_Sequence_XY_+Measurement_File.vi ‏131 KB

    Please know that the best option is to review the concepts discussed to further understand programming in LabVIEW.  Perhaps you could take a look through ni.com/gettingstarted and ni.com/lv101 to have a look at some of the online help materials.  I have included a VI snippet of the while loop containing the changes.  Further, the code you attached contains a lot of customer controls and VIs, which are not common to all LabVIEW users.  It is a best practice to only attach the code of value to the question/post, and to have the most simplified version of the problem.
    Best,
    Adam
    Academic Product Manager
    National Intruments

  • How to crate a dynamic size array, collection

    Hi,
    Can someone point me to some tutorial on how to create a dynamic size array. Actually I have multiple cursors and on different tables and want to loop through each cursor and get some values from each cursor and put it in an array. But don't know how to create or initialize an array as I don't know the size. Is there any other way.
    Here is what I am doing I have 6 cursors on different tables, I loop through each cursor and get some specific data that I need to place at one place after looping through all the cursors which then finally needs to be inserted in one table. But before the insert I need to validate each data so want to have all the data in some array or some other place for temporary storage from it's easier to do the validate and insert rather than while looping through the cursors as there may be duplicates which I am trying to remove.
    As this procedure will be called multiple times so wanted to save the cursor data in temporary array before inserting in the final table. Looking for some faster and efficient way.
    Any help is appreciated.
    Thanks

    guest0012 wrote:
    All the 6 cursors are independent and no relation i.e. can have a join and have one sql as no relationship in tables.If there is no relation, then what are your code doing combining unrelated rows into the same GTT/array?
    Now using GTT when I do an insert how do I make sure the same data doesnot already exists. i.e. GTT will only have one column. Then create a unique index or primary key for the GTT and use that to enforce uniqueness.
    So everytime I iterate over a cursor I have to insert into GTT and then finally again have to iterate over GTT and then do an insert in the final table which maybe a performance issue Which is why using SQL will be faster and more scalable - and if PL/SQL code/logic can be used to glue these "no relationship" tables together, why can't that not be done in SQL?
    that's why i was wondering if can use any kind of array or collection as it will be a collection of numbersAnd that will reside in expensive PGA memory. Which means a limit on the size of the collection/array you can safely create without impacting server performance, or even cause a server crash by exhausting all virtual memory and causing swap space to trash.
    and finally will just iterate ovr array and use FOR ALL for insert but don't know what will be the size of the array as I only know after looping the cursors the total number of records to be stored. So wondering if how to do it through collection/array is there a way to intialize the array and keep populating it with the data with defining the size before hand.You cannot append the bulk collect of one cursor into the collection used for bulk collecting another cursor.
    Collections are automatically sized to the number of rows fetched. If you want to manually size collection, the Extend() method needs to be used, where the method's argument specifies the number of cells/locations to add to the collection.
    From what you describe about the issue you have - collections are not the correct choice. If you are going to put the different tables's data into the same collection, then you can also combine those tables's data using a single SQL projection (via a UNION for example).
    And doing the data crunching side in SQL is always superior in scalability and performance, than doing it in PL/SQL.

  • How to display last element in a dynamic 1d array

    hi..
    i want to display the value of last element in a 1d dynamic array.../ i mean ..if i stop the vi run, i need to display the last element in the array..how can i do this?
    and is there any way to use a button to start the vi...instead of using the Run button on the vi front panel??
    Solved!
    Go to Solution.

    Index array!.  Use array size to determine the size of your array, subtract 1, feed that in the index terminal of Index Array.
    You have to start the VI running somehow.  It could be set to run when opened.  Assuming what you want is a means to type values into a front panel, hit a GO button that you created on the front panel, then have the real part of the VI execute.  You could use an event structure.  Or put a while loop at the beginning with a small wait statement in side that basically just polls the GO button.  When that button is pressed, the true boolean stops the while loop and allows the program to proceed to the main body of your program.

  • Dynamic string array

    I need to make a dynamic string array.
    Deeper explanation:
    I am trying to use a FOR loop to send a series of commands to an 8-channel device.  Each channel requires 7 (actually, 1/2 need only 5, the other 1/2 need 7) strings to set them up and the entire sequence needs to be performed 8 times.  I started a test .vi by simply using a constant array of type sting.  I can sequentially pick each string and program my device perfectly.  Now I'd like to do things like add the channel # somewhere in the mix, use variable values based on other controls in my .vi to set the parameters of the channel.
    EXAMPLE:
    The user sets certain values that determine delays and width for an 8-channel DDG (Digital Delay Generator, to some, a pulse generator).  These values then need to be loaded into the DDG.  The Strings will look something like this:
    ULSE1TATE 1
    ULSE1:WIDTH 0.009 000           *NOTEpaces behind decimal are for better viewability only
    ULSE1ELAY 0.000 000
    ULSE1YNC T0
    ULSE1:CMODE DUTY
    ULSE1COUNTER 1
    ULSE1:BCOUNTER 1
    ULSE2TATE 1
    ULSE2:WIDTH 0.000 300
    ULSE2ELAY 0.008 700
    ULSE2YNC T0
    ULSE2:CMODE NORMAL
    So widith and delay params change, the pulse# changes, and whether it's on certain channels decides if the mode is duty or normal and duty comes with the subsequent params pcount and bcount.
    help?
    PS - I am going to move the state, sync, and cmode to a common, initialize loop run only at program start, but I still need to use width, delay, and (variably) pcount and bcount.
    PPS - I am trying to edit post to diable smilies.  Commands should read:"colon, P (or D)" not ,
    PPPS - Success, at least for me.  I disabled smilies in my settings, I don't know if that means my posts won't show smilies or if just what I am looking at won't show smilies, any responders let me know how it's showing for you.
    Message Edited by Radiance_Jon on 07-16-2007 01:48 PM
    Message Edited by Radiance_Jon on 07-16-2007 01:52 PM

    smercurio_fc wrote:
    Well, in my experience I have found that dealing with errors early on is the best course of action as it leads to less headaches down the road...
    Auto-indexing is one of the more powerful features of LabVIEW. If you're familiar with text-based languages it's equivalent to the "foreach" statement. Basically it allows you to wire an array into a for-loop and the size of the array tells LabVIEW how many times the loop needs to execute. Inside the loop LabVIEW peels of each element of the array in order for each iteration of the loop. Looks like this:
    My comment regarding not needing the sequence frame was related to using the error cluster since that wire would allow you enforce data dependency like so:
    Note that the VISA resource wire does the same thing.
    "I got a little aggravated at how NI seemed to handle the loops in those two frames concurrently".  That's because LabVIEW is a data-flow language, and not a sequenced language like C or VB. In fact, that's one of the things that makes LabVIEW so powerful.
    Message Edited by smercurio_fc on 07-16-2007 04:48 PM
    MAN!  I KNEW that!!!!  GGRRRRR!!!  That makes sense.  Actually that's WHY I connected the error lines in the first place was to aide in flow control.  OH!!!  Still getting used to LabVIEW. 
    But I still have a question related to flow control.  Check out the pic below.  LabVIEW runs everything in a seemingly random order... well at least where it STARTS each chain of data.  It obviously starts with the static constants or the earliest data in each chain, but I can't figure out how in the world it's deciding WHICH chain to start first.  It kind of seems to go with the lower right and work it's way to top-left, but it doesn't exactly do that either.  I dunno if it's worth you answering this concern or not, but if you got one for me I'd be much obliged. 
    I should take a LabVIEW class!  Yeah right, as if they'd let me... R&D means I won't need it tomorrow ;( which stinks cause I'm liking LabVIEW the more I learn it.  (I was not fond of it in the beginning, but that was my stubborness). 
    thanks again so much for all your help!!!!
    Also, I am using all those strings to make my display appear as I want it to... I wonder if there is another way?  I am aware of system labels, but I like the look of the recessed, grayed control boxes better.
    Message Edited by Radiance_Jon on 07-16-2007 05:06 PM

  • Creating dynamic sized arrays and filling them automatically on speedy 33

    hi all,
    I am trying to create dynamic sized arrays on Speedy-33. Specifically, depending on the user input, I want to be able to create
    arrays with 128 or 256 elements and fill them automatically. However,
    array constant element is fixed for Speedy 33; thus I have to manually set the
    size of the array with the mouse and enter the values in to the array by
    myself. I want to make this tedious process automatic. Would this be possible? thanks so much for comments!
    ~casiopea

    Casiopea,
    There is a really great article on using arrays with LabVIEW DSC which can be found here:
    How Can I Be Successful With Arrays In the LabVIEW DSP Module?
    One of the biggest things that should be noted about DSP is that there is no dynamic memory allocation.  Your array size must be fixed, and thus, your array needs to be initialized by using a constant. 
    An easy way to initialize an array constant that has many elements that are all the same is to simply create a numeric constant that has the value that you want.  Then, create a new blank array constant and drag the numeric into it.  In the index input for the array constant, type in the index of the last element that you want to be initialized.  Then type in the value in the element that is displayed and all of the elements before it will be initialized to the default value of the numeric constant that you dropped into the array constant.  I hope this helps.  I would really recommend reading through that article, as it has a lot of great information about using arrays with DSC.
    Brian Coalson
    Software Engineer
    National Instruments

  • How do I correct a build error while saving "Calculate Color Index Array.vi"?

    I have an application that takes some data and then periodically generates a nifty 3d graph.  When trying to compile this application to run on a stand-alone machine, i get an error message that crashes the build.  This is the information that is generated for the error:
    An error occurred while saving the following file:
    C:\National Instruments\LabVIEW 2009\vi.lib\Math Plots\3D Math Plots\3D Surface\3D Surface Datatype\Protected\Create Plot Data\Calculate Color Index Array.vi
    Invoke Node in AB_Source_VI.lvclass:Close_Reference.vi->AB_Build.lvclass:Copy_Files.vi->AB_Application.lvclass:Copy_Files.vi->AB_EXE.lvclass:Copy_Files.vi->AB_Build.lvclass:Build.vi->AB_Application.lvclass:Build.vi->AB_EXE.lvclass:Build.vi->AB_Build.lvclass:Build_from_Wizard.vi->AB_UI_Frmwk_Build.lvclass:Build.vi->AB_UI_FRAMEWORK.vi->AB_Item_OnDoProperties.vi->AB_Item_OnDoProperties.vi.ProxyCaller
    <APPEND>
    Method Name: <b>Save:Target Instrument</b>
    Details: 
    Error 6 occurred at AB_Source_VI.lvclass:Close_Reference.vi -> AB_Build.lvclass:Copy_Files.vi -> AB_Application.lvclass:Copy_Files.vi -> AB_EXE.lvclass:Copy_Files.vi -> AB_Build.lvclass:Build.vi -> AB_Application.lvclass:Build.vi -> AB_EXE.lvclass:Build.vi -> AB_Build.lvclass:Build_from_Wizard.vi -> AB_UI_Frmwk_Build.lvclass:Build.vi -> AB_UI_FRAMEWORK.vi -> AB_Item_OnDoProperties.vi -> AB_Item_OnDoProperties.vi.ProxyCaller
    Can anyone help me understand why the 3D Surface Datatype.lvclass keeps booching on my compile?
    Thanks!

    Check this

  • How can I create sub-arrays based on the positions of indicies in a separate index array?

    Please forgive me if this question is basic or obvious. I am fairly new to LabVIEW and I'm trying to learn as I go along.
    I have a 1D array of index values (the number of possible index values is not fixed, but can vary between uses of the application; it could be just {0, 1} on one day and {1, 5, 11, 678} on another) and a 1D array of measurement values (doubles). I'd like to parse the measurement values into sub-arrays for each index, so that if my index array was:
    [0 1 1 1 1 5 5 0 5 5 1 0 1 1 5]
    and my measurement array was:
    [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.10 0.11 0.12 0.13 0.14 0.15]
    I would get back 3 sub-arrays:
    [0.1 0.8 0.12]
    [0.2 0.3 0.4 0.5 0.11 0.13 0.14]
    [0.6 0.7 0.9 0.10 0.15]
    I know there must be a simple way to do this, I guess I'm just stuck too much in matlab-array thinking to figure it out... please help!
    -- jph
    Solved!
    Go to Solution.

    jamespherman wrote:
    Thus, I figured it might be possible to generalize this idea and send multiple sets of XY values to an XY graph.
    OK, all we need is a trivial modification of what we already have. XY graph data is easiest handled using complex data. Here's a quick rewrite. See if this works for you.
    LabVIEW Champion . Do more with less code and in less time .
    Attachments:
    SplitInGroupsGraph.vi ‏14 KB

  • Create sub-arrays based on the positions of indicies in a separate index array?

     I have a 1D array of index values and a 1D array of measured values. As an example:
    Index array: 1, 2, 4, 7, 126, 127,129, 214, 215
    Measurement array: 5, 6, 8, 4, 4, 9, 8, 7, 5 
    I want to get sub-arrays of measurement array (three for this example):
    [5,6,8,4], [4,9,8],[7,5]
    A sub-array is generated when there is a big gap (this value is known) between consecutive elements of Index array (126-7, 214-129, this value is known, say 80).
    How to do this in labview.
    Thanks
    Solved!
    Go to Solution.

    Alice12 wrote:
    I tried to generate your program but there is some problem (I dont know the false case).
    And I want to find the maxima of each sub-array and then find their average (this should be the final output).
    You have it mostly right.  I explained in my post what's in the false case: an increment (+1) for the top shift register.  The other wires pass straight through.  The image I posted is a "snippet" - it's actual code.  You can drag it into a block diagram (with some web browsers, you will need to drag to your desktop first, and from there to the block diagram).  There is a bug in the snippet creation where it does not always show cluster contents properly, and that's what happened here.  The array constant wired to the left side of the lower shift register contains a cluster containing an array of numeric values.  You will see this if you load the snippet.  I hope that you were able to understand the logic of this code as you were constructing it, but if not, please ask for an explanation.
    From there it is trivial to find the max and averages.  Connect the output of my code to a for loop.  Inside the for loop, unbundle the array, and compute the maximum and average.  Functions to do these operations on any numeric array already exist (look for Array Max & Min, and Mean).

  • How to index array in a for loop

    i'm connecting from variant-to-data function to an index array function inside a for_loop (refer to attachment).  the data-type wire got converted from Table(2-D array) to Table(1-D array).  How do I keep it from converting to 1-D array?
    Attachments:
    arrayI.doc ‏146 KB

    Of course it seems you want to run the loop once for each row in the 2D array, so many times autoindexing is the better solution!
    You are using an "index array" inside the loop. If you are planning to wire the index to the iteration [i] terminal (who knows? ), you might as well use autoindexing. This way you don't need to wire N (the loop will know how many rows there are) and you don't need to use index array inside the loop.
    The image shows two functionally equivalent code fragments. Autoindexing (bottom) is much simpler than explicit indexing (top). See if autoindexing can work in your case.
    Since you are a LabVIEW beginner, you should try to stay way from stacked sequences and local variables. They are rarely needed and can ofter cause problems such as race conditions and unreadable code.
    Message Edited by altenbach on 03-31-2008 04:17 PM
    LabVIEW Champion . Do more with less code and in less time .
    Attachments:
    autoindexing.png ‏8 KB

  • Service Registry's Dynamic Lookup of BPEL Partner Link not working

    Hi,
    Software : SOA 10.1.3.1
    OS : Windows XP, 2000
    I have deployed webservice application (GetMaxOfTwo) which will give me max of 2 values. Registered the WS in OWSM with user authentication. Registered newly generated WSDL in OSR (Oracle Service Registry). A simple BPEL Process will call service as PartnerLink, which is configured as "Enabling Dynamic Lookup of BPEL Partner Link Endpoints". As mentioned in the document made entry in bpel.xml as registryServiceKey property containing the serviceKey value to the partnerLinkBinding section.
    The entire scenario is working fine and changed the servicekey value to wrong value in bpel.xml and redeployed, as expected it was giving me error message saying invalid servicekey.
    Now deployed GetMaxOfTwo in another application server and registered in OWSM. Intentionally stopped the first GetMaxOfTwo application. In the OSR Service changed the binding with new WSDL of OWSM. As BPEL process enabled with dynamic lookup it should execute without any error. But the results in this case was giving error saying the service was down. (Means it is referring to the old GetMaxOfTwo webservice.
    What could be the reason?, something is missing in the configuration?
    Regards
    Venkata M Rao
    +91 80 4107 5437

    Hi
    I am having trouble making the BPEL and Systinet to work together. I have Systinet and BPEL installed separately on 2 different servers. I deployed my web services and registered them in UDDI. I created a new BPEL process and added a partner link to refer to one of the web service I have registered in UDDI. When I create the partner link, it is forcing me to give the wsdl and it also gives an error message " There are no partner link types defined in current wsdl. Do you want create that will by default create partner link type for you?". If I say "NO' then deployment fails. If I say "Yes", then it creates a new wsdl file on the local server etc and gives "<Faulthttp://schemas.xmlsoap.org/soap/envelope/>
    <faultcode>soapenv:Server.userException</faultcode>
    <faultstring>com.oracle.bpel.client.delivery.ReceiveTimeOutException: Waiting for response has timed out. The conversation id is 75164a0815ea471a:-3be8c246:117cc377894:-537b. Please check the process instance for detail.</faultstring>". Any help is appreciated.

  • How to implement index array inside case structure for searching a 3D array?

    Well I have a 3D array and I want to index certain elements from that array. And I have thought of one way of doing this is to have multiple index array functions on the block diagram to search the array simultaneously, but that would be messy. Or I could setup some kind of case structure and place each index array function into individual cases. I've tried the latter, but when I connect the 3D array to the case structure at the"?" it doesn't give me permission because it says I'm hooking up two different types of data. Case Structure is for T or F and 3D array is not a boolean.
    So how can I setup the Case Structure to work for a 3D array?

    A case structure's selection tunnel cannot accept an array.  What exactly are your search criteria?  It sounds like a few FOR loops will be needed.
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • Dynamic Routing in BPEL 11g

    Hi,
    I have requirement where i need to dynamically call different WSDL with related xsd's. Currently i have two target system & i have two xsd's. But in future suppose third taregt system will come in picture than i need to change configuration & code will work without changing & deploying original code. Is this possible in BPEL? If yes, could you please provide tutorial related that.
    I heard that using mediator we can achive that but i could not able to find any docs for dynamic routing using mediator.
    Thanks

    Hi,
    I had dealt with dynamic routing in BPEL not sure about mediator though.
    You can check the following link.
    http://www.oracle.com/technology/pub/articles/bpel_cookbook/carey.html
    Thanks,
    Mohammad

  • Generating dynamic Attachments between bpel process activities

    Dear Experts,
    Please suggest me that how to handle dynamic attachments in BPEL process with JDeveloper.
    The requirement was need to send an attachment between activities in same BPEL process
    and not sending an attachment through mail.
    For Instance consider a scenario "Need to issue an appointment order(Activity3) for the candidate if he successfully completed his assigned task(Activity1) and selected(Activity2)".
    Thanks ,
    Rajesh
    Edited by: Rajesh A on Mar 9, 2009 11:30 AM

    Hi Rajesh,
    That's a nice requirement without using the Notification services to send the attachments.
    However, this can be achieved using the workflow service tasks as mentioned in : http://download-uk.oracle.com/docs/cd/B31017_01/integrate.1013/b28981/workflow.htm#BABCAIEF
    Using this you can assign, play with attachments via tasks. Hope this helps to some extent!
    Regards
    Anirudh Pucha

  • Incrementing 'index array' row input according to bytes received

    I am receiving binary data through a UDP port. I'm reading a column of a spreadsheet and I want to extract the consecutive row everytime a further 4 bytes of data is received. I will use the contents of the spreadhseet cell as a condition to format the binary data. I guess i need to count the bytes of data passed then reset the counter every time it reaches 4. Every time the counter resets the index array contant need to increment by 1...but i don't know how to do this. Can anyone help?  
    Thanks

    I tried as you said, it seems to be partially working but there seems to be a problem with the timing. The index increments in steps of one but not quickly enough. The data type sent to the selector terminal does not seem to be in sync with the binary data as my data does not update as i expect. Any ideas how to fix this problem?
    vi attached...
    Attachments:
    UDP_Case_Struct.vi ‏35 KB

Maybe you are looking for

  • Install failure due to "faulty DVD" problem: only with Family Pack?

    After going through a few threads on the subject of installation failure due to tbe pseudo-faulty DVD, I have the impression that many users mention that they were using a Family Pack install DVD or in one case a "drop in". The former is my case. Ple

  • What is Windows Explorer in Windows 8.1?

    I am sorry for this rudimentary question.  I am not a novice user, but have been using Windows for over two decades.  I used to think Windows Explorer was File Explorer, but sometimes it still has very high CPU usage after all File Explorer windows a

  • How do I add songs to i-pod shuffle in the new iOS 6.1.2 screen format?

    I recently updated to the most recent apple software  (iOS 6.1.2) I recently purchased songs from the I-tunes store, but cannot figure out how to add them to my i-pod shuffle.  The format looks different.  Is there a step by step guide to teach me ho

  • SCCM 2012SP1 and XenDesktop MCS implementation

    Are there any guides or articles out there on the best practice set up of SCCM 2012 to work with a MCS implementation of XenDesktop? In particular guidance on updating the master image and catalog procedure so that updates are implemented on this and

  • Queries run PARALLEL but no parallel parameters or table DOP set

    I've just taken over a new system and am seeing something that seems to me to be a bit unusual. Queries are running parallel, but I've checked and all tables have a DOP of 1 and none of the user queries have a parallel hint. Yet I see queries running