<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WorkflowFAQ &#187; Oracle</title>
	<atom:link href="http://www.workflowfaq.com/category/oracle/feed" rel="self" type="application/rss+xml" />
	<link>http://www.workflowfaq.com</link>
	<description></description>
	<lastBuildDate>Mon, 12 Jul 2010 11:43:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Installing SQL Developer on Linux</title>
		<link>http://www.workflowfaq.com/installing-sql-developer-on-linux</link>
		<comments>http://www.workflowfaq.com/installing-sql-developer-on-linux#comments</comments>
		<pubDate>Wed, 03 Mar 2010 11:54:59 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[sql developer]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.workflowfaq.com/?p=344</guid>
		<description><![CDATA[I recently had to install SQL Developer on my Linux box at home to communicate with my R12.1.1 instance. I could have used the version that I have installed in my W2K virtual machine (I need some kind of Windows installed to use Workflow Builder, so have a VM running it), but sometimes I just [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had to install SQL Developer on my Linux box at home to communicate with my R12.1.1 instance.  I could have used the version that I have installed in my W2K virtual machine (I need some kind of Windows installed to use Workflow Builder, so have a VM running it), but sometimes I just need to access the database without wanting or needing to have a VM running which uses 1GB of RAM.  In this post, I will detail the steps that I took to get it working.</p>
<p>Firstly, download the right version from Oracle <a href="http://www.workflowfaq.com/go.php?http://www.oracle.com/technology/software/products/sql/index.html" target="_blank">here</a>.  I downloaded the file &#8220;sqldeveloper-2.1.1.64.39-no-jre.zip&#8221;</p>
<p>Once the program has downloaded, unzip the file into a temporary location.  I unzipped mine into /home/Downloads where it created a new subdirectory called &#8220;sqldeveloper&#8221; for me.</p>
<p>Move the sqldeveloper folder into /opt (you may need root privileges to do this, so either do this as root or use sudo to move the folder).</p>
<p>Navigate to /opt/sqldeveloper and change the privileges on the sqldeveloper.sh file using chmod:</p>
<pre class="code">sudo chmod 755 sqldeveloper.sh</pre>
<p>Create a new file called &#8220;sqldeveloper&#8221; in /usr/local/bin/sqldeveloper which contains the following line:</p>
<pre class="code">/opt/sqldeveloper/sqldeveloper.sh</pre>
<p>Change the permissions on this new file using chmod again:</p>
<pre class="code">sudo chmod 755 /usr/local/bin/sqldeveloper</pre>
<p>Finally, you can run the program just by typing &#8220;sqldeveloper&#8221; at the command prompt window.  Run this now from a terminal window, and you will be prompted to confirm the location of the JDK:</p>
<pre class="code">Oracle SQL Developer
Copyright (c) 1997, 2009, Oracle and/or its affiliates.All rights reserved.

Type the full pathname of a J2SE installation (or Ctrl-C to quit), the path
will be stored in ~/.sqldeveloper/jdk</pre>
<p>In my instance, the JVM is located at /usr/lib/jvm/java-6-sun so enter that path and SQL Developer should start.  Because the path to ~/.sqldeveloper does not exist yet (it will be created the first time the program runs), you will see errors.  Close SQL Developer down and run the command again &#8211; you will be prompted to enter the path a second time, which will then be saved to ~/.sqldeveloper/jdk.  If you ever change the location of the JVM, you will need to modify this file or SQL Developer will fail.</p>
<p>The last thing that I did was to create a new shortcut in my Ubuntu menu &#8211; if you are doing this, then the icon file can be found at /opt/sqldeveloper/icon.png.  Now when I click on the icon, SQL Developer starts fine:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/03/Selection_20100303_114602.jpeg"><img class="aligncenter size-full wp-image-345" title="Create a new DB connection" src="http://www.workflowfaq.com/wp-content/uploads/2010/03/Selection_20100303_114602.jpeg" alt="Create a new DB connection to VIS database as APPS" width="526" height="279" /></a></p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Installing+SQL+Developer+on+Linux+http://bit.ly/9gYJeM" title="Post to Twitter"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-twitter2.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://www.workflowfaq.com/installing-sql-developer-on-linux&amp;title=Installing+SQL+Developer+on+Linux" title="Post to Delicious"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a class="tt" href="http://digg.com/submit?url=http://www.workflowfaq.com/installing-sql-developer-on-linux&amp;title=Installing+SQL+Developer+on+Linux" title="Post to Digg"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://www.workflowfaq.com/installing-sql-developer-on-linux&amp;t=Installing+SQL+Developer+on+Linux" title="Post to Facebook"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a class="tt" href="http://ping.fm/ref/?method=microblog&amp;title=Installing+SQL+Developer+on+Linux&amp;link=http://www.workflowfaq.com/installing-sql-developer-on-linux" title="Post to Ping.fm"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-ping.png" alt="Post to Ping.fm" /></a> <a class="tt" href="http://reddit.com/submit?url=http://www.workflowfaq.com/installing-sql-developer-on-linux&amp;title=Installing+SQL+Developer+on+Linux" title="Post to Reddit"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://www.workflowfaq.com/installing-sql-developer-on-linux&amp;title=Installing+SQL+Developer+on+Linux" title="Post to StumbleUpon"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-su.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.workflowfaq.com/installing-sql-developer-on-linux/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AME Part Five &#8211; Defining a Dynamic Approval Group</title>
		<link>http://www.workflowfaq.com/ame-part-five-defining-a-dynamic-approval-group</link>
		<comments>http://www.workflowfaq.com/ame-part-five-defining-a-dynamic-approval-group#comments</comments>
		<pubDate>Mon, 22 Feb 2010 08:23:33 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Functional]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[ame]]></category>
		<category><![CDATA[approval group]]></category>
		<category><![CDATA[approvals]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[ebs]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[iRecruitment]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[R12]]></category>
		<category><![CDATA[R12.1.1]]></category>

		<guid isPermaLink="false">http://www.workflowfaq.com/?p=325</guid>
		<description><![CDATA[One of the most recent search terms that I&#8217;ve seen for my blog here was &#8220;AME dynamic approval group example&#8221; &#8211; so in this post, I&#8217;m going to go through the steps required to create a dynamic approval group and provide an example.  This example continues on from part four, since we will be replacing [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most recent search terms that I&#8217;ve seen for my blog here was &#8220;AME dynamic approval group example&#8221; &#8211; so in this post, I&#8217;m going to go through the steps required to create a dynamic approval group and provide an example.   This example continues on from <a href="ame-part-four-customizing-ame-in-irecruitment">part four</a>, since we will be replacing the static approval group with a simple dynamic one.</p>
<p>Using the &#8220;Approvals Management Business Analyst&#8221; responsibility, in the &#8220;Approval Process Setup&#8221; panel on the right hand side of the dashboard, choose the &#8220;iRecruitment Vacancy Approval&#8221; transaction type again:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_016.jpeg"><img class="aligncenter size-full wp-image-329" title="Define Process for the Transaction Type" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_016.jpeg" alt="Define Process for the Transaction Type" width="241" height="245" /></a></p>
<p>Click on the &#8220;Approver Groups&#8221; link, and we will modify the existing group from static to dynamic.  Click on the &#8220;Update&#8221; icon for the Approver Group we created earlier, and then change the usage type from Static to Dynamic.  As soon as the change is made, you will be shown a warning, indicating that the static approvers will be removed from the group:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_017.jpeg"><img class="aligncenter size-full wp-image-330" title="Warning when changing usage" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_017.jpeg" alt="Warning when changing usage" width="452" height="40" /></a></p>
<p>Since we are going to be redefining the group completely, this is fine, so click on the &#8220;Yes&#8221; button and you will be returned to the group definition with no static approvers shown.</p>
<p>As a simple example, my approver group requires approval from two people &#8211; the user MATT and the HR person Tim Cleary.  The SQL code required to retrieve the two records in the same query is</p>
<pre class="code">
SELECT 'user_id:'||user_id
FROM   fnd_user
WHERE  user_name = 'MATT'
UNION ALL
SELECT 'person_id:'||person_id
FROM   per_all_people_f  papf
WHERE  papf.full_name = 'Cleary, Mr. Timothy'
</pre>
<p>In the SQL above, we need to tell AME exactly what kind of approver we are retrieving &#8211; by prefixing the user record with &#8220;user_id:&#8221; and prefixing the person record with &#8220;person_id:&#8221;, AME then knows where the records are being retrieved from.  Enter the SQL into the Query box, and then hit the Apply button. You can also use the Validate button, which checks that the query is structurally sound, but does not seem to check much more than that (for example, if you prefix the user record with &#8220;usssssser_id:&#8221;, it is still classed as a valid query).</p>
<p>That&#8217;s all there is to it &#8211; if we now go and create a new vacancy (using the same BJOSPEH user that we did in the last post), when we review the vacancy, we see that AME has added the two approvers to the bottom of the approval list:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_018.jpeg"><img class="aligncenter size-full wp-image-335" title="Additional Approvers are generated by AME" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_018.jpeg" alt="Additional Approvers are generated by AME" width="390" height="81" /></a></p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=AME+Part+Five+%26%238211%3B+Defining+a+Dynamic+Approval+Group+http://bit.ly/96K8ik" title="Post to Twitter"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-twitter2.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://www.workflowfaq.com/ame-part-five-defining-a-dynamic-approval-group&amp;title=AME+Part+Five+%26%238211%3B+Defining+a+Dynamic+Approval+Group" title="Post to Delicious"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a class="tt" href="http://digg.com/submit?url=http://www.workflowfaq.com/ame-part-five-defining-a-dynamic-approval-group&amp;title=AME+Part+Five+%26%238211%3B+Defining+a+Dynamic+Approval+Group" title="Post to Digg"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://www.workflowfaq.com/ame-part-five-defining-a-dynamic-approval-group&amp;t=AME+Part+Five+%26%238211%3B+Defining+a+Dynamic+Approval+Group" title="Post to Facebook"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a class="tt" href="http://ping.fm/ref/?method=microblog&amp;title=AME+Part+Five+%26%238211%3B+Defining+a+Dynamic+Approval+Group&amp;link=http://www.workflowfaq.com/ame-part-five-defining-a-dynamic-approval-group" title="Post to Ping.fm"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-ping.png" alt="Post to Ping.fm" /></a> <a class="tt" href="http://reddit.com/submit?url=http://www.workflowfaq.com/ame-part-five-defining-a-dynamic-approval-group&amp;title=AME+Part+Five+%26%238211%3B+Defining+a+Dynamic+Approval+Group" title="Post to Reddit"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://www.workflowfaq.com/ame-part-five-defining-a-dynamic-approval-group&amp;title=AME+Part+Five+%26%238211%3B+Defining+a+Dynamic+Approval+Group" title="Post to StumbleUpon"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-su.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.workflowfaq.com/ame-part-five-defining-a-dynamic-approval-group/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AME Part Four &#8211; Customizing AME in iRecruitment</title>
		<link>http://www.workflowfaq.com/ame-part-four-customizing-ame-in-irecruitment</link>
		<comments>http://www.workflowfaq.com/ame-part-four-customizing-ame-in-irecruitment#comments</comments>
		<pubDate>Wed, 17 Feb 2010 17:26:55 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Functional]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[ame]]></category>
		<category><![CDATA[approvals]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[ebs]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[iRecruitment]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[notifications]]></category>
		<category><![CDATA[R12]]></category>
		<category><![CDATA[R12.1.1]]></category>

		<guid isPermaLink="false">http://www.workflowfaq.com/?p=280</guid>
		<description><![CDATA[In the last blog post, I detailed the functional configuration required to setup a new user with AME administration privileges. Now that the user is ready, in this post I will be going through a quick example of how AME can be used within iRecruitment. In this example, we will implement the following approval rules [...]]]></description>
			<content:encoded><![CDATA[<p>In the <a href="roles-grants-for-ame">last blog post</a>, I detailed the functional configuration required to setup a new user with AME administration privileges.  Now that the user is ready, in this post I will be going through a quick example of how AME can be used within iRecruitment.</p>
<p>In this example, we will implement the following approval rules for creating a new job vacancy within iRecruitment:</p>
<ul>
<li>When a vacancy is created, the vacancy must be approved by the supervisor of the person creating the vacancy.</li>
<li>Once the supervisor has approved the vacancy, it must then be sent to a different user for final approval.</li>
</ul>
<p>In my example, I have picked two random users within Vision – BJOSEPH (Joseph, Brian) and his supervisor, RJAMES (James, Robert).</p>
<p>The first rule (that the vacancy must be approved by the supervisor) is standard behaviour within iRecruitment, so there is nothing that we need to do with that.  So – what do we need to do to meet the second requirement?</p>
<p>Firstly, we&#8217;ll create a new static AME Approval Group and add the Recruiting Administrator to that group.  An Approval Group can return either a static or a dynamic list of users.  Once we have created the Approval Group, we will then add the Group to the AME Rule that is used by the standard Vacancy Creation process.</p>
<p>Before we start, run through the standard Vacancy Creation process and see who the notification is sent to.  Log in as the first user to create the vacancy – in my example, I will use the BJOSEPH user.  Using the “iRecruitment Recruiter – VC” responsibility, navigate to the iRecruitment Home page, and click on the “New Vacancy” link in the sidebar:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_0061.jpeg"><img class="aligncenter size-full wp-image-281" title="iRecruitment Home Page" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_0061.jpeg" alt="iRecruitment Home Page" width="350" height="66" /></a></p>
<p>In the “New Vacancy” window, enter a name for the vacancy and then click on the “Review” button.  At this stage, we could enter more information about the vacancy, but since this is just a quick test to see the default functionality, there is nothing additional required here.  The bottom of the vacancy summary shows the default approver that has been found – the supervisor of the person creating the vacancy:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_007.jpeg"><img class="aligncenter size-full wp-image-282" title="Default behaviour - one approver" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_007.jpeg" alt="Default behaviour - supervisor is the one approver" width="219" height="39" /></a></p>
<p>As I said above – the default functionality meets our first requirement, so all we need to do is to add the additional requirements.   Firstly, we need to find out what AME Transaction Type is used by the Vacancy Creation process.  To do this, we need to examine the function for “Irc Vacancy Details – Create”, as shown in the screenshot below:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_008.jpeg"><img class="aligncenter size-full wp-image-283" title="Function for Vacancy Creation" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_008.jpeg" alt="Function definition for Vacancy Creation" width="502" height="79" /></a></p>
<p>Navigate to the “Form” tab and open the Parameters to see the parameters which are passed to the form:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_009.jpeg"><img class="aligncenter size-full wp-image-284" title="Function parameters" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_009.jpeg" alt="Function parameters for create vacancy" width="376" height="147" /></a></p>
<p>The parameter that we are interested in is “pAMETranType=IRCVACAPPROVAL”.   Now that we know the name of the internal name for the transaction type (or Transaction Type Key), switch responsibility to “Approvals Management Administrator” &#8211; I will switch user completely to the AMEADMIN user we created in the last post.   Navigate to the Admin Dashboard and query the IRCVACAPPROVAL Transaction Type Key:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_010.jpeg"><img class="aligncenter size-full wp-image-285" title="Searching for the transaction type" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_010.jpeg" alt="Searching for the transaction type using transaction type key" width="412" height="107" /></a></p>
<p>Now that we know the name of the Transaction Type (iRecruitment Vacancy Approval), switch responsibility to “Approvals Management Business Analyst” and enter the Transaction Type in the right hand side in Step 1 of the “Approvals Setup Process”:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_011.jpeg"><img class="aligncenter size-full wp-image-286" title="Approval Process Setup panel" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_011.jpeg" alt="Approval Process Setup panel" width="240" height="371" /></a></p>
<p>If you click on the “Rules” link, you can view the existing approval rules in place.   Click on the link and then locate the “iRecruitment Create Vacancy” rule in the list of rules.  When you open the rule, you are presented with the default rule:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_012.jpeg"><img class="aligncenter size-full wp-image-287" title="Default rule for vacancy create" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_012.jpeg" alt="Default rule for vacancy create" width="503" height="219" /></a></p>
<p>Return to the dashboard, and we&#8217;ll create our custom Approval Group to add to the Rule.   Under “Step 2” of the Process Setup, there is a link to “Approver Groups”.   Click on the link to navigate to setup a new Approver Group, and then click on the “Create” button.   The screenshot below shows the values that I have entered for my Approver Group:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_013.jpeg"><img class="aligncenter size-full wp-image-288" title="Creating a new Approval Group" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_013.jpeg" alt="Creating a new Approval Group" width="575" height="325" /></a></p>
<p>The “Approver Type” can be an Applications User (FND User), a group of people (Nested Group) or an HR person (HR People).  Multiple users can be added to the approval hierarchy here – I have only added one person, a user called MATT who will act as the final approver for vacancies.  Click on the “Apply” button and then return to the dashboard to add this new Approval Group to the rule.</p>
<p>As before, click on the &#8220;Rules&#8221; link on the right hand side of the screen and locate the rule for  iRecruitment Create Vacancy.  Click on the update icon to open the rule details.  At the bottom of the page, you will see the default action type, which seeks approval from the supervisor of the person creating the vacancy.  Click on the Add Action button to add our Approval Group to the rule, as shown below:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_014.jpeg"><img class="aligncenter size-full wp-image-289" title="Adding the new Action Type" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_014.jpeg" alt="Adding the new Action Type" width="538" height="95" /></a></p>
<p>If the &#8220;approval-group chain of authority&#8221; option is not available, this is because it has not been enabled.  Click on the &#8220;Setup&#8221; tab and choose the &#8220;Action Types&#8221; submenu.  You will be presented with a list of suitable action types – typically only the default &#8220;Supervisory level&#8221; one will be enabled.  Click on the &#8220;Use Existing Action Type&#8221; button and navigate through the list of available types until you see the &#8220;approval-group chain of authority&#8221; type.  Tick the box next to the action type and then click on the Continue button, then click on the Finish button.  Now return to the rule and add the Approval Group as above.</p>
<p>Once you have added the action type, click on the Apply button.  That&#8217;s all there is to it – now let&#8217;s check it again by logging out and creating a new vacancy.  The final screenshot below shows that the new vacancy will be sent to MATT for approval as well as the originators supervisor:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_015.jpeg"><img class="aligncenter size-full wp-image-290" title="Testing - new vacancy requires 2 approvers" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_015.jpeg" alt="Testing: a new vacancy requires 2 approvers" width="713" height="53" /></a></p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=AME+Part+Four+%26%238211%3B+Customizing+AME+in+iRecruitment+http://bit.ly/9T6Q5c" title="Post to Twitter"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-twitter2.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://www.workflowfaq.com/ame-part-four-customizing-ame-in-irecruitment&amp;title=AME+Part+Four+%26%238211%3B+Customizing+AME+in+iRecruitment" title="Post to Delicious"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a class="tt" href="http://digg.com/submit?url=http://www.workflowfaq.com/ame-part-four-customizing-ame-in-irecruitment&amp;title=AME+Part+Four+%26%238211%3B+Customizing+AME+in+iRecruitment" title="Post to Digg"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://www.workflowfaq.com/ame-part-four-customizing-ame-in-irecruitment&amp;t=AME+Part+Four+%26%238211%3B+Customizing+AME+in+iRecruitment" title="Post to Facebook"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a class="tt" href="http://ping.fm/ref/?method=microblog&amp;title=AME+Part+Four+%26%238211%3B+Customizing+AME+in+iRecruitment&amp;link=http://www.workflowfaq.com/ame-part-four-customizing-ame-in-irecruitment" title="Post to Ping.fm"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-ping.png" alt="Post to Ping.fm" /></a> <a class="tt" href="http://reddit.com/submit?url=http://www.workflowfaq.com/ame-part-four-customizing-ame-in-irecruitment&amp;title=AME+Part+Four+%26%238211%3B+Customizing+AME+in+iRecruitment" title="Post to Reddit"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://www.workflowfaq.com/ame-part-four-customizing-ame-in-irecruitment&amp;title=AME+Part+Four+%26%238211%3B+Customizing+AME+in+iRecruitment" title="Post to StumbleUpon"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-su.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.workflowfaq.com/ame-part-four-customizing-ame-in-irecruitment/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AME Part Three &#8211; Roles and Grants for AME</title>
		<link>http://www.workflowfaq.com/roles-grants-for-ame</link>
		<comments>http://www.workflowfaq.com/roles-grants-for-ame#comments</comments>
		<pubDate>Fri, 12 Feb 2010 12:07:45 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Functional]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[ame]]></category>
		<category><![CDATA[approvals]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[ebs]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[functions]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[R12]]></category>
		<category><![CDATA[R12.1.1]]></category>
		<category><![CDATA[rbac]]></category>
		<category><![CDATA[user management]]></category>

		<guid isPermaLink="false">http://www.workflowfaq.com/?p=221</guid>
		<description><![CDATA[By default, the &#8220;Approvals Management Administrator&#8221; and &#8220;Approvals Management Business Analyst&#8221; responsibilities do not have any functions associated with them, because their access is restricted by Role Based Access Control (RBAC). In this section, I will detail the steps needed to add functions so that we can get into using AME. Firstly, we&#8217;ll create a [...]]]></description>
			<content:encoded><![CDATA[<p>By default, the &#8220;Approvals Management Administrator&#8221; and &#8220;Approvals Management Business Analyst&#8221; responsibilities do not have any functions associated with them, because their access is restricted by Role Based Access Control (RBAC).  In this section, I will detail the steps needed to add functions so that we can get into using AME.</p>
<p>Firstly, we&#8217;ll create a new user for this demonstration, and assign them the two responsibilities, thus:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_002.jpeg"><img class="size-full wp-image-216  aligncenter" title="Creating a new user for AME" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_002.jpeg" alt="Screenshot showing new user creation with responsibilities &quot;Approvals Management Administrator&quot; and &quot;Approvals Management Business Analyst&quot;" width="549" height="369" /></a></p>
<p>If I now log into the eBusiness Suite as that user and try to switch to either of those responsibilities, the system indicates that there are no functions available for the user (see screenshot below).  As I said above, this is because role based access control ensures that only users with the right roles as well as responsibilities can access the functions.</p>
<p style="text-align: center;">
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_003.jpeg"><img class="size-full wp-image-217  aligncenter" title="No functions available - yet" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_003.jpeg" alt="By default, there are no functions available for this user and responsibility" width="575" height="94" /></a></p>
<p>So, now we need to modify the user to give them the right roles to administer AME properly.  As a system administrator, open the “User Management” responsibility, as shown below.</p>
<p style="text-align: center;">
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_004.jpeg"><img class="size-full wp-image-218  aligncenter" title="System Administrator - User Management responsibility" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_004.jpeg" alt="System Administrator - User Management responsibility" width="575" height="175" /></a></p>
<p>If you do not have any functions assigned to the responsibility, then you will need to use the SYSADMIN user and assign the “Security Administrator” role to your user.  Select the “Users” option to continue.</p>
<p>Search for the user that you want to add the functions to (in my case, the AMEADMIN user I created earlier), open the user details and then click on the “Assign Roles” button. You are then presented with a search window, where you should search for all Roles beginning “Approval”:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_005.jpeg"><img class="size-full wp-image-219  aligncenter" title="Searching for the AME roles to grant" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_005.jpeg" alt="Searching for the AME roles to grant" width="574" height="310" /></a></p>
<p>You are then returned to the user screen, where you should complete a justification for granting the roles to the user – if you don&#8217;t then the screen will prevent you from continuing.   Once you have entered the justification, you should then hit the Apply button.</p>
<p>Log out as this user, and when you log in as the AME user, you now have functions associated with the two responsibilities:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_006.jpeg"><img class="size-full wp-image-220 aligncenter" title="AME Administrator with Functions" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_006.jpeg" alt="AME Administrator now has functions associated with the responsibilities" width="577" height="111" /></a></p>
<p style="text-align: left;">Now that we have granted the roles to the user, they can access the functions correctly.  However, RBAC means that when we open the Dashboard, the data is still protected and cannot be viewed:</p>
<p style="text-align: left;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_001.jpeg"><img class="aligncenter size-full wp-image-270" title="No Transaction Types available" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_001.jpeg" alt="No Transaction Types available" width="409" height="99" /></a></p>
<p>Again, we need to grant some RBAC roles to allow the user to access the different transaction types.  The main principle behind this is to enable organizations to split the Transaction Type maintenance between different roles – for example to allow HR Super Users to maintain only the HR rules.</p>
<p>Using a different user, navigate to the Functional Administrator responsibility and click on the “Create Grant” button to create the new grant.  In this example, we will create a specific grant for the AMEADMIN user, however in the real world it is more likely that you will create the grant for a group of users.  The Object is set to “AME Transaction Types”, thus:</p>
<p style="text-align: left;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_0021.jpeg"><img class="aligncenter size-full wp-image-271" title="Define a grant for the AMEADMIN user" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_0021.jpeg" alt="Define a grant for the AMEADMIN user" width="580" height="372" /></a></p>
<p>In the second step, accept the default data context type of “All Rows” and continue to the third step.  Define the “Set” to be “AME Calling Applications” as shown in the following screenshot:</p>
<p style="text-align: left;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_0031.jpeg"><img class="aligncenter size-full wp-image-272" title="Choose the Set to define access" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_0031.jpeg" alt="Choose the &quot;AME Calling Applications&quot; set to define access" width="516" height="81" /></a></p>
<p>Finally, review the settings that you have entered and click on the “Finish” button.  In order to ensure that the changes are replicated, now flush the cache by clicking on the “Core Services” tab then choose the “Caching Framework” sub-menu.  Choose “Global Configuration” from the sidebar  and then click on the “Clear All Cache” button.  You will be presented with a warning message (see below) which you can ignore and click on the “Yes” button.</p>
<p style="text-align: left;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_0041.jpeg"><img class="aligncenter size-full wp-image-273" title="Cache reset warning" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_0041.jpeg" alt="Cache reset warning" width="454" height="41" /></a></p>
<p>Log out of this user and log back in as the AMEADMIN user, and navigate to one of the AME responsibilities – you are now given a list of the AME Transaction Types that are configured in the system:</p>
<p style="text-align: center;"><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_0051.jpeg"><img class="aligncenter size-large wp-image-274" title="Done - User can administer Transaction Types" src="http://www.workflowfaq.com/wp-content/uploads/2010/02/Selection_0051-1024x438.jpg" alt="User can administer Transaction Types" width="614" height="263" /></a></p>
<p style="text-align: left;">In the next blog post, I&#8217;ll be providing a practical example of customizing AME within iRecruitment.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=AME+Part+Three+%26%238211%3B+Roles+and+Grants+for+AME+http://bit.ly/dqQba9" title="Post to Twitter"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-twitter2.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://www.workflowfaq.com/roles-grants-for-ame&amp;title=AME+Part+Three+%26%238211%3B+Roles+and+Grants+for+AME" title="Post to Delicious"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a class="tt" href="http://digg.com/submit?url=http://www.workflowfaq.com/roles-grants-for-ame&amp;title=AME+Part+Three+%26%238211%3B+Roles+and+Grants+for+AME" title="Post to Digg"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://www.workflowfaq.com/roles-grants-for-ame&amp;t=AME+Part+Three+%26%238211%3B+Roles+and+Grants+for+AME" title="Post to Facebook"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a class="tt" href="http://ping.fm/ref/?method=microblog&amp;title=AME+Part+Three+%26%238211%3B+Roles+and+Grants+for+AME&amp;link=http://www.workflowfaq.com/roles-grants-for-ame" title="Post to Ping.fm"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-ping.png" alt="Post to Ping.fm" /></a> <a class="tt" href="http://reddit.com/submit?url=http://www.workflowfaq.com/roles-grants-for-ame&amp;title=AME+Part+Three+%26%238211%3B+Roles+and+Grants+for+AME" title="Post to Reddit"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://www.workflowfaq.com/roles-grants-for-ame&amp;title=AME+Part+Three+%26%238211%3B+Roles+and+Grants+for+AME" title="Post to StumbleUpon"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-su.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.workflowfaq.com/roles-grants-for-ame/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AME Part Two &#8211; Components of AME</title>
		<link>http://www.workflowfaq.com/ame-part-two-components-of-ame</link>
		<comments>http://www.workflowfaq.com/ame-part-two-components-of-ame#comments</comments>
		<pubDate>Mon, 08 Feb 2010 17:23:41 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Functional]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[ame]]></category>
		<category><![CDATA[approvals]]></category>
		<category><![CDATA[ebs]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[notifications]]></category>
		<category><![CDATA[R12]]></category>
		<category><![CDATA[R12.1.1]]></category>

		<guid isPermaLink="false">http://www.workflowfaq.com/?p=301</guid>
		<description><![CDATA[In the last blog post, I provided a quick overview of what AME is and what some of the benefits of using AME are. In the second post in my series on AME, I&#8217;ll be looking at the different components of AME and how they interact. Before you start using AME, it is important that [...]]]></description>
			<content:encoded><![CDATA[<p>In the <a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/an-introduction-to-ame">last blog post</a>, I provided a quick overview of what AME is and what some of the benefits of using AME are.  In the second post in my series on AME, I&#8217;ll be looking at the different components of AME and how they interact.</p>
<p>Before you start using AME, it is important that you understand exactly what the different parts of the Engine are, what you need to configure, and how they all work together.  There is frequently a requirement to modify the seeded components or to create new ones for an organization, in order to develop their business rules.</p>
<h2>Transaction Types</h2>
<p>A Transaction Type defined the type of transaction for which the business rules and approval routes will be based.  This is an eBusiness Suite transaction, for example creating a new vacancy in iRecruitment or creating purchase orders.  There are many different Transaction Types seeded within the application to meet the requirements of the most common transactions which occur within the eBusiness Suite that would require an approval to take place.  If you are integrating a bespoke application with AME, then new Transaction Types can be defined within AME.  However, the creation of new Transaction Types is not a straightforward task, and Oracle discourage this because of the amount of programming effort that is required to integrate a new Transaction Type with AME.</p>
<h2>Attributes</h2>
<p>Within AME, Attributes can be defined as business variables which represent the value of an element in a transaction.  For example, in the case of an invoice approval, a typical attribute would be the supplier name, or the invoice value.  When defining the business rule, the attributes that are available to you will help define the rule itself and it&#8217;s implementation within AME. The reason for this is that the value of an Attribute for a transaction is usually evaluated as part of the rule in order to determine whether the condition has been met or not &#8211; for example, is this invoice worth more than £500?  Within AME, Attributes can be created as static (where they have a constant value which remains the same for every transaction associated with the Attribute), or as dynamic (where they use a SQL query to determine the value of the Attribute at run time).  Most Attributes that are used within AME are dynamic.</p>
<p>Within AME, there are different types of Attribute available to you:</p>
<ul>
<li>Strings can be alphanumeric and have a maximum length of 100 characters.</li>
<li>Numeric attributes can have any numeric value that is acceptable in PL/SQL, including decimals and negative numbers.  When using a numeric Attribute within AME, the number must be converted to a canonical form &#8211; within the FND_NUMBER package there is a function NUMBER_TO_CANONICAL which will do the conversion for you.</li>
<li>Currency Attributes are used when the organization is using multiple currencies.  This allows Oracle to perform currency conversions when retrieving the Attribute value.  If currency Attributes are used, the SQL query which retrieves the value must include the numeric column, currency and conversion method.  Additionally, any AME conditions which use currency Attributes must include a condition for EACH CURRENCY that the transaction might use.</li>
<li>Boolean Attributes can only have a valid value of true or false.  Any dynamic Attributes which are defined as Boolean MUST return one of these two states &#8211; NULL is not a valid value in an AME Boolean Attribute.  When using Boolean Attributes, AME provides a format string which should be used &#8211; AME_UTIL.BooleanAttributeTrue and AME_UTIL.BooleanAttributeFalse.</li>
<li>Date Attributes are commonly used within AME &#8211; for example the invoice date, shipping date, and so forth.  Again, AME is particular with the format and requires all date Attributes to be in the format YYYY:MON:DD:HH24:MI:SS.  There is a format string again provided in the AME_UTIL package &#8211; AME_UTIL.versionDateFormatModel which can be used to return a date in the required format.</li>
</ul>
<p><span id="more-301"></span>Every Transaction Type that is defined in AME as standard uses several mandatory Attributes which can be considered runtime parameters, since they are commonly used to determine the behaviour of AME during execution.  The mandatory attributes which are defined for all Transaction Types are:</p>
<ul>
<li>ALLOW_DELETING_RULE_GENERATE_APPROVERS</li>
<li>ALLOW_REQUEST_APPROVAL</li>
<li>AT_LEAST_ONE_RULE_MUST_APPLY</li>
<li>REJECTION_RESPONSE</li>
<li>USE_RESTRICTIVE_ITEM_EVALUATION</li>
<li>EFFECTIVE_RULE_DATE</li>
<li>EVALUATE_PRIORITIES_PER_ITEM</li>
<li>USE_WORKFLOW</li>
<li>WORKFLOW_ITEM_KEY</li>
<li>WORKFLOW_ITEM_TYPE</li>
<li>REPEAT_SUBSTITUION</li>
</ul>
<p>For more information of the mandatory Attributes and how AME interprets them, you should consult the AME Implementation Guide.</p>
<p>In addition to mandatory Attributes, AME also includes the concept of a required Attribute.  These are similar to mandatory Attributes (in that they must be populated), the only difference being that required Attributes are defined for a specific Transaction Type rather than for all Transaction Types.</p>
<p>Requires and mandatory Attributes are seeded with default values, which can be modified to meet the exact requirements of a specific Transaction Type.</p>
<h2>Conditions</h2>
<p>The next component to look at within AME is Conditions.  These are used to evaluate the value of an Attribute (or Attributes) for a particular transaction &#8211; this is where the “IF” part of each business rule is defined.</p>
<p>Each Condition returns either a true or false flag, and the result is then used by AME to determine whether the business rule has been met or not.  If the approvals code were to be written in plain PL/SQL, then this would be an IF statement.</p>
<p>In the example from the last post of &#8220;if the invoice value is over £500 then additional approval is required&#8221;, AME would retrieve the value of the invoice total Attribute and determine whether the Condition &#8220;&gt; 500&#8243; was met or not.</p>
<p>There are three different types of Condition within AME &#8211; Ordinary-Regular, Ordinary-Exception and List Modifier:</p>
<ul>
<li>Ordinary-Regular Conditions associate an Attribute with a value or range of values &#8211; for example, SELLER_NAME = &#8216;Smith Widgets Ltd&#8217;, or 20000 &gt; INVOICE_AMOUNT &gt; 1000 (i.e. invoice amount is greater than 500 and less than 20000).</li>
<li>Ordinary-Exception Conditions are similar to Ordinary-Regular Conditions, but are limited to the types of rules to which they can be applied.  When we look at Rules later in the post, I will go into more detail.</li>
<li>List-Modifier Conditions are used to modify the approval list based on the contents of the existing approval list.  For example, &#8220;If Bob is the last approver, then include his supervisor&#8221;</li>
</ul>
<h2>Action Types and Actions</h2>
<p>Within AME, Actions define what should the Engine do when a transaction satisfies a particular Condition.  It is these Actions which helps to determine which approvers are included in or excluded from the list being generated.</p>
<p>Action Types are collections of Actions which have similar functionality, such as the approval hierarchy that should be used when generating an approver list.  For example, the Actions which relate to building an approval list based on the HR hierarchy would be grouped together as one Action Type &#8211; all Actions for this Action Type are all related to using the same hierarchy, but would differ based on the number of levels that need to be retrieved.  Each of the Actions within the Action Type would typically describe the number of levels used by the common hierarchy, and they are then collected together in one Action Type based on the hierarchy used.</p>
<p>As standard, a range of different, common Action Types are provided by AME, which generally meet the requirements of most organizations, but custom Action Types can be defined if necessary.  The different seeded Action Types can be grouped into four different hierarchy types that they support:</p>
<ul>
<li>Chain of Authority
<ul>
<li>These Action Types typically use the position or supervisor hierarchy from HR to generate the approver list.  These Action Types typically use the position or supervisor hierarchy from HR to generate the approver list.  Depending on your patch set, you may not have all of the following Action Types (or, conversely, you may have additional Action Types not listed here!):</li>
</ul>
</li>
</ul>
<table>
<tbody>
<tr>
<th>Action Type</th>
<th>Description</th>
<th>Example</th>
</tr>
<tr>
<td>Absolute job level</td>
<td>Follows the HR hierarchy until an approver at the specified job level is found</td>
<td>Requires approval up to Senior Manager Grade.</td>
</tr>
<tr>
<td>Dual chains of authority</td>
<td>Uses the HR hierarchy to generate two separate lists of approvers, both of which must have an approval action.</td>
<td>Require approval from two different supervisors, for example during an employee transfer from the current and new managers.</td>
</tr>
<tr>
<td>Final approver only</td>
<td>Uses the HR hierarchy, but only requires approval from the last person found in the hierarchy.</td>
<td>Only require approval from a divisional manager.</td>
</tr>
<tr>
<td>HR Position</td>
<td>Uses the HR hierarchy to find a specified job position.</td>
<td>Require approvals up to the Invoice Manager.</td>
</tr>
<tr>
<td>HR Position Level</td>
<td>Uses the HR hierarchy to find a specified number of positions.</td>
<td>Require approvals up to Management Grade 4.</td>
</tr>
<tr>
<td>Line-item job-level chains of authority</td>
<td>Uses the HR hierarchy, and enables the approval chain to be based on individual line items.</td>
<td>Require approval from the cost centre manager for each invoice distribution line.</td>
</tr>
<tr>
<td>Manager then final approver</td>
<td>Uses the HR hierarchy, but only seeks approval from the immediate supervisor and the last person found in the chain.</td>
<td>Approval from the manager and CEO is required.</td>
</tr>
<tr>
<td>Relative job level</td>
<td>Follows the HR hierarchy for <em>n</em> levels from the start point</td>
<td>Requires three levels of approval.</td>
</tr>
<tr>
<td>Supervisory Level</td>
<td>Uses the HR hierarchy to find n supervisors, irrespective of job level.</td>
<td>Require approval from three supervisors.</td>
</tr>
</tbody>
</table>
<ul>
<li>List Modification
<ul>
<li>As with the Chain of Authority Action Type, the List-Modification uses the HR supervisor hierarchy to generate the approver list.  However, the List Modification (as the name suggests!) is used to modify the generated list to either include additional approvers, or to exclude approvers that have been identified from the hierarchy.  For example, if there is a business rule that stipulates that for all IT purchases, the most appropriate final approver is the IT Manager rather than the Finance Manager (who normally approves the transactions), then a List Modification would be applied to modify the generated list of approvers.  There are two types of List Modification Action Type:</li>
</ul>
</li>
</ul>
<table>
<tbody>
<tr>
<th>Action Type</th>
<th>Description</th>
<th>Example</th>
</tr>
<tr>
<td>Final Authority</td>
<td>Ends the approval chain at a designated approver, thereby granting final authority to them when they would normally not be the final approver.</td>
<td>If the Approver is the IT Manager, then they are the final approver.</td>
</tr>
<tr>
<td>Non-final Authority</td>
<td>Adds additional approver(s) to the approval chain, thereby revoking the final authority that the person previously had.</td>
<td>If Bob is the final approver, then add his supervisor as well.</td>
</tr>
</tbody>
</table>
<ul>
<li>Substitution
<ul>
<li>Substitution Action Types allow for one approver to be substituted for another whenever the approval chain involves them.  For example, in the absence of one person, route the approval to a different person.</li>
</ul>
</li>
</ul>
<ul>
<li>Approver Groups
<ul>
<li>Approver Group Action Types allow either a static or dynamic approver list to be generated.  If the list is static, then the names of specific individuals responsible for the transactions is included when the group is defined; if the list is dynamic then the name(s) included in the list are returned by a SQL statement.</li>
</ul>
</li>
</ul>
<table>
<tbody>
<tr>
<th>Action Type</th>
<th>Description</th>
<th>Example</th>
</tr>
<tr>
<td>approval-group chain of authority</td>
<td>The Chain of Authority list is built in a similar manner to the List Creation and List Modification Action Types.  However, rather than using the HR position or supervisor structure to generate the list of approvers, it uses a group of approvers that is predefined.</td>
<td>If a vacancy is being created, then require approvals from Matt, Pat and John.</td>
</tr>
<tr>
<td>pre-chain-of-authority approvals / post-chain-of-authority approvals</td>
<td>Either inserts a new approval list before, or appends a new approval list after, the standard approval list has been generated.</td>
<td>If the vacancy is for the Finance department,require approval from two Finance Managers and then follow the normal approval process of three supervisors required.</td>
</tr>
</tbody>
</table>
<h2>Rules</h2>
<p>As with Actions and Action Types, Rules also use Rule Types to determine the list to build if the results of the Rule are true.  Depending on the Transaction Type, different Rules are available – the following table discusses the Rule Types that are available for iRecruitment Vacancy Approval in Release 12.1.1:</p>
<table>
<tbody>
<tr>
<th>Rule Type</th>
<th>Description</th>
</tr>
<tr>
<td>List Creation</td>
<td>Generates a Chain of Authority list of approvers that uses an organizational hierarchy to build the list.</td>
</tr>
<tr>
<td>List Creation Exception</td>
<td>As with List Creation, builds a Chain of Authority list of approvers.  This list is typically used to suppress a List Creation rule so that approval from a specific group of approvers is required if a condition is met.  For example, based on the recruiting department, force the transaction to be approved by a different group of people.</td>
</tr>
<tr>
<td>List Modification</td>
<td>Grant or revoke final authority to / from an approver, based on certain transaction conditions.</td>
</tr>
<tr>
<td>Substitution</td>
<td>Delegate approval from one person to another, for example during absence.</td>
</tr>
<tr>
<td>Pre List Approver Group / Post List Approver Group</td>
<td>Allows for additional approvers from outside the normal approval group to be added to the chain.</td>
</tr>
<tr>
<td>Combination: List Creation / Combination: List Modification</td>
<td>Combines Actions from Action Types from different Rule Types.</td>
</tr>
</tbody>
</table>
<h2>Configuration Variables</h2>
<p>One final component of AME which I have not mentioned so far are Configuration Variables.  Configuration Variables are normally set during the initial AME build / configuration, as they impact every AME transaction – in the same way that profile options can be set at different levels, AME Configuration Variables can be set on a system-wide or a Transaction Type basis.</p>
<p>The Configuration Variables for AME in Release 12.1.1 are as follows:</p>
<table>
<tbody>
<tr>
<th>Variable Name</th>
<th>Description</th>
</tr>
<tr>
<td>Administrator Approver</td>
<td>An Adminstrator who should be notified in case of any exceptions in Approvals Management.</td>
</tr>
<tr>
<td>Allow All Approver Types</td>
<td>Whether Approvals Management allows all approver types</td>
</tr>
<tr>
<td>Allow All Item Class Rules</td>
<td>Whether Approvals Management allows to create subordinate item class rules</td>
</tr>
<tr>
<td>Allow For Your Information Notifications</td>
<td>Whether Approvals Management allows For Your Information notifications</td>
</tr>
<tr>
<td>Currency Conversion Window</td>
<td>How many days Approvals Management should look back, at most, to find a currency-conversion rate</td>
</tr>
<tr>
<td>Distributed Environment</td>
<td>Whether Approvals Management runs in a distributed-database environment (yes or no)</td>
</tr>
<tr>
<td>Production Functionality</td>
<td>What types of production-rule functionality are allowed</td>
</tr>
<tr>
<td>Purge Frequency</td>
<td>How many days temporary Approvals Management data ages before being purged</td>
</tr>
<tr>
<td>Record Approval Deviations</td>
<td>Whether to record approval deviations or not</td>
</tr>
<tr>
<td>Repeated Approvers</td>
<td>How many times to require an approver&#8217;s approval, in the absence of forwarding</td>
</tr>
</tbody>
</table>
<hr />In the next post, I will be looking at providing the correct grants and roles to users in eBusiness Suite to be able to configure AME &#8211; please check back soon for the next post, and feel free to leave any comments / questions you may have.</p>
<p>Matt</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=AME+Part+Two+%26%238211%3B+Components+of+AME+http://bit.ly/9vD47K" title="Post to Twitter"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-twitter2.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://www.workflowfaq.com/ame-part-two-components-of-ame&amp;title=AME+Part+Two+%26%238211%3B+Components+of+AME" title="Post to Delicious"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a class="tt" href="http://digg.com/submit?url=http://www.workflowfaq.com/ame-part-two-components-of-ame&amp;title=AME+Part+Two+%26%238211%3B+Components+of+AME" title="Post to Digg"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://www.workflowfaq.com/ame-part-two-components-of-ame&amp;t=AME+Part+Two+%26%238211%3B+Components+of+AME" title="Post to Facebook"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a class="tt" href="http://ping.fm/ref/?method=microblog&amp;title=AME+Part+Two+%26%238211%3B+Components+of+AME&amp;link=http://www.workflowfaq.com/ame-part-two-components-of-ame" title="Post to Ping.fm"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-ping.png" alt="Post to Ping.fm" /></a> <a class="tt" href="http://reddit.com/submit?url=http://www.workflowfaq.com/ame-part-two-components-of-ame&amp;title=AME+Part+Two+%26%238211%3B+Components+of+AME" title="Post to Reddit"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://www.workflowfaq.com/ame-part-two-components-of-ame&amp;title=AME+Part+Two+%26%238211%3B+Components+of+AME" title="Post to StumbleUpon"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-su.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.workflowfaq.com/ame-part-two-components-of-ame/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>An introduction to AME</title>
		<link>http://www.workflowfaq.com/an-introduction-to-ame</link>
		<comments>http://www.workflowfaq.com/an-introduction-to-ame#comments</comments>
		<pubDate>Thu, 04 Feb 2010 20:32:20 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Functional]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[ame]]></category>
		<category><![CDATA[approvals]]></category>
		<category><![CDATA[ebs]]></category>
		<category><![CDATA[notifications]]></category>
		<category><![CDATA[R12]]></category>

		<guid isPermaLink="false">http://www.workflowfaq.com/?p=295</guid>
		<description><![CDATA[Recently, I&#8217;ve been asked from a number of places about Oracle&#8217;s Approvals Management Engine, or AME, so in the next few blog posts, I&#8217;ll be taking a look in more detail about what it is and what it can do for you and your organization. AME is an “easy” way for a business analyst / [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } -->Recently, I&#8217;ve been asked from a number of places about Oracle&#8217;s Approvals Management Engine, or AME, so in the next few blog posts, I&#8217;ll be taking a look in more detail about what it is and what it can do for you and your organization.</p>
<p>AME is an “easy” way for a business analyst / functional consultant to define business rules for transaction approvals within eBusiness Suite.  Not all applications modules support AME, however, in which case you are back to the age-old bespoke method of identifying approvers and including custom logic to ensure that the right people are included within the approvals process.  Note that I have used inverted commas for the word “easy” &#8211; AME provides the opportunity to include business rules which can vary widely in complexity.</p>
<p>In this post, I&#8217;ll be looking at the components of AME which are required for configuration, and in later posts I&#8217;ll move onto some practical examples from within iRecruitment and Financials.</p>
<h2>AME Basics</h2>
<p>As I said earlier, the purpose of using AME is to implement specific business rules within the framework of the application to manage the approval of a transaction.  This can always be done outside of AME (and for some modules, this is still a requirement!), but if the approvals process can be captured within AME then this makes for a more straightforward implementation which (theoretically at least) is easier to maintain over the long-term.  When approval is sought, AME uses Workflow notifications to inform the approver that they need to action the request, and to capture their response.</p>
<p>AME (as I said earlier) allows you to implement rules of differing complexity – for example, any invoices which are over £500 must be approved by the requester&#8217;s supervisor; all vacancies created in iRecruitment must be approved by Bob in HR; and so forth.  Many organizations, however, have much more complicated – for example, any invoice which is matched to a purchase order and has any lines which are over £5000 and include heavy machinery must be approved by the Operations Manager and his immediate supervisor (or the next available supervisor with the appropriate authorization limit).  The flexibility that AME brings means that the same method can be adopted for any of these requirements.</p>
<h2>So, why bother with AME?</h2>
<p>As I said earlier, you can already build all of this through custom code – and in versions of the eBusiness Suite that were availably prior to AME, that is what most organizations did.  However, there are some clear advantages of managing the approvals process using AME over using bespoke software.</p>
<p>Firstly, in many cases, business rules can be defined and implemented without the need for any code.  Now that&#8217;s a big one, so I&#8217;ll say it again – IN MANY CASES, BUSINESS RULES CAN BE IMPLEMENTED WITHOUT THE NEED FOR ANY CODE.  Less code means less things to maintain, and less things to go wrong (assuming that the functional configuration is correct and the code is always the thing to go wrong, but we&#8217;ll not go there in this post!!).</p>
<p>Secondly, if there are already hierarchical structures defined in the application, then AME can leverage these as standard – again, there is no need to write custom code to find the next available approver, since AME does it automatically.</p>
<p>Another advantage of using AME is that if there are specific requirements to route an approval to a specific group of people or an individual, then AME provides the person making the functional configuration with the ability to setup specific hierarchies or approval groups which can be used to determine where to route the approval.</p>
<p>The last main benefit (and it&#8217;s a good one!) is that AME has the ability to respond to any changes in the approvals process whilst the process is still going on.  This includes, for example, a change in the approvals hierarchy (which can be included fairly easily within custom code) but also if the business rules themselves are modified during the process, or even if the values of the transaction themselves change during the process – now that&#8217;s clever!  Every time an approver for a transaction responds with an approval, AME checks the rules as they stand at that point in time, and rebuilds the approver list to determine who the next approver should be.  So, let&#8217;s take the simple example above where if the invoice is over £500 then the supervisor must approve the invoice.  An invoice for £1500 is created, AME checks the business rules and notifies the supervisor.  The business analyst then decides that if the invoice is over £1000, it requires three levels of approval, and so makes the change within AME.  When the supervisor responds to the notification, AME rebuilds the approval list using the new rules, identifies who the next approver should be, and then routes the transaction to them for approval.</p>
<p>That&#8217;s the end of my very quick overview of what AME is and why you should use it – in the next post, I&#8217;ll go into the components of AME and how they work together.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=An+introduction+to+AME+http://bit.ly/bYNOyU" title="Post to Twitter"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-twitter2.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://www.workflowfaq.com/an-introduction-to-ame&amp;title=An+introduction+to+AME" title="Post to Delicious"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a class="tt" href="http://digg.com/submit?url=http://www.workflowfaq.com/an-introduction-to-ame&amp;title=An+introduction+to+AME" title="Post to Digg"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://www.workflowfaq.com/an-introduction-to-ame&amp;t=An+introduction+to+AME" title="Post to Facebook"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a class="tt" href="http://ping.fm/ref/?method=microblog&amp;title=An+introduction+to+AME&amp;link=http://www.workflowfaq.com/an-introduction-to-ame" title="Post to Ping.fm"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-ping.png" alt="Post to Ping.fm" /></a> <a class="tt" href="http://reddit.com/submit?url=http://www.workflowfaq.com/an-introduction-to-ame&amp;title=An+introduction+to+AME" title="Post to Reddit"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://www.workflowfaq.com/an-introduction-to-ame&amp;title=An+introduction+to+AME" title="Post to StumbleUpon"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-su.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.workflowfaq.com/an-introduction-to-ame/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Machines running machines!</title>
		<link>http://www.workflowfaq.com/machines-running-machines</link>
		<comments>http://www.workflowfaq.com/machines-running-machines#comments</comments>
		<pubDate>Fri, 04 Dec 2009 16:56:44 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[General Computing]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[R12]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://www.workflowfaq.com/?p=199</guid>
		<description><![CDATA[There&#8217;s a line from C3-PO in Attack of the Clones where he sees robots making battle droids, and he says something like &#8220;machines making machines! Huh! How perverse&#8221;. So now that I have VMWare running, here&#8217;s my version &#8211; Linux running Linux]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a line from C3-PO in <a href="http://www.workflowfaq.com/go.php?http://www.imdb.com/title/tt0121765/" target="_blank">Attack of the Clones</a> where he sees robots making battle droids, and he says something like &#8220;machines making machines! Huh! How perverse&#8221;.</p>
<p>So now that I have VMWare running, here&#8217;s my version &#8211; Linux running Linux <img src='http://www.workflowfaq.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/wp-content/uploads/2009/12/Screenshot.jpg"><img src="http://www.workflowfaq.com/wp-content/uploads/2009/12/Screenshot-1024x399.jpg" alt="Screenshot" title="Screenshot" width="512" height="200" class="aligncenter size-large wp-image-205" /></a></p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Machines+running+machines%21+http://bit.ly/dhU8os" title="Post to Twitter"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-twitter2.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://www.workflowfaq.com/machines-running-machines&amp;title=Machines+running+machines%21" title="Post to Delicious"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a class="tt" href="http://digg.com/submit?url=http://www.workflowfaq.com/machines-running-machines&amp;title=Machines+running+machines%21" title="Post to Digg"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://www.workflowfaq.com/machines-running-machines&amp;t=Machines+running+machines%21" title="Post to Facebook"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a class="tt" href="http://ping.fm/ref/?method=microblog&amp;title=Machines+running+machines%21&amp;link=http://www.workflowfaq.com/machines-running-machines" title="Post to Ping.fm"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-ping.png" alt="Post to Ping.fm" /></a> <a class="tt" href="http://reddit.com/submit?url=http://www.workflowfaq.com/machines-running-machines&amp;title=Machines+running+machines%21" title="Post to Reddit"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://www.workflowfaq.com/machines-running-machines&amp;title=Machines+running+machines%21" title="Post to StumbleUpon"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-su.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.workflowfaq.com/machines-running-machines/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Invalid package error for a valid package! &#8211; Revisited</title>
		<link>http://www.workflowfaq.com/invalid-package-error-for-a-valid-package-revisited</link>
		<comments>http://www.workflowfaq.com/invalid-package-error-for-a-valid-package-revisited#comments</comments>
		<pubDate>Wed, 14 Oct 2009 10:52:26 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[existing state]]></category>
		<category><![CDATA[hints]]></category>
		<category><![CDATA[invalid]]></category>
		<category><![CDATA[metalink]]></category>
		<category><![CDATA[package]]></category>

		<guid isPermaLink="false">http://www.workflowfaq.com/?p=177</guid>
		<description><![CDATA[A while back, I wrote this post about the dreaded &#8220;existing state of the packages&#8221; error when recompiling code that is used in a Workflow process. There is some degree of official guidance on what you need to do now, contained in Metalink note 754993.1 &#8211; &#8220;How can you Avoid Bouncing the Database after Changing a [...]]]></description>
			<content:encoded><![CDATA[<p>A while back, I wrote <a href="http://www.workflowfaq.com/go.php?http://www.workflowfaq.com/invalid-package-error-for-a-valid-package">this post</a> about the dreaded &#8220;existing state of the packages&#8221; error when recompiling code that is used in a Workflow process.</p>
<p>There is some degree of official guidance on what you need to do now, contained in Metalink note 754993.1<span style="white-space: pre;"> &#8211; &#8220;<span style="white-space: normal;">How can you Avoid Bouncing the Database after Changing a WF Package&#8221;.  The advice is, to be honest, perhaps a little Draconian and unwieldy, but the guidance from Oracle is that all you need to do is:</span></span></p>
<ol>
<li>Shut down the concurrent managers</li>
<li>Flush the shard pool</li>
<li>Update the package</li>
<li>Restart the concurrent managers</li>
</ol>
<p>Now, that certainly will do it (so would bouncing the database, though!) &#8211; the likelihood of a developer shutting down the managers, then flushing the pool, and THEN compiling their code is probably quite low, though <img src='http://www.workflowfaq.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Invalid+package+error+for+a+valid+package%21+%26%238211%3B+Revisited+http://bit.ly/bWKhzs" title="Post to Twitter"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-twitter2.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://www.workflowfaq.com/invalid-package-error-for-a-valid-package-revisited&amp;title=Invalid+package+error+for+a+valid+package%21+%26%238211%3B+Revisited" title="Post to Delicious"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a class="tt" href="http://digg.com/submit?url=http://www.workflowfaq.com/invalid-package-error-for-a-valid-package-revisited&amp;title=Invalid+package+error+for+a+valid+package%21+%26%238211%3B+Revisited" title="Post to Digg"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://www.workflowfaq.com/invalid-package-error-for-a-valid-package-revisited&amp;t=Invalid+package+error+for+a+valid+package%21+%26%238211%3B+Revisited" title="Post to Facebook"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a class="tt" href="http://ping.fm/ref/?method=microblog&amp;title=Invalid+package+error+for+a+valid+package%21+%26%238211%3B+Revisited&amp;link=http://www.workflowfaq.com/invalid-package-error-for-a-valid-package-revisited" title="Post to Ping.fm"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-ping.png" alt="Post to Ping.fm" /></a> <a class="tt" href="http://reddit.com/submit?url=http://www.workflowfaq.com/invalid-package-error-for-a-valid-package-revisited&amp;title=Invalid+package+error+for+a+valid+package%21+%26%238211%3B+Revisited" title="Post to Reddit"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://www.workflowfaq.com/invalid-package-error-for-a-valid-package-revisited&amp;title=Invalid+package+error+for+a+valid+package%21+%26%238211%3B+Revisited" title="Post to StumbleUpon"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-su.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.workflowfaq.com/invalid-package-error-for-a-valid-package-revisited/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using /nolog</title>
		<link>http://www.workflowfaq.com/using-nolog</link>
		<comments>http://www.workflowfaq.com/using-nolog#comments</comments>
		<pubDate>Fri, 24 Jul 2009 22:10:41 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[nolog]]></category>
		<category><![CDATA[passwords]]></category>
		<category><![CDATA[UNIX]]></category>

		<guid isPermaLink="false">http://www.workflowfaq.com/?p=162</guid>
		<description><![CDATA[A colleague of mine recently asked me why I always started Oracle programs using a &#8220;/nolog&#8221; and then explicitly connecting rather than just passing in the username and password in one go.  Some years back, I worked with an Oracle guru who showed me exactly why you shouldn&#8217;t, just by using one simple command in [...]]]></description>
			<content:encoded><![CDATA[<p>A colleague of mine recently asked me why I always started Oracle programs using a &#8220;/nolog&#8221; and then explicitly connecting rather than just passing in the username and password in one go.  Some years back, I worked with an Oracle guru who showed me exactly why you shouldn&#8217;t, just by using one simple command in UNIX:</p>
<blockquote><p><code>ps -ef<br />
UID   PID  PPID  C    STIME TTY      TIME CMD<br />
oracle    4325  5180  0 12:00:04 ?   0:00 sqlplus system/manager<br />
appluser  3118  3012  0 12:00:03 ?   0:00 sqlldr scott/tiger<br />
appluser 26332 24101  0 11:00:15 ?   0:00 imp matt/matt full=y</code></p></blockquote>
<p>As you can see &#8211; if you pass in the username and password, then anyone can easily find it out using ps!</p>
<p>So, how go you get round it?  If you can&#8217;t connect from within the tool (as you can in SQL*Plus), you can use a password file, which you should then delete once you have done the job, e.g. &#8220;sqlldr parfile=$PWDFILE&#8230;.&#8221; where the file contains &#8220;userid=matt/matt&#8221;.</p>
<p>In order to make it even more secure, then you could use temporary files for your password file, e.g.</p>
<blockquote><p><code>PWDFILE=$(mktemp)<br />
echo "userid=matt/matt" &gt; $PWDFILE<br />
sqlldr parfile=$PWDFILE ....<br />
rm $PWDFILE</code></p></blockquote>
<p>mktemp is a utility which will create a temporary file with a unique name.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Using+%2Fnolog+http://bit.ly/aTb3Qy" title="Post to Twitter"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-twitter2.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://www.workflowfaq.com/using-nolog&amp;title=Using+%2Fnolog" title="Post to Delicious"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a class="tt" href="http://digg.com/submit?url=http://www.workflowfaq.com/using-nolog&amp;title=Using+%2Fnolog" title="Post to Digg"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://www.workflowfaq.com/using-nolog&amp;t=Using+%2Fnolog" title="Post to Facebook"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a class="tt" href="http://ping.fm/ref/?method=microblog&amp;title=Using+%2Fnolog&amp;link=http://www.workflowfaq.com/using-nolog" title="Post to Ping.fm"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-ping.png" alt="Post to Ping.fm" /></a> <a class="tt" href="http://reddit.com/submit?url=http://www.workflowfaq.com/using-nolog&amp;title=Using+%2Fnolog" title="Post to Reddit"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://www.workflowfaq.com/using-nolog&amp;title=Using+%2Fnolog" title="Post to StumbleUpon"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-su.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.workflowfaq.com/using-nolog/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When does 1 != 1?</title>
		<link>http://www.workflowfaq.com/when-does-1-1</link>
		<comments>http://www.workflowfaq.com/when-does-1-1#comments</comments>
		<pubDate>Wed, 15 Jul 2009 21:35:17 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.workflowfaq.com/?p=156</guid>
		<description><![CDATA[I was playing about recently with some basic calculations and rounding within the Oracle database, using release 11.1.0.6 (and I&#8217;m sure it&#8217;s the same in earlier databases releases).  I&#8217;d been busy with Dr. Kawashima&#8217;s Brain Training: How Old is Your Brain? on my Nintendo DS and doing the mental calculations, and was thinking about the basic calculation [...]]]></description>
			<content:encoded><![CDATA[<p>I was playing about recently with some basic calculations and rounding within the Oracle database, using release 11.1.0.6 (and I&#8217;m sure it&#8217;s the same in earlier databases releases).  I&#8217;d been busy with <a href="http://www.workflowfaq.com/go.php?http://www.nintendo.co.uk/NOE/en_GB/games/nds/dr_kawashimas_brain_training_how_old_is_your_brain_3234.html">Dr. Kawashima&#8217;s Brain Training: How Old is Your Brain?</a> on my Nintendo DS and doing the mental calculations, and was thinking about the basic calculation 1/3*3.</p>
<p>Now, following my PEMDAS (I had two years in an American school when I was younger &#8211; for those in the UK, think BODMAS) &#8211; the sum would be calculated as (1/3) * 3 so would give 1 as the result &#8211; try it in any calculator and you should get the same result.</p>
<p>Try it in Oracle, and you get the same:</p>
<blockquote><p><code>SQL&gt; SELECT 1/3*3 FROM DUAL;<br />
1/3*3<br />
-----<br />
1</code></p></blockquote>
<p>That&#8217;s all fine &#8211; now try a slight variation:</p>
<blockquote><p><code>SQL&gt; SELECT 'OK' FROM DUAL WHERE 1/3*3 = 1;<br />
no rows selected</code></p></blockquote>
<p>Hmmmm &#8211; so even though it returns 1, it doesn&#8217;t equal 1&#8230;.  Is it true for all values?</p>
<blockquote><p><code>SQL&gt; SELECT * FROM DUAL WHERE 1/3*3=1;<br />
no rows selected</code></p>
<p><code> </code><code>SQL&gt; SELECT level, CASE WHEN 1/level*level = 1 THEN 'OK' END ok FROM DUAL CONNECT BY level &lt;= 20;<br />
L O<br />
———- -<br />
1 OK<br />
2 OK<br />
3<br />
4 OK<br />
5 OK<br />
6 OK<br />
7 OK<br />
8 OK<br />
9<br />
10 OK<br />
11<br />
12<br />
13<br />
14<br />
15 OK<br />
16 OK<br />
17 OK<br />
18 OK<br />
19<br />
20 OK</code></p></blockquote>
<p>So, there you have it &#8211; a handful (and there are more) of examples where 1 !=1 in Oracle!!</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=When+does+1+%21%3D+1%3F+http://bit.ly/9GUas9" title="Post to Twitter"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-twitter2.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://www.workflowfaq.com/when-does-1-1&amp;title=When+does+1+%21%3D+1%3F" title="Post to Delicious"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-delicious.png" alt="Post to Delicious" /></a> <a class="tt" href="http://digg.com/submit?url=http://www.workflowfaq.com/when-does-1-1&amp;title=When+does+1+%21%3D+1%3F" title="Post to Digg"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-digg.png" alt="Post to Digg" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://www.workflowfaq.com/when-does-1-1&amp;t=When+does+1+%21%3D+1%3F" title="Post to Facebook"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-facebook.png" alt="Post to Facebook" /></a> <a class="tt" href="http://ping.fm/ref/?method=microblog&amp;title=When+does+1+%21%3D+1%3F&amp;link=http://www.workflowfaq.com/when-does-1-1" title="Post to Ping.fm"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-ping.png" alt="Post to Ping.fm" /></a> <a class="tt" href="http://reddit.com/submit?url=http://www.workflowfaq.com/when-does-1-1&amp;title=When+does+1+%21%3D+1%3F" title="Post to Reddit"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-reddit.png" alt="Post to Reddit" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://www.workflowfaq.com/when-does-1-1&amp;title=When+does+1+%21%3D+1%3F" title="Post to StumbleUpon"><img class="nothumb" src="http://www.workflowfaq.com/wp-content/plugins/tweet-this/icons/tt-su.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.workflowfaq.com/when-does-1-1/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
