<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.captaris.com/DeveloperProgram/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>TrainerMatt's Blog</title><link>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/default.aspx</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2.0 (Build: 60217.2664)</generator><item><title>Separating Criteria from the  Model</title><link>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/archive/2008/09/04/14209.aspx</link><pubDate>Thu, 04 Sep 2008 23:00:00 GMT</pubDate><guid isPermaLink="false">04a5fdf5-6b27-4ab8-a549-ff01110aea12:14209</guid><dc:creator>TrainerMatt</dc:creator><slash:comments>0</slash:comments><comments>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/comments/14209.aspx</comments><wfw:commentRss>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/commentrss.aspx?PostID=14209</wfw:commentRss><wfw:comment>http://www.captaris.com/DeveloperProgram/blogs/rsscomments/14209.aspx</wfw:comment><description>&lt;p&gt;Wow. Its been nearly one year since I posted to this blog. That is a terrible track record. Hopefully I will make up for some lost time with this one.&lt;/p&gt;&lt;p&gt;
 
One of the questions that sometimes comes up in my training classes is about where to store criteria for a Biz Rule. So if the approval limit for a manager is 1000 euros today and changes on a quarterly basis, where should that info go. If you hard code it to the model, then you have to recompile the model every time your approval limits change. 
&lt;/p&gt;&lt;p&gt;
It would be a whole lot better if you could have an external configuration file that defined those limits and then queried the file every time you go to an approval. That's what I am demonstrating in this video. In fact I am doing it from an external class library that I am linking in to the model, though I didn't really need to do it that way.
&lt;/p&gt;&lt;p&gt;
Check out the video and let me know what you think.
&lt;/p&gt;&lt;p&gt;
&lt;a href=http://revver.com/video/1151631/using-an-external-configuration-file-with-a-captaris-workflow-model /&gt;http://revver.com/video/1151631/using-an-external-configuration-file-with-a-captaris-workflow-model/&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://www.captaris.com/DeveloperProgram/aggbug.aspx?PostID=14209" width="1" height="1"&gt;</description><enclosure url="http://revver.com/video/1151631/using-an-external-configuration-file-with-a-captaris-workflow-model/" length="0" type="application/octet-stream" /></item><item><title>Copy Search Results to Another Database</title><link>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/archive/2007/11/09/13273.aspx</link><pubDate>Fri, 09 Nov 2007 19:02:00 GMT</pubDate><guid isPermaLink="false">04a5fdf5-6b27-4ab8-a549-ff01110aea12:13273</guid><dc:creator>TrainerMatt</dc:creator><slash:comments>1</slash:comments><comments>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/comments/13273.aspx</comments><wfw:commentRss>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/commentrss.aspx?PostID=13273</wfw:commentRss><wfw:comment>http://www.captaris.com/DeveloperProgram/blogs/rsscomments/13273.aspx</wfw:comment><description>&lt;p&gt;One of the cool new features of Alchemy 8.2.2, aka SP4, is the ability to copy search results to another database. This is very similar to one of the problems I ask my Alchemy SDK students to solve during a group exercise. The goal of the exercise is to write a program that will do a search, and then copy all of the results to another database. &lt;/p&gt;
&lt;p&gt;There are at least two ways of solving this problem. You could do a Item.Retrieve to save it out to a temp directory, then Item.CreateItem to add it to a new database. That's great, but it means that you have another location for the files you now have to clean up. What would be better is if you could stream the content from one database to another. Well, you can do that and that's what I am going to do right here. &lt;/p&gt;
&lt;p&gt;The key is to use the Builder object. First BeginStreamData, then for each item do a BeginRecord, AppendData, then EndRecord. When everything is copied over, EndStreamData. When calling AppendData, the data is coming from the source item and you call GetContent.&lt;/p&gt;
&lt;p&gt;Here is the full source code for a command line app that does the job:&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; SearchToDB&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (args.Length == 0)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            Alchemy.Application auApp = &lt;span class="kwrd"&gt;new&lt;/span&gt; Alchemy.Application();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            auApp.LoadOptionsFile(&lt;span class="str"&gt;""&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            Alchemy.Database destDB = auApp.Databases[1];&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            Alchemy.SearchGroup sg = auApp.SearchGroups.Add(&lt;span class="str"&gt;"MyNewSearchGroup"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Alchemy.Database db &lt;span class="kwrd"&gt;in&lt;/span&gt; auApp.Databases)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;                sg.Databases.Add(db.Path);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (db.Title == &lt;span class="str"&gt;"Search Results"&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;                    destDB = db;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;            Alchemy.Query auQuery = auApp.NewQuery();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            auQuery.AddFullTextQuery(args[0]);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;            auQuery.SearchGroup(sg);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;            Alchemy.Builder build = auApp.NewBuilder(destDB);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            build.BeginStreamData(&lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            Alchemy.Item searchFolder = destDB.Root.CreateFolder(Alchemy.AuPosEnum.auPosLastChild);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;            searchFolder.Title = &lt;span class="str"&gt;"Search for "&lt;/span&gt; + args[0] + &lt;span class="str"&gt;" on "&lt;/span&gt; + DateTime.Now.ToString();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;            &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Alchemy.Result result &lt;span class="kwrd"&gt;in&lt;/span&gt; auQuery.Results)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;                Alchemy.Item dbFolder = searchFolder.CreateFolder(Alchemy.AuPosEnum.auPosLastChild);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;                dbFolder.Title = result.Database.Title + &lt;span class="str"&gt;" ("&lt;/span&gt; + DateTime.Now.ToShortTimeString() + &lt;span class="str"&gt;")"&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Alchemy.Item item &lt;span class="kwrd"&gt;in&lt;/span&gt; result.Items)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;                {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;                    Alchemy.Item destItem = build.BeginRecord(dbFolder, Alchemy.AuPosEnum.auPosLastChild, &lt;span class="str"&gt;""&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;                    destItem.Title = item.Title;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;                    build.AppendData(item.GetContent(0,item.Size,&lt;span class="kwrd"&gt;false&lt;/span&gt;),item.Size);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;                    build.EndRecord(100);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;                }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;            build.EndStreamData();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In lines 17-24, I am creating a new SearchGroup, then going through all the databases in my profile.ini to add them to the search group and then seeing if it is my search results database. After that I do the search, create a builder object, and BeginStreamData. Before going through all of the items, I create a folder in the database that is named for the current search and date.&lt;/p&gt;
&lt;p&gt;Since each result is a list of items within one database, I create a folder named for that database. Then I go to each item in the result, do a build.BeginRecord, passing it the database folder, and where I want to create the item in relation to that folder. I set the Title to be the same as the title of the source item. Then I call AppendData. But I have to get the content from somewhere. Luckily I can call item.GetContent. The first parameter is where I want to start from (byte 0), how big the file is (item.size), and whether I want the annotations. Then I tell it that I want to stop when it gets to 100 percent of the file. After all the files are copied over, I call EndStreamData and we are all done. &lt;/p&gt;
&lt;p&gt;Its a pretty cool solution and could be useful if you aren't ready to upgrade to SP4.&amp;nbsp; Enjoy!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Matt (&lt;a HREF="/DeveloperProgram/blogs/trainermatt_blog/default.aspx"&gt;Trainer Matts Blog&lt;/a&gt; / &lt;a href="http://technovangelist.com/"&gt;Technovangelist&lt;/a&gt;)&lt;/p&gt;&lt;img src="http://www.captaris.com/DeveloperProgram/aggbug.aspx?PostID=13273" width="1" height="1"&gt;</description></item><item><title>The Alchemy SDK CoolTools Session in Kuala Lumpur</title><link>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/archive/2007/06/20/12547.aspx</link><pubDate>Thu, 21 Jun 2007 00:45:47 GMT</pubDate><guid isPermaLink="false">04a5fdf5-6b27-4ab8-a549-ff01110aea12:12547</guid><dc:creator>TrainerMatt</dc:creator><slash:comments>0</slash:comments><comments>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/comments/12547.aspx</comments><wfw:commentRss>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/commentrss.aspx?PostID=12547</wfw:commentRss><wfw:comment>http://www.captaris.com/DeveloperProgram/blogs/rsscomments/12547.aspx</wfw:comment><description>&lt;p&gt;A few weeks ago we had our annual International Partner Conference in Kuala Lumpur. At that conference I delivered a session on using the Alchemy SDK in interesting ways. It was mostly a demo session with as few Powerpoint slides as possible. I was planning to wait to describe the session and the tools demonstrated until the Visual Studio projects were published on this site. Unfortunately, the process for uploading the files seems to be taking a long time, so I will just start writing. Hopefully soon they will show up here and I will be sure to let you know when they do. For now, this post will describe each of the tools. Later posts will go into detail on each tool and possibly list the full source code in the blog post. One of my rules for creating the tools was that each had to be less than about 100 lines of code. So here we go.&lt;/p&gt; &lt;p&gt;First since we are dealing with Alchemy we need to have a database. Out of the box, creating a database and adding it to server control means opening Alchemy Administrator, creating the database, closing Administrator, opening the server console, adding the database to&amp;nbsp;the server, closing the server console, and opening Administrator. Wow! That's a lot of steps! So my first app was a simple tool to create a new database and add it to server control in one step. &lt;/p&gt; &lt;p&gt;But this doesn't actually do everything. It didn't add the database to the alchemy.ini file so it won't appear in Administrator next time you launch it. But that gave me an excuse for the next tool. So sometimes I use a development machine that's actually a virtual machine. The VM has the Alchemy server, and a bunch of other services. I already have Visual Studio on my host machine and I don't want to install it again in the VM, so I use the host as my client, and the VM as my server. That works great! But when I want to add a database that is under server control, finding the database can be tough. Its not on My Computer and my Domain is the Captaris domain. While I may think of myself as important, IT sees me as another loser user and doesn't want me adding servers to the domain willy nilly. So how do I find the new database on my dev server? Well, my DBChooser makes that easy. I simply specify a server name and I see a list of all databases under server control. The databases that are selected are already in the alchemy.ini. I can unselect and select any of the databases and click the save button. Now the next time I launch Administrator, only the selected databases will appear.&lt;/p&gt; &lt;p&gt;So now that I have a database, I need to add content to the database. I had a bunch of tif files representing invoices that I wanted to add, so I launched DnDOCR. From a simple form I choose a database from the list. Then I can drag and drop one or many files onto that form. Alchemy will add all the files to the root of that database, OCR each of them, and then build the database, all in one step.&lt;/p&gt; &lt;p&gt;Sometimes I want to add other files that I found in the file explorer in Windows. So I selected a bunch of them, clicked the right mouse button, and chose Add to Alchemy. This is a nice tool, but we quickly run into a limitation of this implementation. I am consuming an administrator license for every file I selected. It will release those licenses when done, but adding 100 files at a time means having 100 admin licenses...not likely. So I have another version of the application that uses web services. The benefit here is that no licenses are used. Yeah, no licenses, zip, nil, nada. The downside is that consuming our webservices are a royal pain in the...well, you know, and they aren't all that speedy. But &lt;strong&gt;0 licenses&lt;/strong&gt;!!!!&lt;/p&gt; &lt;p&gt;OK, so now we have some documents in our database. Now I want to search for that content. I used the SimpleSearch I talked about in a previous blog post. There were a few interesting things about that tool. First, there were no buttons or icons, just type what you want. Also, I only consume a Search license, not an Administrator license.&lt;/p&gt; &lt;p&gt;Searching is nice but there are times I want to do a search and retrieve all the results to a particular folder. So I made a simply Retrieve command line program that just takes two parameters: the search query and a location to retrieve the files to. You can even leave out the location and it will retrieve the search results to the current directory. The search is performed on all databases in your Alchemy.ini file.&lt;/p&gt; &lt;p&gt;From there I went to workflow integration. Some of our customers want a simple workflow integrated in with Alchemy. Captaris Workflow is great, but it could be beyond the budget and all they want is a simple one step approval. So the next app "workflow enables" any database and adds a few extra buttons to the Administrator interface.&amp;nbsp;When I drag and drop a file to the database for the first time, an unprocessed folder is created and the file is moved into that folder. If I click on the document in that folder and click the Approved button, the document is moved back to the root. Later on I can click on the Request Review button. At that point, the document is moved to the Review Requested folder. After reviewing, someone can then Approve to move it back to the root. &lt;/p&gt; &lt;p&gt;Next I dealt with security. Imagine the problem: I have a database and 1000 users. I want each user to have their own folder that no one else can access. When they enter the database they only see their personal folder. How would you set that up? Well, you would probably hire a student to come in as an intern (meaning they work hard and get paid nothing), teach them how to do all the steps, then have them slave away for the next few weeks to add each user individually to the database as a group, add a folder, add a role to the server console, add their username to the role, add the database to the role, assign their group to the role, assign certain licenses to the role, etc. Or you could run my command which looks in the Active Directory for the group AlchemyUsers and performs all of those steps for all members of that group all at once. And it takes seconds rather than weeks.&lt;/p&gt; &lt;p&gt;For anyone new to Alchemy development, creating all of these applications would guarantee at least one thing: a complete monopoly on all licenses...well, at least the Administrator ones. Each of my applications only use the license that it really needs. And to confirm that, I have a little AJAX enabled web site that checks every few seconds to see how many licenses of each type are available. I am using the standard Alchemy Object Library for this and creating objects then destroying them every 5 seconds.&lt;/p&gt; &lt;p&gt;So that's 9 cool little utilities. Again, all of them were less than 100 lines (or not that much more than 100). And I will go into detail about each of them in the coming days. I hope you will find it interesting...&lt;/p&gt;&lt;img src="http://www.captaris.com/DeveloperProgram/aggbug.aspx?PostID=12547" width="1" height="1"&gt;</description><category domain="http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/archive/category/1023.aspx">alchemy</category><category domain="http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/archive/category/1025.aspx">developer</category></item><item><title>Alchemy Bulk Loader</title><link>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/archive/2007/05/18/12461.aspx</link><pubDate>Fri, 18 May 2007 21:05:00 GMT</pubDate><guid isPermaLink="false">04a5fdf5-6b27-4ab8-a549-ff01110aea12:12461</guid><dc:creator>TrainerMatt</dc:creator><slash:comments>0</slash:comments><comments>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/comments/12461.aspx</comments><wfw:commentRss>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/commentrss.aspx?PostID=12461</wfw:commentRss><wfw:comment>http://www.captaris.com/DeveloperProgram/blogs/rsscomments/12461.aspx</wfw:comment><description>&lt;p&gt;Yesterday I finished up another Alchemy SDK class. One of the requests that came up was for a bulk loader utility. The customer had&amp;nbsp;exported the data&amp;nbsp;from some other file management tool as a series of files and an XML file describing it all and wanted to bring it in to Alchemy. So I tackled the problem on the last evening before the end of the class and ended up with a pretty good solution. But I didn't actually have a source file beyond what the customer described in class, so I built a tool to come up with bogus data as well. &lt;/p&gt; &lt;p&gt;First lets look at the XML Export File. Its pretty simple stuff. &lt;/p&gt;

&lt;pre&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Documents&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;
  &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Document&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;
    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;DocumentName&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;ry7yGR9GDTPD&lt;span&gt;&amp;lt;&lt;/span&gt;/&lt;span&gt;DocumentName&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;
    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;ExportedFilePath&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;c:\test\9.tif&lt;span&gt;&amp;lt;&lt;/span&gt;/&lt;span&gt;ExportedFilePath&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;
    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;DatabasePath&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;Amsterdam&lt;span&gt;&amp;lt;&lt;/span&gt;/&lt;span&gt;DatabasePath&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;
    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;FileDate&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;04/02/00&lt;span&gt;&amp;lt;&lt;/span&gt;/&lt;span&gt;FileDate&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;
    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;LoanDate&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;08/02/03&lt;span&gt;&amp;lt;&lt;/span&gt;/&lt;span&gt;LoanDate&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;
    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;LoanAmount&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;14811.90&lt;span&gt;&amp;lt;&lt;/span&gt;/&lt;span&gt;LoanAmount&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;
  &lt;span&gt;&amp;lt;&lt;/span&gt;/&lt;span&gt;Document&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;
&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Documents&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Each of the elements other than the file's location needed to be turned into fields in the Alchemy Database.&lt;/p&gt;
&lt;p&gt;The Bulk Loader utility simply reads that in as an XMLDocument, creates the fields if necessary, then loops through all the Document elements adding the file and setting the fields. Adding 5000 single page tiffs took less than five minutes.&lt;/p&gt;

&lt;div class="cf"&gt;&lt;pre class="cl"&gt;&lt;span class="cb1"&gt;class&lt;/span&gt; &lt;span class="cb2"&gt;BulkImport&lt;/span&gt;&lt;/pre&gt;&lt;pre class="cl"&gt;{&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb1"&gt;string&lt;/span&gt; &lt;span class="cb3"&gt;XmlFilePath&lt;/span&gt; = &lt;span class="cb4"&gt;""&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb1"&gt;string&lt;/span&gt; &lt;span class="cb3"&gt;DatabasePath&lt;/span&gt; = &lt;span class="cb4"&gt;""&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb3"&gt;Alchemy&lt;/span&gt;.&lt;span class="cb2"&gt;Application&lt;/span&gt; &lt;span class="cb3"&gt;auApp&lt;/span&gt; = &lt;span class="cb1"&gt;new&lt;/span&gt; &lt;span class="cb3"&gt;Alchemy&lt;/span&gt;.&lt;span class="cb2"&gt;Application&lt;/span&gt;();&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb3"&gt;Alchemy&lt;/span&gt;.&lt;span class="cb2"&gt;Database&lt;/span&gt; &lt;span class="cb3"&gt;auDB&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb1"&gt;void&lt;/span&gt; &lt;span class="cb3"&gt;Main&lt;/span&gt;(&lt;span class="cb1"&gt;string&lt;/span&gt;[] &lt;span class="cb3"&gt;args&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;if&lt;/span&gt; (&lt;span class="cb3"&gt;GetParameters&lt;/span&gt;(&lt;span class="cb3"&gt;args&lt;/span&gt;))&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb5"&gt;//auApp.LoadOptionsFile("");&lt;/span&gt;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;auDB&lt;/span&gt; = &lt;span class="cb3"&gt;auApp&lt;/span&gt;.&lt;span class="cb3"&gt;Databases&lt;/span&gt;.&lt;span class="cb3"&gt;Add&lt;/span&gt;(&lt;span class="cb3"&gt;DatabasePath&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;catch&lt;/span&gt; (&lt;span class="cb3"&gt;System&lt;/span&gt;.&lt;span class="cb3"&gt;Runtime&lt;/span&gt;.&lt;span class="cb3"&gt;InteropServices&lt;/span&gt;.&lt;span class="cb2"&gt;COMException&lt;/span&gt; &lt;span class="cb3"&gt;ex&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb2"&gt;Console&lt;/span&gt;.&lt;span class="cb3"&gt;WriteLine&lt;/span&gt;(&lt;span class="cb4"&gt;"There was a problem adding the database."&lt;/span&gt; + &lt;span class="cb3"&gt;ex&lt;/span&gt;.&lt;span class="cb3"&gt;ToString&lt;/span&gt;());&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;return&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;CreateFields&lt;/span&gt;();&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb2"&gt;XmlDocument&lt;/span&gt; &lt;span class="cb3"&gt;ImportedFiles&lt;/span&gt; = &lt;span class="cb1"&gt;new&lt;/span&gt; &lt;span class="cb2"&gt;XmlDocument&lt;/span&gt;();&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;ImportedFiles&lt;/span&gt;.&lt;span class="cb3"&gt;Load&lt;/span&gt;(&lt;span class="cb3"&gt;XmlFilePath&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;foreach&lt;/span&gt; (&lt;span class="cb2"&gt;XmlNode&lt;/span&gt; &lt;span class="cb3"&gt;documentNode&lt;/span&gt; &lt;span class="cb1"&gt;in&lt;/span&gt; &lt;span class="cb3"&gt;ImportedFiles&lt;/span&gt;.&lt;span class="cb3"&gt;SelectNodes&lt;/span&gt;(&lt;span class="cb4"&gt;"/Documents/*"&lt;/span&gt;))&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;AddDocumentToDatabase&lt;/span&gt;(&lt;span class="cb3"&gt;documentNode&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb6"&gt;///&lt;/span&gt;&lt;span class="cb5"&gt; &lt;/span&gt;&lt;span class="cb6"&gt;&amp;lt;param name="documentNode"&amp;gt;&lt;/span&gt;&lt;span class="cb5"&gt;Node in the XML file describing the document to be added&lt;/span&gt;&lt;span class="cb6"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;private&lt;/span&gt; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb1"&gt;void&lt;/span&gt; &lt;span class="cb3"&gt;AddDocumentToDatabase&lt;/span&gt;(&lt;span class="cb2"&gt;XmlNode&lt;/span&gt; &lt;span class="cb3"&gt;documentNode&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;string&lt;/span&gt; &lt;span class="cb3"&gt;documentName&lt;/span&gt; = &lt;span class="cb3"&gt;documentNode&lt;/span&gt;[&lt;span class="cb4"&gt;"DocumentName"&lt;/span&gt;].&lt;span class="cb3"&gt;InnerText&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;string&lt;/span&gt; &lt;span class="cb3"&gt;sourcePath&lt;/span&gt; = &lt;span class="cb3"&gt;documentNode&lt;/span&gt;[&lt;span class="cb4"&gt;"ExportedFilePath"&lt;/span&gt;].&lt;span class="cb3"&gt;InnerText&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;string&lt;/span&gt; &lt;span class="cb3"&gt;databasePath&lt;/span&gt; = &lt;span class="cb3"&gt;documentNode&lt;/span&gt;[&lt;span class="cb4"&gt;"DatabasePath"&lt;/span&gt;].&lt;span class="cb3"&gt;InnerText&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb2"&gt;DateTime&lt;/span&gt; &lt;span class="cb3"&gt;fileDate&lt;/span&gt; = &lt;span class="cb2"&gt;Convert&lt;/span&gt;.&lt;span class="cb3"&gt;ToDateTime&lt;/span&gt;(&lt;span class="cb3"&gt;documentNode&lt;/span&gt;[&lt;span class="cb4"&gt;"FileDate"&lt;/span&gt;].&lt;span class="cb3"&gt;InnerText&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb2"&gt;DateTime&lt;/span&gt; &lt;span class="cb3"&gt;loanDate&lt;/span&gt; = &lt;span class="cb2"&gt;Convert&lt;/span&gt;.&lt;span class="cb3"&gt;ToDateTime&lt;/span&gt;(&lt;span class="cb3"&gt;documentNode&lt;/span&gt;[&lt;span class="cb4"&gt;"LoanDate"&lt;/span&gt;].&lt;span class="cb3"&gt;InnerText&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;string&lt;/span&gt; &lt;span class="cb3"&gt;loanAmount&lt;/span&gt; = &lt;span class="cb3"&gt;documentNode&lt;/span&gt;[&lt;span class="cb4"&gt;"LoanAmount"&lt;/span&gt;].&lt;span class="cb3"&gt;InnerText&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;Alchemy&lt;/span&gt;.&lt;span class="cb2"&gt;Item&lt;/span&gt; &lt;span class="cb3"&gt;newItem&lt;/span&gt; = &lt;span class="cb3"&gt;auDB&lt;/span&gt;.&lt;span class="cb3"&gt;Root&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;Alchemy&lt;/span&gt;.&lt;span class="cb2"&gt;Item&lt;/span&gt; &lt;span class="cb3"&gt;Folder&lt;/span&gt; = &lt;span class="cb3"&gt;auDB&lt;/span&gt;.&lt;span class="cb3"&gt;GetItemByTitlePath&lt;/span&gt;(&lt;span class="cb3"&gt;databasePath&lt;/span&gt;, &lt;span class="cb3"&gt;auDB&lt;/span&gt;.&lt;span class="cb3"&gt;Root&lt;/span&gt;) ?? &lt;span class="cb3"&gt;CreateFolder&lt;/span&gt;(&lt;span class="cb3"&gt;databasePath&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;newItem&lt;/span&gt; = &lt;span class="cb3"&gt;Folder&lt;/span&gt;.&lt;span class="cb3"&gt;CreateItem&lt;/span&gt;(&lt;span class="cb3"&gt;Alchemy&lt;/span&gt;.&lt;span class="cb2"&gt;AuPosEnum&lt;/span&gt;.&lt;span class="cb3"&gt;auPosLastChild&lt;/span&gt;, &lt;span class="cb3"&gt;sourcePath&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;newItem&lt;/span&gt;.&lt;span class="cb3"&gt;set_Field&lt;/span&gt;(&lt;span class="cb4"&gt;"Document Title"&lt;/span&gt;, &lt;span class="cb3"&gt;documentName&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;newItem&lt;/span&gt;.&lt;span class="cb3"&gt;set_Field&lt;/span&gt;(&lt;span class="cb4"&gt;"ExportedFilePath"&lt;/span&gt;, &lt;span class="cb3"&gt;sourcePath&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;newItem&lt;/span&gt;.&lt;span class="cb3"&gt;set_Field&lt;/span&gt;(&lt;span class="cb4"&gt;"FileDate"&lt;/span&gt;, &lt;span class="cb3"&gt;fileDate&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;newItem&lt;/span&gt;.&lt;span class="cb3"&gt;set_Field&lt;/span&gt;(&lt;span class="cb4"&gt;"LoanDate"&lt;/span&gt;, &lt;span class="cb3"&gt;loanDate&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;newItem&lt;/span&gt;.&lt;span class="cb3"&gt;set_Field&lt;/span&gt;(&lt;span class="cb4"&gt;"LoanAmount"&lt;/span&gt;, &lt;span class="cb3"&gt;loanAmount&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb6"&gt;///&lt;/span&gt;&lt;span class="cb5"&gt; &lt;/span&gt;&lt;span class="cb6"&gt;&amp;lt;param name="FolderName"&amp;gt;&lt;/span&gt;&lt;span class="cb5"&gt;Name of the folder where the item is being added&lt;/span&gt;&lt;span class="cb6"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb6"&gt;///&lt;/span&gt;&lt;span class="cb5"&gt; &lt;/span&gt;&lt;span class="cb6"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span class="cb5"&gt;The folder that is created&lt;/span&gt;&lt;span class="cb6"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb3"&gt;Alchemy&lt;/span&gt;.&lt;span class="cb2"&gt;Item&lt;/span&gt; &lt;span class="cb3"&gt;CreateFolder&lt;/span&gt;(&lt;span class="cb1"&gt;string&lt;/span&gt; &lt;span class="cb3"&gt;FolderName&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;Alchemy&lt;/span&gt;.&lt;span class="cb2"&gt;Item&lt;/span&gt; &lt;span class="cb3"&gt;Folder&lt;/span&gt; = &lt;span class="cb3"&gt;auDB&lt;/span&gt;.&lt;span class="cb3"&gt;Root&lt;/span&gt;.&lt;span class="cb3"&gt;CreateFolder&lt;/span&gt;(&lt;span class="cb3"&gt;Alchemy&lt;/span&gt;.&lt;span class="cb2"&gt;AuPosEnum&lt;/span&gt;.&lt;span class="cb3"&gt;auPosLastChild&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;Folder&lt;/span&gt;.&lt;span class="cb3"&gt;set_Field&lt;/span&gt;(&lt;span class="cb4"&gt;"Folder Title"&lt;/span&gt;, &lt;span class="cb3"&gt;FolderName&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;return&lt;/span&gt; &lt;span class="cb3"&gt;Folder&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb1"&gt;bool&lt;/span&gt; &lt;span class="cb3"&gt;GetParameters&lt;/span&gt;(&lt;span class="cb1"&gt;string&lt;/span&gt;[] &lt;span class="cb3"&gt;args&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;bool&lt;/span&gt; &lt;span class="cb3"&gt;returnValue&lt;/span&gt; = &lt;span class="cb1"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;if&lt;/span&gt; (&lt;span class="cb3"&gt;args&lt;/span&gt;.&lt;span class="cb3"&gt;Length&lt;/span&gt;==&lt;span class="cb7"&gt;2&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;XmlFilePath&lt;/span&gt; = &lt;span class="cb3"&gt;args&lt;/span&gt;[&lt;span class="cb7"&gt;0&lt;/span&gt;];&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;DatabasePath&lt;/span&gt; = &lt;span class="cb3"&gt;args&lt;/span&gt;[&lt;span class="cb7"&gt;1&lt;/span&gt;];&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;returnValue&lt;/span&gt; = &lt;span class="cb1"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb2"&gt;Console&lt;/span&gt;.&lt;span class="cb3"&gt;WriteLine&lt;/span&gt;(&lt;span class="cb4"&gt;"GetParameters: The correct syntax for this tool is BulkImport XmlFilePath DatabasePath"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;return&lt;/span&gt; &lt;span class="cb3"&gt;returnValue&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb6"&gt;///&lt;/span&gt;&lt;span class="cb5"&gt; &lt;/span&gt;&lt;span class="cb6"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb6"&gt;///&lt;/span&gt;&lt;span class="cb5"&gt; If the fields in the database do not already exist, create them.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb6"&gt;///&lt;/span&gt;&lt;span class="cb5"&gt; &lt;/span&gt;&lt;span class="cb6"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb1"&gt;void&lt;/span&gt; &lt;span class="cb3"&gt;CreateFields&lt;/span&gt;()&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;string&lt;/span&gt;[] &lt;span class="cb3"&gt;XmlFields&lt;/span&gt; = { &lt;span class="cb4"&gt;"ExportedFilePath"&lt;/span&gt;, &lt;span class="cb4"&gt;"FileDate"&lt;/span&gt;,&lt;span class="cb4"&gt;"LoanDate"&lt;/span&gt;,&lt;span class="cb4"&gt;"LoanAmount"&lt;/span&gt; };&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;foreach&lt;/span&gt; (&lt;span class="cb1"&gt;string&lt;/span&gt; &lt;span class="cb3"&gt;fieldName&lt;/span&gt; &lt;span class="cb1"&gt;in&lt;/span&gt; &lt;span class="cb3"&gt;XmlFields&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;bool&lt;/span&gt; &lt;span class="cb3"&gt;fieldExists&lt;/span&gt; = &lt;span class="cb1"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;foreach&lt;/span&gt; (&lt;span class="cb3"&gt;Alchemy&lt;/span&gt;.&lt;span class="cb2"&gt;Field&lt;/span&gt; &lt;span class="cb3"&gt;dbField&lt;/span&gt; &lt;span class="cb1"&gt;in&lt;/span&gt; &lt;span class="cb3"&gt;auDB&lt;/span&gt;.&lt;span class="cb3"&gt;Fields&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;if&lt;/span&gt; (&lt;span class="cb3"&gt;fieldName&lt;/span&gt; == &lt;span class="cb3"&gt;dbField&lt;/span&gt;.&lt;span class="cb3"&gt;Name&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;fieldExists&lt;/span&gt; = &lt;span class="cb1"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;if&lt;/span&gt; (!&lt;span class="cb3"&gt;fieldExists&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;Alchemy&lt;/span&gt;.&lt;span class="cb2"&gt;AuDataTypeEnum&lt;/span&gt; &lt;span class="cb3"&gt;dtEnum&lt;/span&gt; = &lt;span class="cb3"&gt;Alchemy&lt;/span&gt;.&lt;span class="cb2"&gt;AuDataTypeEnum&lt;/span&gt;.&lt;span class="cb3"&gt;auDataText&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;if&lt;/span&gt; (&lt;span class="cb3"&gt;fieldName&lt;/span&gt;.&lt;span class="cb3"&gt;ToLower&lt;/span&gt;().&lt;span class="cb3"&gt;Contains&lt;/span&gt;(&lt;span class="cb4"&gt;"date"&lt;/span&gt;))&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;dtEnum&lt;/span&gt; = &lt;span class="cb3"&gt;Alchemy&lt;/span&gt;.&lt;span class="cb2"&gt;AuDataTypeEnum&lt;/span&gt;.&lt;span class="cb3"&gt;auDataDate&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;auDB&lt;/span&gt;.&lt;span class="cb3"&gt;Fields&lt;/span&gt;.&lt;span class="cb3"&gt;Add&lt;/span&gt;(&lt;span class="cb3"&gt;fieldName&lt;/span&gt;, &lt;span class="cb3"&gt;dtEnum&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;}&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The only step I don't do is a build, but that would have been easy enough to add as well. &lt;/p&gt;
&lt;p&gt;The&amp;nbsp;Test XML Creation tool was also an easy&amp;nbsp;little app, but potentially very useful for me in the future, so I am posting that here too. Whats interesting about this is the randomness. I come up with random dates, names, and folder names. Nothing too complex, but enough to keep it interesting.&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class="cf"&gt;&lt;pre class="cl"&gt;&lt;span class="cb1"&gt;class&lt;/span&gt; &lt;span class="cb2"&gt;XMLCreate&lt;/span&gt;&lt;/pre&gt;&lt;pre class="cl"&gt;{&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb1"&gt;void&lt;/span&gt; &lt;span class="cb3"&gt;Main&lt;/span&gt;(&lt;span class="cb1"&gt;string&lt;/span&gt;[] &lt;span class="cb3"&gt;args&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;if&lt;/span&gt; (&lt;span class="cb3"&gt;args&lt;/span&gt;.&lt;span class="cb3"&gt;Length&lt;/span&gt; &amp;gt; &lt;span class="cb4"&gt;0&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;int&lt;/span&gt; &lt;span class="cb3"&gt;count&lt;/span&gt; = &lt;span class="cb4"&gt;0&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;count&lt;/span&gt; = &lt;span class="cb2"&gt;Convert&lt;/span&gt;.&lt;span class="cb3"&gt;ToInt32&lt;/span&gt;(&lt;span class="cb3"&gt;args&lt;/span&gt;[&lt;span class="cb4"&gt;0&lt;/span&gt;]);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb2"&gt;XmlDocument&lt;/span&gt; &lt;span class="cb3"&gt;xDoc&lt;/span&gt; = &lt;span class="cb1"&gt;new&lt;/span&gt; &lt;span class="cb2"&gt;XmlDocument&lt;/span&gt;();&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb2"&gt;XmlDeclaration&lt;/span&gt; &lt;span class="cb3"&gt;xDeclare&lt;/span&gt; = &lt;span class="cb3"&gt;xDoc&lt;/span&gt;.&lt;span class="cb3"&gt;CreateXmlDeclaration&lt;/span&gt;(&lt;span class="cb5"&gt;"1.0"&lt;/span&gt;, &lt;span class="cb5"&gt;"utf-8"&lt;/span&gt;, &lt;span class="cb1"&gt;null&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb2"&gt;XmlElement&lt;/span&gt; &lt;span class="cb3"&gt;rootNode&lt;/span&gt; = &lt;span class="cb3"&gt;xDoc&lt;/span&gt;.&lt;span class="cb3"&gt;CreateElement&lt;/span&gt;(&lt;span class="cb5"&gt;"Documents"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;xDoc&lt;/span&gt;.&lt;span class="cb3"&gt;InsertBefore&lt;/span&gt;(&lt;span class="cb3"&gt;xDeclare&lt;/span&gt;, &lt;span class="cb3"&gt;xDoc&lt;/span&gt;.&lt;span class="cb3"&gt;DocumentElement&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;xDoc&lt;/span&gt;.&lt;span class="cb3"&gt;AppendChild&lt;/span&gt;(&lt;span class="cb3"&gt;rootNode&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb2"&gt;Random&lt;/span&gt; &lt;span class="cb3"&gt;rnd&lt;/span&gt; = &lt;span class="cb1"&gt;new&lt;/span&gt; &lt;span class="cb2"&gt;Random&lt;/span&gt;(&lt;span class="cb2"&gt;DateTime&lt;/span&gt;.&lt;span class="cb3"&gt;Now&lt;/span&gt;.&lt;span class="cb3"&gt;Second&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;for&lt;/span&gt; (&lt;span class="cb1"&gt;int&lt;/span&gt; &lt;span class="cb3"&gt;i&lt;/span&gt; = &lt;span class="cb4"&gt;0&lt;/span&gt;; &lt;span class="cb3"&gt;i&lt;/span&gt; &amp;lt; &lt;span class="cb3"&gt;count&lt;/span&gt;; &lt;span class="cb3"&gt;i&lt;/span&gt;++)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb2"&gt;XmlElement&lt;/span&gt; &lt;span class="cb3"&gt;documentNode&lt;/span&gt; = &lt;span class="cb3"&gt;CreateDocNode&lt;/span&gt;(&lt;span class="cb3"&gt;xDoc&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;CreateDocName&lt;/span&gt;(&lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb3"&gt;rnd&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;CreateFilePath&lt;/span&gt;(&lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb3"&gt;rnd&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;CreateDatabasePath&lt;/span&gt;(&lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb3"&gt;rnd&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;CreateFileDate&lt;/span&gt;(&lt;span class="cb3"&gt;xDoc&lt;/span&gt;,&lt;span class="cb3"&gt;documentNode&lt;/span&gt;,&lt;span class="cb3"&gt;rnd&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;CreateLoanDate&lt;/span&gt;(&lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb3"&gt;rnd&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;CreateLoanAmount&lt;/span&gt;(&lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb3"&gt;rnd&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;xDoc&lt;/span&gt;.&lt;span class="cb3"&gt;Save&lt;/span&gt;(&lt;span class="cb5"&gt;"c:\\testxml.xml"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;private&lt;/span&gt; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb1"&gt;void&lt;/span&gt; &lt;span class="cb3"&gt;CreateNode&lt;/span&gt;(&lt;span class="cb2"&gt;XmlDocument&lt;/span&gt; &lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb2"&gt;XmlElement&lt;/span&gt; &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb1"&gt;string&lt;/span&gt; &lt;span class="cb3"&gt;elementName&lt;/span&gt;, &lt;span class="cb1"&gt;string&lt;/span&gt; &lt;span class="cb3"&gt;elementText&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb2"&gt;XmlElement&lt;/span&gt; &lt;span class="cb3"&gt;NodeName&lt;/span&gt; = &lt;span class="cb3"&gt;xDoc&lt;/span&gt;.&lt;span class="cb3"&gt;CreateElement&lt;/span&gt;(&lt;span class="cb3"&gt;elementName&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb2"&gt;XmlText&lt;/span&gt; &lt;span class="cb3"&gt;NodeText&lt;/span&gt; = &lt;span class="cb3"&gt;xDoc&lt;/span&gt;.&lt;span class="cb3"&gt;CreateTextNode&lt;/span&gt;(&lt;span class="cb3"&gt;elementText&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;documentNode&lt;/span&gt;.&lt;span class="cb3"&gt;AppendChild&lt;/span&gt;(&lt;span class="cb3"&gt;NodeName&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;NodeName&lt;/span&gt;.&lt;span class="cb3"&gt;AppendChild&lt;/span&gt;(&lt;span class="cb3"&gt;NodeText&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;private&lt;/span&gt; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb1"&gt;void&lt;/span&gt; &lt;span class="cb3"&gt;CreateLoanAmount&lt;/span&gt;(&lt;span class="cb2"&gt;XmlDocument&lt;/span&gt; &lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb2"&gt;XmlElement&lt;/span&gt; &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb2"&gt;Random&lt;/span&gt; &lt;span class="cb3"&gt;rnd&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb2"&gt;Double&lt;/span&gt; &lt;span class="cb3"&gt;randomLoanAmount&lt;/span&gt; = &lt;span class="cb3"&gt;rnd&lt;/span&gt;.&lt;span class="cb3"&gt;NextDouble&lt;/span&gt;() * &lt;span class="cb3"&gt;rnd&lt;/span&gt;.&lt;span class="cb3"&gt;Next&lt;/span&gt;(&lt;span class="cb4"&gt;1000&lt;/span&gt;, &lt;span class="cb4"&gt;100000&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;CreateNode&lt;/span&gt;(&lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb5"&gt;"LoanAmount"&lt;/span&gt;, &lt;span class="cb3"&gt;randomLoanAmount&lt;/span&gt;.&lt;span class="cb3"&gt;ToString&lt;/span&gt;(&lt;span class="cb5"&gt;"#.00"&lt;/span&gt;));&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;private&lt;/span&gt; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb1"&gt;void&lt;/span&gt; &lt;span class="cb3"&gt;CreateLoanDate&lt;/span&gt;(&lt;span class="cb2"&gt;XmlDocument&lt;/span&gt; &lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb2"&gt;XmlElement&lt;/span&gt; &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb2"&gt;Random&lt;/span&gt; &lt;span class="cb3"&gt;rnd&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb2"&gt;DateTime&lt;/span&gt; &lt;span class="cb3"&gt;randomDate&lt;/span&gt; = &lt;span class="cb1"&gt;new&lt;/span&gt; &lt;span class="cb2"&gt;DateTime&lt;/span&gt;(&lt;span class="cb3"&gt;rnd&lt;/span&gt;.&lt;span class="cb3"&gt;Next&lt;/span&gt;(&lt;span class="cb4"&gt;1995&lt;/span&gt;, &lt;span class="cb4"&gt;2007&lt;/span&gt;), &lt;span class="cb3"&gt;rnd&lt;/span&gt;.&lt;span class="cb3"&gt;Next&lt;/span&gt;(&lt;span class="cb4"&gt;1&lt;/span&gt;, &lt;span class="cb4"&gt;12&lt;/span&gt;), &lt;span class="cb3"&gt;rnd&lt;/span&gt;.&lt;span class="cb3"&gt;Next&lt;/span&gt;(&lt;span class="cb4"&gt;1&lt;/span&gt;, &lt;span class="cb4"&gt;28&lt;/span&gt;));&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;CreateNode&lt;/span&gt;(&lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb5"&gt;"LoanDate"&lt;/span&gt;, &lt;span class="cb3"&gt;randomDate&lt;/span&gt;.&lt;span class="cb3"&gt;ToString&lt;/span&gt;(&lt;span class="cb5"&gt;"MM/dd/yy"&lt;/span&gt;));&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;private&lt;/span&gt; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb1"&gt;void&lt;/span&gt; &lt;span class="cb3"&gt;CreateFileDate&lt;/span&gt;(&lt;span class="cb2"&gt;XmlDocument&lt;/span&gt; &lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb2"&gt;XmlElement&lt;/span&gt; &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb2"&gt;Random&lt;/span&gt; &lt;span class="cb3"&gt;rnd&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb2"&gt;DateTime&lt;/span&gt; &lt;span class="cb3"&gt;randomDate&lt;/span&gt; = &lt;span class="cb1"&gt;new&lt;/span&gt; &lt;span class="cb2"&gt;DateTime&lt;/span&gt;(&lt;span class="cb3"&gt;rnd&lt;/span&gt;.&lt;span class="cb3"&gt;Next&lt;/span&gt;(&lt;span class="cb4"&gt;1995&lt;/span&gt;, &lt;span class="cb4"&gt;2007&lt;/span&gt;), &lt;span class="cb3"&gt;rnd&lt;/span&gt;.&lt;span class="cb3"&gt;Next&lt;/span&gt;(&lt;span class="cb4"&gt;1&lt;/span&gt;, &lt;span class="cb4"&gt;12&lt;/span&gt;), &lt;span class="cb3"&gt;rnd&lt;/span&gt;.&lt;span class="cb3"&gt;Next&lt;/span&gt;(&lt;span class="cb4"&gt;1&lt;/span&gt;, &lt;span class="cb4"&gt;28&lt;/span&gt;));&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;CreateNode&lt;/span&gt;(&lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb5"&gt;"FileDate"&lt;/span&gt;, &lt;span class="cb3"&gt;randomDate&lt;/span&gt;.&lt;span class="cb3"&gt;ToString&lt;/span&gt;(&lt;span class="cb5"&gt;"MM/dd/yy"&lt;/span&gt;));&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;private&lt;/span&gt; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb1"&gt;void&lt;/span&gt; &lt;span class="cb3"&gt;CreateDatabasePath&lt;/span&gt;(&lt;span class="cb2"&gt;XmlDocument&lt;/span&gt; &lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb2"&gt;XmlElement&lt;/span&gt; &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb2"&gt;Random&lt;/span&gt; &lt;span class="cb3"&gt;rnd&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;string&lt;/span&gt;[] &lt;span class="cb3"&gt;cityNames&lt;/span&gt; = &lt;span class="cb1"&gt;new&lt;/span&gt; &lt;span class="cb1"&gt;string&lt;/span&gt;[] { &lt;span class="cb5"&gt;"Seattle"&lt;/span&gt;, &lt;span class="cb5"&gt;"Amsterdam"&lt;/span&gt;, &lt;span class="cb5"&gt;"Dublin"&lt;/span&gt;, &lt;span class="cb5"&gt;"Cairo"&lt;/span&gt; };&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;string&lt;/span&gt; &lt;span class="cb3"&gt;randomDatabasePath&lt;/span&gt; = &lt;span class="cb3"&gt;cityNames&lt;/span&gt;[&lt;span class="cb3"&gt;rnd&lt;/span&gt;.&lt;span class="cb3"&gt;Next&lt;/span&gt;(&lt;span class="cb4"&gt;1&lt;/span&gt;, &lt;span class="cb3"&gt;cityNames&lt;/span&gt;.&lt;span class="cb3"&gt;Length&lt;/span&gt;)];&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;CreateNode&lt;/span&gt;(&lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb5"&gt;"DatabasePath"&lt;/span&gt;, &lt;span class="cb3"&gt;randomDatabasePath&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;private&lt;/span&gt; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb1"&gt;void&lt;/span&gt; &lt;span class="cb3"&gt;CreateFilePath&lt;/span&gt;(&lt;span class="cb2"&gt;XmlDocument&lt;/span&gt; &lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb2"&gt;XmlElement&lt;/span&gt; &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb2"&gt;Random&lt;/span&gt; &lt;span class="cb3"&gt;rnd&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;string&lt;/span&gt; &lt;span class="cb3"&gt;randomFilePath&lt;/span&gt; = &lt;span class="cb5"&gt;"c:\\test\\"&lt;/span&gt; + &lt;span class="cb3"&gt;rnd&lt;/span&gt;.&lt;span class="cb3"&gt;Next&lt;/span&gt;(&lt;span class="cb4"&gt;1&lt;/span&gt;, &lt;span class="cb4"&gt;10&lt;/span&gt;).&lt;span class="cb3"&gt;ToString&lt;/span&gt;() + &lt;span class="cb5"&gt;".tif"&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;CreateNode&lt;/span&gt;(&lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb5"&gt;"ExportedFilePath"&lt;/span&gt;, &lt;span class="cb3"&gt;randomFilePath&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;private&lt;/span&gt; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb2"&gt;XmlElement&lt;/span&gt; &lt;span class="cb3"&gt;CreateDocNode&lt;/span&gt;(&lt;span class="cb2"&gt;XmlDocument&lt;/span&gt; &lt;span class="cb3"&gt;xDoc&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb2"&gt;XmlElement&lt;/span&gt; &lt;span class="cb3"&gt;docNode&lt;/span&gt; = &lt;span class="cb3"&gt;xDoc&lt;/span&gt;.&lt;span class="cb3"&gt;CreateElement&lt;/span&gt;(&lt;span class="cb5"&gt;"Document"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;xDoc&lt;/span&gt;.&lt;span class="cb3"&gt;DocumentElement&lt;/span&gt;.&lt;span class="cb3"&gt;PrependChild&lt;/span&gt;(&lt;span class="cb3"&gt;docNode&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;return&lt;/span&gt; &lt;span class="cb3"&gt;docNode&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;private&lt;/span&gt; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb1"&gt;void&lt;/span&gt; &lt;span class="cb3"&gt;CreateDocName&lt;/span&gt;(&lt;span class="cb2"&gt;XmlDocument&lt;/span&gt; &lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb2"&gt;XmlElement&lt;/span&gt; &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb2"&gt;Random&lt;/span&gt; &lt;span class="cb3"&gt;rnd&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;char&lt;/span&gt;[] &lt;span class="cb3"&gt;availChars&lt;/span&gt; = &lt;span class="cb5"&gt;"abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ123456789"&lt;/span&gt;.&lt;span class="cb3"&gt;ToCharArray&lt;/span&gt;();&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;string&lt;/span&gt; &lt;span class="cb3"&gt;randomWord&lt;/span&gt; = &lt;span class="cb5"&gt;""&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;char&lt;/span&gt; &lt;span class="cb3"&gt;ch&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;for&lt;/span&gt; (&lt;span class="cb1"&gt;int&lt;/span&gt; &lt;span class="cb3"&gt;i&lt;/span&gt; = &lt;span class="cb4"&gt;0&lt;/span&gt;; &lt;span class="cb3"&gt;i&lt;/span&gt; &amp;lt; &lt;span class="cb3"&gt;rnd&lt;/span&gt;.&lt;span class="cb3"&gt;Next&lt;/span&gt;(&lt;span class="cb4"&gt;10&lt;/span&gt;, &lt;span class="cb4"&gt;15&lt;/span&gt;); &lt;span class="cb3"&gt;i&lt;/span&gt;++)&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;int&lt;/span&gt; &lt;span class="cb3"&gt;randomCharPosition&lt;/span&gt; = &lt;span class="cb3"&gt;rnd&lt;/span&gt;.&lt;span class="cb3"&gt;Next&lt;/span&gt;(&lt;span class="cb4"&gt;1&lt;/span&gt;, &lt;span class="cb3"&gt;availChars&lt;/span&gt;.&lt;span class="cb3"&gt;Length&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;randomWord&lt;/span&gt; += &lt;span class="cb3"&gt;availChars&lt;/span&gt;[&lt;span class="cb3"&gt;randomCharPosition&lt;/span&gt;];&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;CreateNode&lt;/span&gt;(&lt;span class="cb3"&gt;xDoc&lt;/span&gt;, &lt;span class="cb3"&gt;documentNode&lt;/span&gt;, &lt;span class="cb5"&gt;"DocumentName"&lt;/span&gt;, &lt;span class="cb3"&gt;randomWord&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="cl"&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;img src="http://www.captaris.com/DeveloperProgram/aggbug.aspx?PostID=12461" width="1" height="1"&gt;</description><category domain="http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/archive/category/1023.aspx">alchemy</category><category domain="http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/archive/category/1025.aspx">developer</category></item><item><title>Captaris Workflow - Getting the Overdue Event to Fire</title><link>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/archive/2007/05/03/12418.aspx</link><pubDate>Thu, 03 May 2007 21:52:00 GMT</pubDate><guid isPermaLink="false">04a5fdf5-6b27-4ab8-a549-ff01110aea12:12418</guid><dc:creator>TrainerMatt</dc:creator><slash:comments>2</slash:comments><comments>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/comments/12418.aspx</comments><wfw:commentRss>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/commentrss.aspx?PostID=12418</wfw:commentRss><wfw:comment>http://www.captaris.com/DeveloperProgram/blogs/rsscomments/12418.aspx</wfw:comment><description>&lt;p&gt;One of the common questions I get from Captaris customers is how to get the overdue event to fire. The reason this question comes up is that some of our method names are downright confusing, and I think we changed something here because it doesn't look the same as I remember it.&lt;/p&gt; &lt;p&gt;In Captaris Workflow, there are a series of events that fire on any given task: Ready, Execute, Overdue, Failed, Reset, and Complete. Ready fires when the task is ready, but nothing has been done. Execute means a task has started but not necessarily finished. Overdue means the time alloted to complete the task has passed, but its not complete yet. Failed means something went wrong. Reset happens when the task is reset by the owner or administrator. And Complete means the task is complete and moves on to the next. At each one of these events, something can happen...anything you want.&lt;/p&gt; &lt;p&gt;There are two ways to set when that overdue event fires. By default, the task becomes overdue 1 year after it becomes ready. Usually you will want to change that. The easiest way is to drag the Set Overdue Date custom action on to the Ready event of the task and set it to the relative date it will be overdue. This will be Now plus some amount of time. There is no coding required to do this. But sometimes you will want a bit more flexibility that what this offers. For that, use the SetReminderForOverdueEvent method. It expects a DateTime, so just give it a time for when the overdue event should fire.&lt;/p&gt; 

&lt;div class="cf"&gt;
&lt;pre class="cl"&gt;&lt;span class="cb1"&gt;public&lt;/span&gt; &lt;span class="cb1"&gt;void&lt;/span&gt; &lt;span class="cb2"&gt;secondTask_ready&lt;/span&gt;(&lt;span class="cb1"&gt;object&lt;/span&gt; &lt;span class="cb2"&gt;data&lt;/span&gt;)&lt;/pre&gt;
&lt;pre class="cl"&gt;{&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb2"&gt;SecondTask&lt;/span&gt;.&lt;span class="cb2"&gt;SetReminderForOverdueEvent&lt;/span&gt;(&lt;span class="cb3"&gt;DateTime&lt;/span&gt;.&lt;span class="cb2"&gt;Now&lt;/span&gt;.&lt;span class="cb2"&gt;AddSeconds&lt;/span&gt;(&lt;span class="cb4"&gt;30&lt;/span&gt;));&lt;/pre&gt;
&lt;pre class="cl"&gt;}&lt;/pre&gt;
&lt;/div&gt;&lt;img src="http://www.captaris.com/DeveloperProgram/aggbug.aspx?PostID=12418" width="1" height="1"&gt;</description><category domain="http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/archive/category/1022.aspx">workflow</category><category domain="http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/archive/category/1025.aspx">developer</category></item><item><title>A Simple Search Application for Alchemy</title><link>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/archive/2007/05/03/12417.aspx</link><pubDate>Thu, 03 May 2007 21:42:08 GMT</pubDate><guid isPermaLink="false">04a5fdf5-6b27-4ab8-a549-ff01110aea12:12417</guid><dc:creator>TrainerMatt</dc:creator><slash:comments>1</slash:comments><comments>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/comments/12417.aspx</comments><wfw:commentRss>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/commentrss.aspx?PostID=12417</wfw:commentRss><wfw:comment>http://www.captaris.com/DeveloperProgram/blogs/rsscomments/12417.aspx</wfw:comment><description>&lt;p&gt;One of my students in a Dubai Alchemy SDK class asked about creating an extremely simple search client for Alchemy. Out of the box, Alchemy Search can be fairly easy to use, but there are still a lot of buttons that one could press. And if all you want is a simple search to show all the documents across all your repositories it may be a bit too much. So I created what has to be one of the simplest UIs possible. Since I can't seem to post pictures on this blog, I have to describe it...Imagine a window with 3 controls: top left is a textbox. Below that is a listbox and to the right of both is a empty panel.&lt;/p&gt; &lt;p&gt;As you type in the search box at the top left, results start showing up in the list below then you just click on a document and you get a preview in the viewer. &lt;/p&gt; &lt;p&gt;You can continue typing and your search is refined. No need to press enter. So how did I get here? Well, its just a simple Windows form application with a SplitContainer.&amp;nbsp;Whenever the text in the text box changes, it does the search again. One of the benefits of Alchemy is that the search is extremely quick, so this app is amazingly quick.&lt;/p&gt; &lt;p&gt;When I do the search I have to ensure that the text doesn't end with &lt;em&gt;and&lt;/em&gt; or &lt;em&gt;or&lt;/em&gt;. If it does, then don't pass it to the search because those are keywords we use. Then I clear the textbox and clear the query. The search itself is easy:&lt;/p&gt;&lt;pre&gt;auQuery.AddFullTextQuery(tbSearch.Text);
auQuery.SearchGroup(auSGroup);

&lt;span&gt;if&lt;/span&gt; (auQuery.Results.Count &amp;gt; &lt;span&gt;0&lt;/span&gt;)
{
    &lt;span&gt;foreach&lt;/span&gt; (Alchemy.Result aResult &lt;span&gt;in&lt;/span&gt; auQuery.Results)
    {
        &lt;span&gt;foreach&lt;/span&gt; (Alchemy.Item aItem &lt;span&gt;in&lt;/span&gt; aResult.Items)
        {
            lbResults.Items.Add(aItem.Title);
        }
    }
}
&lt;/pre&gt;
&lt;p&gt;This also populates the listbox. Since I wanted to make it as simple as possible, I don't even show database names.&amp;nbsp;Then when I click on an item, I tell the Viewer to ViewItem(). It took all of 20 minutes to write ugly code while exhausted. &lt;/p&gt;&lt;img src="http://www.captaris.com/DeveloperProgram/aggbug.aspx?PostID=12417" width="1" height="1"&gt;</description><category domain="http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/archive/category/1023.aspx">alchemy</category><category domain="http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/archive/category/1025.aspx">developer</category></item><item><title>Introductory Post</title><link>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/archive/2007/05/03/12415.aspx</link><pubDate>Thu, 03 May 2007 07:22:08 GMT</pubDate><guid isPermaLink="false">04a5fdf5-6b27-4ab8-a549-ff01110aea12:12415</guid><dc:creator>TrainerMatt</dc:creator><slash:comments>0</slash:comments><comments>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/comments/12415.aspx</comments><wfw:commentRss>http://www.captaris.com/DeveloperProgram/blogs/trainermatt_blog/commentrss.aspx?PostID=12415</wfw:commentRss><wfw:comment>http://www.captaris.com/DeveloperProgram/blogs/rsscomments/12415.aspx</wfw:comment><description>&lt;p&gt;Hello there, My name is Matt Williams and this is my first posting on this blog site. Many of you know me, but some of you don't, especially the US-based customers. I own training for all three products outside of the US. This means that I deliver training for developers, admins, and users for Workflow, Rightfax, and Alchemy in places like Australia, Singapore, Croatia, Norway, and more. I am now&amp;nbsp;based in Vianen in the Netherlands, about 30 miles south of Amsterdam. When delivering those classes, I get some bizarre questions and I plan to answer some of them here for everyone to see. &lt;/p&gt; &lt;p&gt;I am not new to blogging as I have been doing this for a very long time&amp;nbsp;on &lt;a href="http://technovangelist.com/"&gt;technovangelist.com&lt;/a&gt; and mattweb.org before that. In fact, I was one of the first 4 or 5 public bloggers at Microsoft (before Scoble got there). My first blog post (same idea, but they weren't called blogs yet) was in 1997 or so and was about something stupid....I plan to have no stupid posts here. I will be moving some of the more relevant Captaris content from there to here and will make technovangelist more focused on personal stuff and general technology.&lt;/p&gt; &lt;p&gt;I am actually on vacation now in Cambodia (for more about that, visit &lt;a href="http://technovangelist.com/"&gt;technovangelist.com&lt;/a&gt;) so the posting will be light until next week. &lt;/p&gt;&lt;img src="http://www.captaris.com/DeveloperProgram/aggbug.aspx?PostID=12415" width="1" height="1"&gt;</description></item></channel></rss>