<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments for eric @ flux</title>
	<atom:link href="http://fluxstuff.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://fluxstuff.com</link>
	<description></description>
	<lastBuildDate>Fri, 30 Sep 2011 22:37:25 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>Comment on Flux Unit (functional, integration: make sure it works) Testing by Blogging at the speed of thought &#187; Invoking web services from your Flux workflow</title>
		<link>http://fluxstuff.com/2011/09/19/flux-unit-testing/#comment-43</link>
		<dc:creator><![CDATA[Blogging at the speed of thought &#187; Invoking web services from your Flux workflow]]></dc:creator>
		<pubDate>Fri, 30 Sep 2011 22:37:25 +0000</pubDate>
		<guid isPermaLink="false">http://fluxstuff.com/?p=42#comment-43</guid>
		<description><![CDATA[[...] Web Service which supports both SOAP and HTTP binding. I will be using Eric&#8217;s simple test framework to demonstrate the use of RestAction and WebServiceAction in your Flux [...]]]></description>
		<content:encoded><![CDATA[<p>[...] Web Service which supports both SOAP and HTTP binding. I will be using Eric&#8217;s simple test framework to demonstrate the use of RestAction and WebServiceAction in your Flux [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Initializing Flux in Java Code to Support Runtime Configuration Properties by Nick McDonald (Flux)</title>
		<link>http://fluxstuff.com/2011/09/26/initializing-flux-in-java-code-to-support-runtime-configuration-properties/#comment-42</link>
		<dc:creator><![CDATA[Nick McDonald (Flux)]]></dc:creator>
		<pubDate>Mon, 26 Sep 2011 22:21:51 +0000</pubDate>
		<guid isPermaLink="false">http://fluxstuff.com/?p=50#comment-42</guid>
		<description><![CDATA[Absolutely! To use the Tanuki wrapper, you&#039;ll just want to replace all instances of flux.Main in the wrapper.conf with the Java class that will be starting your engine. These lines usually look something like:

wrapper.app.parameter.1=flux.Main

To use a secured engine rather than unsecured, you&#039;ll want to make sure that you log in to the engine before creating / starting it in the code, like:

    LocalSecurity localSecurity = factory.makeLocalSecurity();
    localSecurity.login(engine, &quot;admin&quot;, &quot;admin&quot;);
    SecurityAdministrator securityAdministrator = engine.getSecurityAdministrator();

And you&#039;ll also want to enable remote access to the engine by calling:

    RemoteSecurity remoteSecurity = factory.makeRemoteSecurity(engineConfiguration, engine);

You&#039;ll also want to make sure you log out of the engine after starting it / setting up the runtime configuration:

    localSecurity.logout(engine);]]></description>
		<content:encoded><![CDATA[<p>Absolutely! To use the Tanuki wrapper, you&#8217;ll just want to replace all instances of flux.Main in the wrapper.conf with the Java class that will be starting your engine. These lines usually look something like:</p>
<p>wrapper.app.parameter.1=flux.Main</p>
<p>To use a secured engine rather than unsecured, you&#8217;ll want to make sure that you log in to the engine before creating / starting it in the code, like:</p>
<p>    LocalSecurity localSecurity = factory.makeLocalSecurity();<br />
    localSecurity.login(engine, &#8220;admin&#8221;, &#8220;admin&#8221;);<br />
    SecurityAdministrator securityAdministrator = engine.getSecurityAdministrator();</p>
<p>And you&#8217;ll also want to enable remote access to the engine by calling:</p>
<p>    RemoteSecurity remoteSecurity = factory.makeRemoteSecurity(engineConfiguration, engine);</p>
<p>You&#8217;ll also want to make sure you log out of the engine after starting it / setting up the runtime configuration:</p>
<p>    localSecurity.logout(engine);</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Initializing Flux in Java Code to Support Runtime Configuration Properties by khannanavin</title>
		<link>http://fluxstuff.com/2011/09/26/initializing-flux-in-java-code-to-support-runtime-configuration-properties/#comment-41</link>
		<dc:creator><![CDATA[khannanavin]]></dc:creator>
		<pubDate>Mon, 26 Sep 2011 21:29:47 +0000</pubDate>
		<guid isPermaLink="false">http://fluxstuff.com/?p=50#comment-41</guid>
		<description><![CDATA[Great post. 

Could we continue to use tanuki to expose the flux engine as a windows service? I assume we need only tweak the unsecured-flux-engine-wrapper.conf. Is the example valid for a secure flux engine as well (with a few minor tweaks)]]></description>
		<content:encoded><![CDATA[<p>Great post. </p>
<p>Could we continue to use tanuki to expose the flux engine as a windows service? I assume we need only tweak the unsecured-flux-engine-wrapper.conf. Is the example valid for a secure flux engine as well (with a few minor tweaks)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Flux Unit (functional, integration: make sure it works) Testing by fluxeric</title>
		<link>http://fluxstuff.com/2011/09/19/flux-unit-testing/#comment-40</link>
		<dc:creator><![CDATA[fluxeric]]></dc:creator>
		<pubDate>Mon, 19 Sep 2011 20:07:03 +0000</pubDate>
		<guid isPermaLink="false">http://fluxstuff.com/?p=42#comment-40</guid>
		<description><![CDATA[Sticky note applied to monitor so I won&#039;t forget: http://screencast.com/t/wwoccX0aP4 :-)]]></description>
		<content:encoded><![CDATA[<p>Sticky note applied to monitor so I won&#8217;t forget: <a href="http://screencast.com/t/wwoccX0aP4" rel="nofollow">http://screencast.com/t/wwoccX0aP4</a> <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Flux Unit (functional, integration: make sure it works) Testing by khannanavin</title>
		<link>http://fluxstuff.com/2011/09/19/flux-unit-testing/#comment-39</link>
		<dc:creator><![CDATA[khannanavin]]></dc:creator>
		<pubDate>Mon, 19 Sep 2011 19:57:51 +0000</pubDate>
		<guid isPermaLink="false">http://fluxstuff.com/?p=42#comment-39</guid>
		<description><![CDATA[Thanks for the quick response. I like your idea about embedding an ftp/http server. I would be interested in the code examples. We are not in a hurry so please roll out the examples at your own pace.]]></description>
		<content:encoded><![CDATA[<p>Thanks for the quick response. I like your idea about embedding an ftp/http server. I would be interested in the code examples. We are not in a hurry so please roll out the examples at your own pace.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Flux Unit (functional, integration: make sure it works) Testing by fluxeric</title>
		<link>http://fluxstuff.com/2011/09/19/flux-unit-testing/#comment-38</link>
		<dc:creator><![CDATA[fluxeric]]></dc:creator>
		<pubDate>Mon, 19 Sep 2011 19:28:21 +0000</pubDate>
		<guid isPermaLink="false">http://fluxstuff.com/?p=42#comment-38</guid>
		<description><![CDATA[Thanks! It&#039;s possible to load a flow chart and change it&#039;s values via Java code. We do this in our test suite. For example, we often ask customers for their actual flow charts. Their flow charts can&#039;t run out-of-the-box in our environment so we have to modify them. However, we keep the original flow chart received from the customer in-tact and perform as few modifications as possible to allow it to run in our environment and faster (reduce time delays) via Java code on-the-fly.

The AbstractFluxTest.readFlowChartFFC() method above illustrates how to read a flow chart from a file on disk. Once loaded, the flow chart is available as a flux.FlowChart object. This allows you to access any triggers, actions, flows, etc. and modify them via the Flux Java API.

That&#039;s easy. Now for the difficult part. What to change and what to change it to? For your case of a File Exist Trigger watching an FTP server, I would suggest using the embeddable 100% Java Apache FTP Server (http://mina.apache.org/ftpserver/). This will allow you to test as much of the Flux functionality as possible. Furthermore, if you use the Flux runtime configuration properties file to set your FTP server properties in the File Exist Trigger (like: ${runtime hostname}), then you don&#039;t even need to modify the values via the Java API but rather just have a different runtime configuration file for the test and production environments (i.e., runtime-test.properties may point to localhost for the FTP server).

For mocking the REST Action, again I would suggest embedding an HTTP server that can return serve the HTML file and again use runtime configuration properties with different values for the test and production configurations. This will allow you to make sure Flux is invoking a REST service and returning the results correctly (albeit not the production REST server, but close).

And for the Process Action, again, I&#039;d use the runtime configuration properties to reference a different script/batch file in the test and production environments.

If you&#039;re not keen on my recommended approach.. an alternative is to use the Java API, after loading the flow chart, to replace the File Exist, REST Action, and Process Action properties with a Java Action that does the returns the expected result. This is doable, but probably not a trivial task (flows and runtime data maps could be difficult to deal with when swapping out triggers/actions for Java Actions). IMOHO, I don&#039;t prefer this approach because it requires more modifications to the flow chart for testing purposes than my recommended approach.

We have tests that embed the Apache FTP Server and also an HTTP server with mock REST resources. I can provide code examples for that if you&#039;re interested in pursuing the embedded mock server route. If you&#039;re interested in that, just let me know how pressing it is for you and I&#039;ll schedule some time to post some example code for you.]]></description>
		<content:encoded><![CDATA[<p>Thanks! It&#8217;s possible to load a flow chart and change it&#8217;s values via Java code. We do this in our test suite. For example, we often ask customers for their actual flow charts. Their flow charts can&#8217;t run out-of-the-box in our environment so we have to modify them. However, we keep the original flow chart received from the customer in-tact and perform as few modifications as possible to allow it to run in our environment and faster (reduce time delays) via Java code on-the-fly.</p>
<p>The AbstractFluxTest.readFlowChartFFC() method above illustrates how to read a flow chart from a file on disk. Once loaded, the flow chart is available as a flux.FlowChart object. This allows you to access any triggers, actions, flows, etc. and modify them via the Flux Java API.</p>
<p>That&#8217;s easy. Now for the difficult part. What to change and what to change it to? For your case of a File Exist Trigger watching an FTP server, I would suggest using the embeddable 100% Java Apache FTP Server (<a href="http://mina.apache.org/ftpserver/" rel="nofollow">http://mina.apache.org/ftpserver/</a>). This will allow you to test as much of the Flux functionality as possible. Furthermore, if you use the Flux runtime configuration properties file to set your FTP server properties in the File Exist Trigger (like: ${runtime hostname}), then you don&#8217;t even need to modify the values via the Java API but rather just have a different runtime configuration file for the test and production environments (i.e., runtime-test.properties may point to localhost for the FTP server).</p>
<p>For mocking the REST Action, again I would suggest embedding an HTTP server that can return serve the HTML file and again use runtime configuration properties with different values for the test and production configurations. This will allow you to make sure Flux is invoking a REST service and returning the results correctly (albeit not the production REST server, but close).</p>
<p>And for the Process Action, again, I&#8217;d use the runtime configuration properties to reference a different script/batch file in the test and production environments.</p>
<p>If you&#8217;re not keen on my recommended approach.. an alternative is to use the Java API, after loading the flow chart, to replace the File Exist, REST Action, and Process Action properties with a Java Action that does the returns the expected result. This is doable, but probably not a trivial task (flows and runtime data maps could be difficult to deal with when swapping out triggers/actions for Java Actions). IMOHO, I don&#8217;t prefer this approach because it requires more modifications to the flow chart for testing purposes than my recommended approach.</p>
<p>We have tests that embed the Apache FTP Server and also an HTTP server with mock REST resources. I can provide code examples for that if you&#8217;re interested in pursuing the embedded mock server route. If you&#8217;re interested in that, just let me know how pressing it is for you and I&#8217;ll schedule some time to post some example code for you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Flux Unit (functional, integration: make sure it works) Testing by khannanavin</title>
		<link>http://fluxstuff.com/2011/09/19/flux-unit-testing/#comment-37</link>
		<dc:creator><![CDATA[khannanavin]]></dc:creator>
		<pubDate>Mon, 19 Sep 2011 19:10:05 +0000</pubDate>
		<guid isPermaLink="false">http://fluxstuff.com/?p=42#comment-37</guid>
		<description><![CDATA[Great article.

Is it possible to mock out certain actions or triggers? Let me go over a scenario

I have a flowchart that starts with a file exists trigger which waits for a file over ftp then that file is processed through a java action which would return 0 or 1 depending on the file being &quot;good&quot; or &quot;bad&quot;. If the file is good then we call a rest service to get some more information call a process action and end if the file is bad print a message on the console and end. Now to test this flowchart I want to mock out the following
1) File exists trigger such that instead of waiting on ftp I supply the file from the local machine.
2) Rest action so that instead of making a call to a webservice we supply a local xml file.
3) If lets say the process action takes an hour to complete mock it out as well

We would like to load the flowchart from the file system for the unit test and I am hoping to reuse most of the information on the flowchart e.g. flows, runtime datamaps, checkpoints etc.]]></description>
		<content:encoded><![CDATA[<p>Great article.</p>
<p>Is it possible to mock out certain actions or triggers? Let me go over a scenario</p>
<p>I have a flowchart that starts with a file exists trigger which waits for a file over ftp then that file is processed through a java action which would return 0 or 1 depending on the file being &#8220;good&#8221; or &#8220;bad&#8221;. If the file is good then we call a rest service to get some more information call a process action and end if the file is bad print a message on the console and end. Now to test this flowchart I want to mock out the following<br />
1) File exists trigger such that instead of waiting on ftp I supply the file from the local machine.<br />
2) Rest action so that instead of making a call to a webservice we supply a local xml file.<br />
3) If lets say the process action takes an hour to complete mock it out as well</p>
<p>We would like to load the flowchart from the file system for the unit test and I am hoping to reuse most of the information on the flowchart e.g. flows, runtime datamaps, checkpoints etc.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Flux Mobile on iPhone, iPad, Android, and Blackberry! by Why I like REST better than RMI: mobile devices &#171; jobscheduler.com</title>
		<link>http://fluxstuff.com/2010/11/24/fluxmobile/#comment-36</link>
		<dc:creator><![CDATA[Why I like REST better than RMI: mobile devices &#171; jobscheduler.com]]></dc:creator>
		<pubDate>Mon, 20 Dec 2010 18:01:58 +0000</pubDate>
		<guid isPermaLink="false">http://fluxstuff.com/?p=37#comment-36</guid>
		<description><![CDATA[[...] Eric&#8217;s mobile app [...]]]></description>
		<content:encoded><![CDATA[<p>[...] Eric&#8217;s mobile app [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on This ain&#8217;t your grandpa&#8217;s job scheduler! by fluxeric</title>
		<link>http://fluxstuff.com/2010/09/02/this-aint-your-grandpas-job-scheduler/#comment-21</link>
		<dc:creator><![CDATA[fluxeric]]></dc:creator>
		<pubDate>Mon, 08 Nov 2010 15:22:24 +0000</pubDate>
		<guid isPermaLink="false">http://fluxstuff.com/?p=18#comment-21</guid>
		<description><![CDATA[I know it seems like the Operations Console would only be as responsive as the engine, but that&#039;s not entirely the case.

This video is showcasing the performance of the web tier: HTML, CSS, JavaScript, and REST. Things like page/tab switching, pagination, etc. were a sluggish in older versions of the Operations Console. These web application performance problems are eliminated in Flux 7.10.

The Flux 7.10 Operations Console also utilizes a distributed cache to monitor the status of flow charts in the cluster. Flux 7.9 used to query the database directly for status of flow charts. Flux 7.10 shows the real-time status of flow charts without contacting the database. This could allow the Operations Console to perform faster than the engine.

We made a few architectural changes in Flux 7.10 to make it perform faster both on the engine side and Operations Console side. The performance gain for both over Flux 7.9 is tremendous.

Flux does not provide any way to monitor the performance of a Flux engine, short of throughput of flow charts. Performance for Flux means &quot;how many of your business processes can be executed in a given time?&quot;. This can be measured through the run history API on the engine.]]></description>
		<content:encoded><![CDATA[<p>I know it seems like the Operations Console would only be as responsive as the engine, but that&#8217;s not entirely the case.</p>
<p>This video is showcasing the performance of the web tier: HTML, CSS, JavaScript, and REST. Things like page/tab switching, pagination, etc. were a sluggish in older versions of the Operations Console. These web application performance problems are eliminated in Flux 7.10.</p>
<p>The Flux 7.10 Operations Console also utilizes a distributed cache to monitor the status of flow charts in the cluster. Flux 7.9 used to query the database directly for status of flow charts. Flux 7.10 shows the real-time status of flow charts without contacting the database. This could allow the Operations Console to perform faster than the engine.</p>
<p>We made a few architectural changes in Flux 7.10 to make it perform faster both on the engine side and Operations Console side. The performance gain for both over Flux 7.9 is tremendous.</p>
<p>Flux does not provide any way to monitor the performance of a Flux engine, short of throughput of flow charts. Performance for Flux means &#8220;how many of your business processes can be executed in a given time?&#8221;. This can be measured through the run history API on the engine.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on This ain&#8217;t your grandpa&#8217;s job scheduler! by Mohan</title>
		<link>http://fluxstuff.com/2010/09/02/this-aint-your-grandpas-job-scheduler/#comment-20</link>
		<dc:creator><![CDATA[Mohan]]></dc:creator>
		<pubDate>Mon, 08 Nov 2010 13:57:51 +0000</pubDate>
		<guid isPermaLink="false">http://fluxstuff.com/?p=18#comment-20</guid>
		<description><![CDATA[&lt;cite&gt;This video was taken when around 6,000 flow charts were running in the cluster and a background thread was adding flow charts constantly.&quot;&lt;/cite&gt;

1. What kind of cluster is this ?
2. Where can we look at the engine&#039;s performance stats instead of the web console&#039;s ? The web console is only as responsive as the engine. Is that right ?]]></description>
		<content:encoded><![CDATA[<p><cite>This video was taken when around 6,000 flow charts were running in the cluster and a background thread was adding flow charts constantly.&#8221;</cite></p>
<p>1. What kind of cluster is this ?<br />
2. Where can we look at the engine&#8217;s performance stats instead of the web console&#8217;s ? The web console is only as responsive as the engine. Is that right ?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

