Iterate through two lists
Hello,
I'm writing an application that generates two seperate sets of data from a database which are stored in two lists; list A & B. I need to cycle through one list (*B*) and remove data according to my search criteria. When I encounter data that I'm going to remove, it has to be done on list A as well.
Is it at all possible to use one iterator to cycle through list B and modify A at the same time? If so, please explain.
For those who are interested, here is the code I used to solve the problem. All the writers create an html booklet for easy interpretation. And yes, I did take into consideration the fact that removing an item from the list offsets the counter and will skip n+1. The use of while( cdList.contains( trimmedcdValue )) was introduced to handle such a case by continuing to delete duplicates (by grabbing their subscript) within the list.
try{
statWriter=new BufferedWriter(new FileWriter("results/"+directory+"/FileStatistics.html"));
statWriter.write(this.buildHeader("File Statistics"));
statWriter.write("<table class='file-stats'><tr><th>File #</th><th>File name</th><th>Lines read</th><th>Total matches</th></tr>");
writer=new BufferedWriter(new FileWriter("./results/"+directory+"/MatchList.html"));
writer.write(this.buildHeader("Matched References"));
writer.write("<table><tr><th>File Line</th><th>CD Reference</th><th>ATA Number</th><th>Log_Book</th><th>Description</th><th>File Found in</th></tr>");
//loop through all new files
for(int y=0; y<f.length; y++){
//update the progressbar information
this.updateProgress(f[y]);
//set file reader
reader=new BufferedReader(new FileReader("./id files/"+directory+"/"+f[y]));
int lineCount=0; //keep track of lines read
int match=0; //keep track of the matches
String line=null;
while((line=reader.readLine())!=null){
String trimmedLine=line.trim(); //remove leading/trailing whitespace
lineCount++; //increment line counter
//cycle through list and check for matches
for(int x=0; x<cdList.size();x++){
String cdValue=(String)cdList.get(x); //current list subscript
//remove leading/trailing whitespace
String trimmedcdValue=cdValue.trim();
//if matched; remove row from list
if(trimmedLine.equalsIgnoreCase(trimmedcdValue)){
//while the value exists in the list; find & remove
while(cdList.contains(trimmedcdValue)){
match++;
row=(match%2==0)?"<tr>":"<tr class='shaded'>";
int index=cdList.indexOf(trimmedcdValue);
writer.write(row+"<td>"+trimmedLine+"</td><td>"+cdList.get(index)+"</td><td>"+ataList.get(index)+"</td><td>"+logList.get(index)+"</td><td>"+descList.get(index)+"</td><td>"+f[y].toLowerCase()+"</td></tr>");
this.removeRow(index);
}//end list for-loop
}//end line read while-loop
writer.flush(); //flush writeMatch buffer
//write file statistics
row=(y%2==0)?"<tr>":"<tr class='shaded'>";
statWriter.write(row+"<td>"+(y+1)+" of "+f.length+"</td><td>"+f[y].toString()+"</td><td>"+lineCount+"</td><td>"+match+"</td></tr>");
}//end file for-loop
writer.write("</table></body></html>");
writer.close(); //close write match stream
//reopen write stream for new file
writer=new BufferedWriter(new FileWriter("./results/"+directory+"/RemainingList.html"));
writer.write(this.buildHeader("Remaining List"));
writer.write("<table><tr><th>CD Reference</th><th>ATA Number</th><th>Log Book</th><th>Description</th></tr>");
for(int y=0; y<cdList.size(); y++){
row=(y%2==0)?"<tr>":"<tr class='shaded'>";
writer.write(row+"<td>"+cdList.get(y)+"</td><td>"+ataList.get(y)+"</td><td>"+logList.get(y)+"</td><td>"+descList.get(y)+"</td></tr>");
writer.write("<tr><td colspan='4'>Remaining list size: "+cdList.size()+"</td></tr></table></body></html>");
writer.flush(); //flush writeList Stream
writer.close(); //close writeList stream
//display operation statistics
endingListSize=cdList.size();
statWriter.write("<tr><td colspan='2'>Beginning list size:</td><td colspan='2'><strong>"+beginningListSize+"</strong></td></tr>");
statWriter.write("<tr class='shaded'><td colspan='2'>Null CD References removed:</td><td colspan='2'><strong>"+nulls+"</strong></td></tr>");
statWriter.write("<tr><td colspan='2'>ENG Log values removed:</td><td colspan='2'><strong>"+engs+"</strong></td></tr>");
statWriter.write("<tr class='shaded'><td colspan='2'>Ending list size:</td><td colspan='2'><strong>"+endingListSize+"</strong></td></tr>");
statWriter.write("</table></body></html>");
//flush and close stat writer stream
statWriter.flush();
statWriter.close();
}catch(IOException ioe){
ioe.printStackTrace();
} If you care to actually look through all this code, there is a call to removeRow which deletes the selected item from each list and is as follows...
private void removeRow(int x){
//remove identical row for each column
cdList.remove(x);
ataList.remove(x);
logList.remove(x);
descList.remove(x);
}Thanks to everyone who invested time in this problem, but fortunately enough the problem was solved outside of this forum.
Similar Messages
-
Iterate through a list containing Map items using struts
Hi friends,
I have a small problem. I want to iterate through a list of items, using struts.
The list actually contains map structres for example:
list(0)
map(..key..value..)
map(..key..value..)
map(..key..value..)
list(1)
map(..key..value..)
map(..key..value..)
map(..key..value..)
list(2)
map(..key..value..)
map(..key..value..)
map(..key..value..)can I use <logic:iterate/> for this? if yes how? Because I have used this tag for list containing bean objects not Map.
Any suggestions are much appreciated.
Thanks,
VishalNormally, each object exposed by the iterate tag is an element of the underlying collection you are iterating over. However, if you iterate over a Map, the exposed object is of type Map.Entry that has two properties:
key - The key under which this item is stored in the underlying Map.
value - The value that corresponds to this key.
So, if you wish to iterate over the values of a Hashtable, you would implement code like the following:
<logic:iterate id="element" name="myhashtable">
Next element is <bean:write name="element" property="value"/>
</logic:iterate>
Best Regards
Maruthi -
In terms of memory utilization which is better to iterate through a LIST?
For Loop or Iterator Class.?????
1. For loop and Iterator are not mutually exclusive. One common way to iterate before the foreach loop introduced in 1.5 (my preferred way) was like so:
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object obj = iter.next();
}2. By "for loop" I assume you mean "using get()". NEVER iterate using get(). It will work fine on ArrayList, but will be crappy slow on LinkedList, and doesn't exist on Set or Collection. Using an Iterator (or foreach, which is syntactic sugar for an Iterator) means you'll get proper and consistent behavior on any colleciton.
3. The memory usage will not be any different, or will be ridiculously insignificant. This kind of microoptimization without hardcore profiling numbers is a good way to gain a tiny, meaningless bit in one area at a much larger cost in another area.
Just use a foreach loop, or in cases where you need to modify the collection under iteration, an explicit Iterator or ListIterator. -
Iterate Through Lists Instead of Document Libraries, Or both
System Info: SharePoint 2010 Enterprise w DEC 2013 CU. 2 WFEs (load balanced), App Server, SSRS Server, Dedicated CA Server (All running Win 2k8 R2).
Background:I have a large (5,000 user) application that is completely customized on top of SP2010. I am the admin, and have been on the team for many years. Previously, we had a development team,
but client has scaled costs back, and now its just me on the technical side. We have a Web app that houses multiple Site Collections, and each site collection has various subsites.
My Problem: We have increased the LVT to 10k items (system has plenty of HP, although we do see performance degradation). Each subsite in the Site Collection holds data specific to an organization
wtihin the Line of Business. There are two lists that frequently approach the 10k mark, and we have mitigation steps in place (essentially, we just create a new SubSite for them once they reach 10k). What I need is a single script that will traverse ALL subsites
and return a count of their lists, perhaps I can work a couple of if statements in there to have specific data written to a SP List (if count is greater than 5000), and other wise everything gets written to the output file.
I am trying to iterate through all lists and return a count of folders + items ... The script below works just fine, but it goes through Document Libraries only (per the baseType eq tag).
I've tried changing baseType from DocumentLibrary to GenericList, but I continually get an error.
I've also removed the where baseType = DocLib clause completely, and this has the desired results (all lists and doclibs are listed), except the 'WebUrl' field in the csv output is blank.
Any thoughts on how I can make a small tweak to this script to get my desired results?
Start-SPAssignment -Global
$OutputFile ="D:\folder\DocCount3.csv"
$results = @()
$webApps = Get-SPWebApplication http://WebAppURL
foreach($webApp in $webApps)
foreach($siteColl in $webApp.Sites)
foreach($web in $siteColl.AllWebs)
$webUrl = $web.url
$docLibs = $web.Lists | Where-Object {$_.baseType -eq "DocumentLibrary"}
$docLibs | Add-Member -MemberType ScriptProperty -Name WebUrl -Value {$webUrl}
$results += ($docLibs | Select-Object -Property WebUrl, Title, ItemCount)
$results | Export-Csv -Path $OutputFile -NoTypeInformation
Stop-SPAssignment –GlobalYou guys won't believe this ... But, the script actually works as intended if I change the baseType tag to "GenericList"... I had been getting errors (about 14 of them) through PowerShell and
assuming the script didn't process, but after looking at the output CSV, it seems that everything worked properly. I think the 14 errors MAY have been corrupted sites (or something?) as it gives me NullValueNotAllowed when trying to "Add-Member" and points
to $WebUrl as being null.
Next up -- working on getting this script to write specific objects to a SP list! -
i have a list and i want to iterate through the list and get the names of the classes present in that..
i have the following code
Iterator it= list.iterator();
String value;
while(it.hasNext())
Object obj= it.next();
Class cls= obj.getClass();
value = cls.getName();
now if i want to check whether a class called test is present in that list how to do that...pls helpmgv wrote:
i have a list and i want to iterate through the list and get the names of the classes present in that..
i have the following code
Iterator it= list.iterator();
String value;
while(it.hasNext())
Object obj= it.next();
Class cls= obj.getClass();
value = cls.getName();
now if i want to check whether a class called test is present in that list how to do that...pls help
while(it.hasNext()){
Object obj = it.next();
if(obj instanceof test){
//do something
} -
Iteration through a list of map entries
hi,
I am facing a situation in which i have to write a rule to iterate through a list of map entries within a map and again iterate for a given attribute through a map of attributes within the selected map entry.
Can anyone throw light on any function or expression in the XPRESS language in the Identity Manager to accomplish this.
thanx in advance,
yashuwyahHI,
I cant help you out with full code at this point. But do make use of the following to determine the equivalency between GenericObject and HashMap as shown below.
Basic Operations
� map.keySet() == genObj[*].name
� map.entrySet() == genObj[*]
� map.get(attribute) == genObj.attribute
� map.get(attribute1).get(attribute2).get(employeeNumber) ==
genObj. attribute1. attribute2.employeeNumber� if attribute1 indexes a list object in the preceding example ==
genObj. attribute1[attribute2].employeeNumber� Searches
� find the object with the attribute fullname = �John Smith� ==
genObj[fullname=John Smith]� get John Smith�s employeeNumber == genObj[fullname=John
Smith].employeeNumber� List Operations
� get the names of all permanent employees ==
genObj[employeeType=permanent].nameFor your requirements, I figure that you can iterate through the list in the beginning and assign the initial result to a <defvar>. Then use the reference of this to determine the required attributes next.
IC. -
How to merge alphabetically two lists through a rational solution?
Have two lists of captions it two languages and need to merge alphabetically, but this solution is very poor.
(list x)
Palacio Imperial, Barcelona, 2012
Cementerio, 2009
(list y)
Imperial Palace
Cemetery
to obtain:
Palacio Imperial, Barcelona, 2012
Imperial Palace
Cementerio, 2009
Cemetery
One method very naive:
· number the lists
· convert numbering to text
· in list y add a constant to sort in order:
1. Palacio Imperial, Barcelona, 2012
2. Cementerio, 2009
1a. Imperial Palace
2a. Cemetery
and sort:
1. Palacio Imperial, Barcelona, 2012
1a. Imperial Palace
2. Cementerio, 2009
2a. Cemetery
delete the code:
Palacio Imperial, Barcelona, 2012
Imperial Palace
Cementerio, 2009
Cemetery
(italics are not required)
Thanks.Camilo,
Another more original way with QuicKeys! [I love this little soft for a long time!] Only 1 click!
For it, you need to use a different paragraph style for each list [eg. List1_Style and List2_Style].
Eg, our list:
A1
A2
A3
A4
B1
B2
B3
B4
Search: (?<=\r)(.+\r)+
Search format: List1_Style
Search-Research Windows must be open into ID.
Shorcut in QuicKeys:
1rst research
1/ Click on the button: Search (actived - in blue)
A2
A3
A4
is selected.
2/ Cut it (shortcut: Apple+X)
3/ Down arrow (of the keyboard)
4/ Copy it
We obtain:
A1
B1
A2
A3
A4
B2
B3
B4
2nd research
1/ Click on the button: Search (actived - in blue)
A3
A4
is selected.
2/ Cut it (shortcut: Apple+X)
3/ Down arrow (of the keyboard)
4/ Copy it
We obtain:
A1
B1
A2
B2
A3
A4
B3
B4
3rd research
1/ Click on the button: Search (actived - in blue)
A4
is selected.
2/ Cut it (shortcut: Apple+X)
3/ Down arrow (of the keyboard)
4/ Copy it
We obtain:
A1
B1
A2
B2
A3
B3
A4
B4
The research stops automatically.
The last work (after this test) is to create a loop in QuicKeys to run the steps 1/-2/-3/-4/ as many times as necessary until the end of the process. -
Struts 1.1 Iterate through input types of image
Hi everyone,
I'm using struts 1.1, and specifically the logic:iterate tag. Basically I'm looping through a List of Users. I print out username, userAccessLevel, two image input types (edit or remove). My actionForm associated with the JSP contains the List of Users.
A User object has an AccessButtons field (among other things),
an AccessButtons object contains two Buttons objects named edit and remove,
a Button object has 3 String fields, x, y, and name, and a "pressed()" function
Essentially I want the Action class to be able to pick up what button was pressed on the ActionForm. Specifically both the user and edit/remove action associated with the button. The code I have so far in the JSP is:
<logic:iterate id="users" name="accessForm" property="users" indexId="index">
<bean:define id="ssn" name="users" property="ssn"/>
<bean:define id="accessButtons" name="users" property="accessButtons"/>
<bean:write name="users" property="fullname"/>
<bean:write name="users" property="accessLevel"/>
<html:image property="accessButtons.edit" src="images/edit.gif" border="0" alt="edit" indexed="true"/>
<html:image property="accessButtons.remove" src="images/remove.gif" border="0" alt="remove" indexed="true"/>
</logic:iterate>
This displays the desired output, but it doesn't help be differentiate the user for which the button was pressed. I left out some of the HTML formatting stuff to keep the code clean.
Anyone have any ideas? I hope I explained what I wanted clearly and concisely...yes, this is a problem, isn't it...
I would suggess make each user iterration include a separate form tag set and have a hidden field with the user id. but I think this will still have a problem of knowing which of the 2 buttons were pressed. There is a problem here, cuz Netscape 7 sends the button name of the button and button.x and button.y, whereas IE 6 only sends the button.x and button.y, and not the button as is... which presents a problem to figuring out what was clicked. (Plain submit type buttons seem to be fine for submitting). At least, I guess just check for the existance of the button_name.x to see which was pressed, but you still need the user ID in the forms. -
How to Loop through another list and update a column with SharePoint Designer 2013 Workflow
Hi,
I am trying to get my head around the new 2013 Workflow Engine and SharePoint Designer 2013 Workflow Text-Based Designer.
I have two lists.
List A has 2 columns: Title, Completed (Yes/No)
List B has 3 columns: Title, LookupListATitle, Completed (Yes/No)
All the 2013 Workflow components have been installed and configured and I am selecting the 2013 Workflow option in SPD
I am trying to set off a 2013 Workflow when an item in List A is edited to Loop through List B and select items where the LookupListATitle column's value is equal to the Title value of the current item, and set the value of the Completed column for those
items in ListB to "Yes".
I have the Workflow configured like this:
Stage: Stage 1
IF Current Item:Completed equals Yes
Loop: 1
The contents of this loop will run repeatedly while: ListB:LookupListATitle equals Current Item: Title
Update item in ListB.
(The dialog options for the update item action as follows:
List: ListB
Field: Completed, Value: Yes
In the Find the List Item section
Field: LookupListATitle
Value: Current Item: Title)
Transition to stage
Go to End of Workflow
When I update an item in ListA and set its Completed column to Yes, I would expect the Workflow to find all the items in List B where the Lookup column is equal to ListA's Title (there are 2) and update their Completed column to Yes. But it doesn't work.
When I look at the Workflow Status it says the Internal Status is "Canceled" and the information pop up has the following alien language (and may be truncated):
RequestorId: 95f03b62-8956-ac14-c5cf-dc98c89c589c. Details: System.ArgumentException: Invalid JSON primitive: Item001. Parameter name: value at Microsoft.Workflow.Common.Json.JXmlToJsonValueConverter.ConvertStringToJsonNumber(String value) at Microsoft.Workflow.Common.Json.JXmlToJsonValueConverter.ReadPrimitive(String
type, XmlDictionaryReader jsonReader) at Microsoft.Workflow.Common.Json.JXmlToJsonValueConverter.JXMLToJsonValue(XmlDictionaryReader jsonReader) at Microsoft.Workflow.Common.Json.JXmlToJsonValueConverter.JXMLToJsonValue(Stream jsonStream, Byte[] jsonBytes)
at Microsoft.Activities.DynamicValue.ParseJson(String json) at System.Activities.CodeActivity`1.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor
executor, BookmarkManager bookmarkManager, Location resultLocation)
Unfortunately I don't have access to the server, logs etc.
I would love to find some tutorials, or any books on SharePoint Designer 2013 in general and Workflows in particular but my searches haven't turned up much so far apart from a pre-release Beginning SharePoint Workflows which is in its very early stages and
not much help yet.
Can anyone give me some guidance on how to set up While Loops to iterate through a related list using SharePoint Designer 2013?
MarkHi,
I understand that you wanted to update the items in the other list (Participants) where the Course equals the Current Item.
You need to use “Call HTTP Web Service" action and “Build Dictionary" action to get the Maxid and then loop Participants to update the items.
You can follow the steps as below to achieve what you want:
Create a custom list named Courses, add columns: Title(Single line of text), Course ID(Single line of text), Course Finalised (Yes/No).
Create a custom list named Participants, add columns: Title(Single line of text), Course(Lookup), CourseFinalised (Yes/No).
Create workflow associated to Courses, start the workflow automatically when an item is created or changed.
Add conditions and actions:
The HTTP URL is set to
https://sitename/_api/web/lists/GetByTitle('listname')/items?$orderby=Id%20desc and the HTTP method is set to “GET”. Then the list will be order by Id and desc.
Then if Course Finalised is equal to Yes, the CourseFinalised of the associated items in Participants will be updated to Yes.
More information:
http://sergeluca.wordpress.com/2013/04/09/calling-the-sharepoint-2013-rest-api-from-a-sharepoint-designer-workflow/
Thank you for your understanding.
Best Regards,
Linda Li
Linda Li
TechNet Community Support -
How to iterate through multiple records read from a file adapter?
I am reading multiple records from a file using SyncRead file adapter.
I want to iterate through the records to perform some action on every record. How to do this?
I found few threads related to this..but did not get the solution.
Please note that I am using Jdev 10.1.3.4
ThanksFor count expression, I am getting following error:
<Faulthttp://schemas.oracle.com/bpel/extensionhttp://schemas.xmlsoap.org/soap/envelope/>
<faultcode>null:subLanguageExecutionFault</faultcode>
<faultstring>business exception</faultstring>
<faultactor>cx-fault-actor</faultactor>
<detail>
<code>XPathExecutionError</code>
<summary>XPath expression failed to execute. Error while processing xpath expression, the expression is "ora:countNodes(bpws:getVariableData('Invoke_3_SynchRead_OutputVariable','EmpCollection','/ns4:EmpCollection'))", the reason is FOTY0001: type error. Please verify the xpath query. </summary>
</detail>
</Fault>
I hard-coded count, in order to proceed. Then I got following error
<Faulthttp://schemas.oracle.com/bpel/extensionhttp://schemas.xmlsoap.org/soap/envelope/>
<faultcode>null:bindingFault</faultcode>
<faultstring>business exception</faultstring>
<faultactor>cx-fault-actor</faultactor>
<detail>
<code>null</code>
<summary>file:/C:/product/10.1.3.1/OracleAS_1/bpel/domains/default/tmp/.bpel_BPELProcess4_1.0_dc4a703c46a242f69d6cea305b2df3a3.tmp/WriteDA.wsdl [ WriteDA_ptt::insert(VbEmpCollection) ] - WSIF JCA Execute of operation 'insert' failed due to: Mapping Not Found Exception. The mapping [C1] for descriptor [class bpel___localhost_default_BPELProcess4_1_0__MD5_ad2539e1386433a9e059bcc969732f11_.WriteDA.VbEmp] could not be found. The input xml record had an element [VbEmp/C1]. ; nested exception is: ORABPEL-11627 Mapping Not Found Exception. The mapping [C1] for descriptor [class bpel___localhost_default_BPELProcess4_1_0__MD5_ad2539e1386433a9e059bcc969732f11_.WriteDA.VbEmp] could not be found. The input xml record had an element [VbEmp/C1]. Make sure that the input xml is valid relative to the xsd and that the mapping exists in the Mappings.xml. If an old version of the descriptor without this mapping has been loaded by the database adapter, you may need to bounce the app server. If the same descriptor is described in two separate Mappings.xml files, make sure both versions include this attribute/mapping. </summary>
<detail>null</detail>
</detail>
</Fault>
The bpel code is as follows (I can share entire BPEL project..But not sure how to attach to the thread :( )
<?xml version = "1.0" encoding = "UTF-8" ?>
<!--
Oracle JDeveloper BPEL Designer
Created: Wed Feb 03 18:00:26 IST 2010
Author: administrator
Purpose: Synchronous BPEL Process
-->
<process name="BPELProcess4"
targetNamespace="http://xmlns.oracle.com/BPELProcess4"
xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
xmlns:ns4="http://TargetNamespace.com/InboundService"
xmlns:ids="http://xmlns.oracle.com/bpel/services/IdentityService/xpath"
xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:client="http://xmlns.oracle.com/BPELProcess4"
xmlns:ora="http://schemas.oracle.com/xpath/extension"
xmlns:xref="http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions"
xmlns:hwf="http://xmlns.oracle.com/bpel/workflow/xpath"
xmlns:ns1="http://xmlns.oracle.com/pcbpel/adapter/file/ReadFA/"
xmlns:ehdr="http://www.oracle.com/XSL/Transform/java/oracle.tip.esb.server.headers.ESBHeaderFunctions"
xmlns:ns3="http://xmlns.oracle.com/pcbpel/adapter/db/top/WriteDA"
xmlns:ns2="http://xmlns.oracle.com/pcbpel/adapter/db/WriteDA/"
xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc">
<!--
PARTNERLINKS
List of services participating in this BPEL process
-->
<partnerLinks>
<!--
The 'client' role represents the requester of this service. It is
used for callback. The location and correlation information associated
with the client role are automatically set using WS-Addressing.
-->
<partnerLink name="client" partnerLinkType="client:BPELProcess4"
myRole="BPELProcess4Provider"/>
<partnerLink name="WriteDA" partnerRole="WriteDA_role"
partnerLinkType="ns2:WriteDA_plt"/>
<partnerLink name="ReadFA" partnerRole="SynchRead_role"
partnerLinkType="ns1:SynchRead_plt"/>
</partnerLinks>
<!--
VARIABLES
List of messages and XML documents used within this BPEL process
-->
<variables>
<!-- Reference to the message passed as input during initiation -->
<!-- Reference to the message that will be returned to the requester-->
<variable name="inputVariable"
messageType="client:BPELProcess4RequestMessage"/>
<variable name="outputVariable"
messageType="client:BPELProcess4ResponseMessage"/>
<variable name="Invoke_2_insert_InputVariable"
messageType="ns2:VbEmpCollection_msg"/>
<variable name="Invoke_3_SynchRead_InputVariable"
messageType="ns1:Empty_msg"/>
<variable name="Invoke_3_SynchRead_OutputVariable"
messageType="ns1:EmpCollection_msg"/>
<variable name="Invoke_3_SynchRead_InputVariable_1"
messageType="ns1:Empty_msg"/>
<variable name="Count" type="xsd:integer"/>
<variable name="iterater" type="xsd:integer"/>
</variables>
<!--
ORCHESTRATION LOGIC
Set of activities coordinating the flow of messages across the
services integrated within this business process
-->
<sequence name="main">
<!-- Receive input from requestor. (Note: This maps to operation defined in BPELProcess4.wsdl) -->
<receive name="receiveInput" partnerLink="client"
portType="client:BPELProcess4" operation="process"
variable="inputVariable" createInstance="yes"/>
<!-- Generate reply to synchronous request -->
<invoke name="Invoke_3" partnerLink="ReadFA" portType="ns1:SynchRead_ptt"
operation="SynchRead"
outputVariable="Invoke_3_SynchRead_OutputVariable"
inputVariable="Invoke_3_SynchRead_InputVariable_1"/>
<assign name="Assign_1">
<copy>
<from expression="1"/>
<to variable="iterater"/>
</copy>
<copy>
<from expression="1"/>
<to variable="Count"/>
</copy>
</assign>
<while name="While_1"
condition="bpws:getVariableData('iterater') <= bpws:getVariableData('Count')">
<sequence name="Sequence_2">
<switch name="Switch_1">
<case condition="bpws:getVariableData('Invoke_3_SynchRead_OutputVariable','EmpCollection','/ns4:EmpCollection/ns4:Emp/ns4:C4') = "Pune"">
<sequence name="Sequence_1">
<assign name="Assign_3">
<copy>
<from expression="bpws:getVariableData('Invoke_3_SynchRead_OutputVariable','EmpCollection','/ns4:EmpCollection/ns4:Emp')[bpws:getVariableData('iterater')]"/>
<to variable="Invoke_2_insert_InputVariable"
part="VbEmpCollection"
query="/ns3:VbEmpCollection/ns3:VbEmp"/>
</copy>
</assign>
<invoke name="Invoke_2" partnerLink="WriteDA"
portType="ns2:WriteDA_ptt" operation="insert"
inputVariable="Invoke_2_insert_InputVariable"/>
</sequence>
</case>
<otherwise>
<sequence name="Sequence_3">
<empty name="Empty_1"/>
<assign name="Transform_1">
<bpelx:annotation>
<bpelx:pattern>transformation</bpelx:pattern>
</bpelx:annotation>
<copy>
<from expression="ora:processXSLT('Transformation_3.xsl',bpws:getVariableData('Invoke_3_SynchRead_OutputVariable','EmpCollection'))"/>
<to variable="Invoke_2_insert_InputVariable"
part="VbEmpCollection"/>
</copy>
</assign>
</sequence>
</otherwise>
</switch>
<assign name="Assign_2">
<copy>
<from expression="bpws:getVariableData('iterater') + 1"/>
<to variable="iterater"/>
</copy>
</assign>
</sequence>
</while>
<reply name="replyOutput" partnerLink="client"
portType="client:BPELProcess4" operation="process"
variable="outputVariable"/>
</sequence>
</process>
From the process flow, I can see that the array element expression works and the first employee record is correctly assigned to the Invoke_2_Input_Variable.
However Invoke_2 is erroring out.
Thanks
Edited by: user8645981 on Feb 5, 2010 2:44 AM -
How to listen to iTunes through two separate stereo systems simultaneouly?
I was thinking of buying two Airport Express units in order to run iTunes to two seperate stereo systems in two different rooms. Can this be done, or is there a better way to accomplish this?
thanks for any help!
pjo
iMac G4, 800 Mhz Mac OS X (10.3.9)Hi Pjo,
Yes, you can listen to iTunes through two separate stereo systems simultaneously. The current version of iTunes allows you to stream your music to multiple Airport Express units. At the bottom of iTunes, where the different Airport Express units' names are listed, there is a "Multiple Speakers..." option; select this to choose from one or more of your units.
Hope this helps.
- Keith -
Iterate through RichTable with custom cells
Hi.
I create a RichTable by drag and drop a view in DataControls. View is from table xxx and table contains only one column, binding description field in the table.
This description is shown in an OutputText UI component.
Then, I add a column with a SelectOneRadio component (to check Yes/No).
Finally, I add another column with an Input Text to write comments.
So, when I click one button, I capture the action event and want to process table content. But, how can I iterate through this table?
How can I get each row, and each cell in its row (each radio, each text)?
My JDeveloper version is 11.1.1.7.0
Thanks in advance. Best regards
EDIT: _________Final solution_________
Add two transient attributes and iterate the VO object is very easy.
For the specific issue about radio button, add a switcher and bind the radio group with the transient attribute.Hi,
You could do something like
<af:switcher id="s1" defaultFacet="input" facetName="#{row.type eq 0?'radio':'input'"}>
<f:facet name="input">
<af:inputText id="it2" value="#{row.answer.inputValue"}/>
</f:facet>
<f:facet name="radio">
<af:selectBooleanRadio id="sbr1" value="#[row.answer.inputValue"}/>
</f:facet>
</af:switcher>
-Arun -
How do I iterate through a subform structure ?
I have subforms which have individual fields which I have to set access either open or protected. Instead of listing each single field, is there a way I can use a for loop to iterate through the subform and set each field access as needed?
That’s unfortunate because we aren’t using Acrobat/Reader to read the forms. We’re using a product called FormStream Filler. Anyway, I stumbled onto a technique used in a previous form here. I don’t understand everything about it, but I was able to replace enough code to get it to work with my form. Suffice to say it has a lot to do with nodes.
Thanks for answering. -
Join two list of integer type field using CAML query
Hi
As i am struggling in Join two sharepoint list (Roles and Emplyees). As there is no lookup columns and lists are already existing and have almost 3000 + recodrs. As a part of enhancement work need to join these list. List structure is some thing as follows:
Roles :
ID Title
1 Project Manager
2 Business Analyst
3 Developer
Employees :
Name Role
1 James 1
2 Petar 3
3 John 2
Output should be like as follows:
Name Role
1 James Project Manager
2 Petar Developer
3 John Developer
So please suggest, if the joining can be done other than lookup columns through the CAML query.
Akhilesh RaoFollow below CAML query to add joins between two lists.
SPList list = SPContext.Current.Site.RootWeb.Lists["Employees"];
SPQuery query = new SPQuery();
query.Joins = @" <Join Type="INNER" ListAlias="Roles">
<Eq>
<FieldRef Name="Employees" RefType="Role" />
<FieldRef List="Roles" Name="ID" />
</Eq>
</Join>";
query.ProjectedFields = @" <Field Name="RoleName" Type="Lookup" List="Roles" ShowField="Title">";
query.ViewFields = @ "<FieldRef Name="Title">
<FieldRef Name="RoleName"> ";
SPListItemCollection result = tablea.GetItems(query);
Adnan Amin MCT, SharePoint Architect | If you find this post useful kindly please mark it as an answer :) -
I need to know if it is possible to merge two lists using coldfusion. I have one list uploaded to the site then they want the ability to upload a second list with may have additional fields and/or different number of records. Need to know if this is possible, how to do it if it is, and how the two list will match up. Thanks in advance for the help.
Right, well in that case this isn't really anything to do with merging lists per se, hence the confusion I believe. Technically, you'd do this:
<cfset newData = fileOpen("c:\newlist.csv","read") />
<!--- Loop through your file, one line at a time --->
<cfloop condition="NOT fileIsEof(newData)">
<!--- Create a string of the line, this is a true list --->
<cfset thisLine = fileReadLine(newData) />
<!--- Get the elements of the list we want for the query --->
<cfset thisForename = listGetAt(thisLine,1) />
<cfset thisSurname = listGetAt(thisLine,2) />
<!--- Check if this person exists --->
<cfquery datasource/username/password name="qCheckExists">
SELECT id
FROM mytable
WHERE firstname = <cfqueryparam cfsqltype="cf_sql_varchar" value="#thisForename#" />
AND surname = <cfqueryparam cfsqltype="cf_sql_varchar" value="#thisSurname"#" />
</cfquery>
<!--- If we found rows, update --->
<cfif qCheckExists.RECORDCOUNT eq 1 >
<cfquery datasource/username/password>
UPDATE mytable
SET forename = <listGetAt,thisLine, FIELD>,
surname = <listGetAt,thisLine, FIELD>,
address = <listGetAt,thisLine, FIELD>,
etc etc etc
WHERE id = qCheckExists.id
</cfquery>
<cfelseif qCheckExists.RECORDCOUNT >
<!--- here you found more than one matching row, up to you what to do --->
<cfelse>
<!--- here you didn't find a match, so do an insert --->
</cfif>
</cfloop>
<cfset fileClose(newData) />
That's how you'd do it on a technical level, the Business decisions are yours. What if it's John not Jon? What if it's Jonathan? That's not a programming problem, that's up to you to decide - I'm not sure we can help you there.
O.
Maybe you are looking for
-
Edit .app file in excel and then open it in client tool?
Dear Gurus, I am very new to HFM and would like to know what practice a HFM consultant will use in editing the metadata. My boss recommend me to edit metadata( .app file) in excel and save it into a format that can be read and opened by client tool.
-
Re: Reading data from a data packet
We did not find any driver for our instrument so we are trying to capture data using the method i have explained before. Below is an example of the data packets that we are receiving in our serial port monitoring software. First data packet 13
-
JNDI lookup for UserTransaction
Hi all, in Weblogic, in a typical scenario, do a client provide exactly one JNDI lookup for the UserTransaction object (interface) or do the client have to provide a JNDI lookup for each transaction?
-
Why won't my iphoto open or load the pictures?
I click on my iphoto, but it just loads for forever. I can't actually get the pictures to load.
-
I was happy with 4.6, but the little window said it was necessary to download 5.0. Please get me back to 4.6 so I can have the Yahoo tool bar. Thanx