<?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>Groovy</title>
	<atom:link href="https://khalil232.com/tag/groovy/feed/" rel="self" type="application/rss+xml" />
	<link>https://khalil232.com</link>
	<description></description>
	<lastBuildDate>Sun, 12 Apr 2026 18:11:30 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/khalil232-favicon-color.png?fit=32%2C32&#038;ssl=1</url>
	<title>Groovy</title>
	<link>https://khalil232.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">222554886</site>	<item>
		<title>Validations in groovy for business object</title>
		<link>https://khalil232.com/vbcs-tutorials/59/validations-in-groovy-for-business-object/</link>
		
		<dc:creator><![CDATA[khalil]]></dc:creator>
		<pubDate>Fri, 08 Sep 2023 23:54:23 +0000</pubDate>
				<category><![CDATA[VBCS-Tutorials]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[VBCS]]></category>
		<guid isPermaLink="false">https://khalil232.com/?p=59</guid>

					<description><![CDATA[We can write simple or complex validations at business objects level in groovy For all these we can use validations using groovy. General idea is to create a object function using groovy to validate and use this object function in before insert trigger or before update trigger. Let us say we have a Business Object [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>We can write simple or complex validations at business objects level in groovy </p>



<ul class="wp-block-list">
<li>In some cases we want to check if age > 18. </li>



<li>In some case we want to check for the object row the status is approved then no changes should happen. </li>



<li>In some cases we want to allow only the same user to edit the record. </li>



<li>In some case we want to validate using some external API ( to check availability of quantity or price ).  </li>
</ul>



<p>For all these we can use validations using groovy.</p>



<p>General idea is to create a object function using groovy to validate and use this object function in before insert trigger or before update trigger. </p>



<p></p>



<p>Let us say we have a Business Object Employee with fields (id, first name, last name, age) and we want to have validation that age should be at least 18 years.</p>



<p>Object function code. </p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="if ( age &lt; 18 ) {
  throw new oracle.jbo.ValidationException('Age should not be less than 18');
}" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #FF79C6">if</span><span style="color: #F8F8F2"> ( age </span><span style="color: #FF79C6">&lt;</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">18</span><span style="color: #F8F8F2"> ) {</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">throw</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6; font-weight: bold">new</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD; font-style: italic">oracle.jbo.ValidationException</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">&#39;</span><span style="color: #F1FA8C">Age should not be less than 18</span><span style="color: #E9F284">&#39;</span><span style="color: #F8F8F2">);</span></span>
<span class="line"><span style="color: #F8F8F2">}</span></span></code></pre></div>



<p>Let us say we have a Business Object ApprovalBO with fields (id, approval name, status {draft, created, pending approval, rejected, approved} ) and we want to restrict user to not edit any data once the record status is set to approved or rejected. </p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="def origStatus = getOriginalAttributeValue('status')
if ( origStatus == 'Approved' || origStatus == 'Rejected' ) {
  throw new oracle.jbo.ValidationException('Changes not allowed for this record as status is ' + origStatus);
}" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #FF79C6">def</span><span style="color: #F8F8F2"> origStatus </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #50FA7B">getOriginalAttributeValue</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">&#39;</span><span style="color: #F1FA8C">status</span><span style="color: #E9F284">&#39;</span><span style="color: #F8F8F2">)</span></span>
<span class="line"><span style="color: #FF79C6">if</span><span style="color: #F8F8F2"> ( origStatus </span><span style="color: #FF79C6">==</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">&#39;</span><span style="color: #F1FA8C">Approved</span><span style="color: #E9F284">&#39;</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">||</span><span style="color: #F8F8F2"> origStatus </span><span style="color: #FF79C6">==</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">&#39;</span><span style="color: #F1FA8C">Rejected</span><span style="color: #E9F284">&#39;</span><span style="color: #F8F8F2"> ) {</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">throw</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6; font-weight: bold">new</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD; font-style: italic">oracle.jbo.ValidationException</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">&#39;</span><span style="color: #F1FA8C">Changes not allowed for this record as status is </span><span style="color: #E9F284">&#39;</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">+</span><span style="color: #F8F8F2"> origStatus);</span></span>
<span class="line"><span style="color: #F8F8F2">}</span></span></code></pre></div>



<p>Let us say we have a Business Object Transaction with fields (id, transaction name, created by, updated by) and we want to have validation that only created by user can update the value of record.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="def secCtx = adf.context.getSecurityContext()
def user = secCtx.getUserName()

if ( createdBy != user ) {
  throw new oracle.jbo.ValidationException('Only created user can update the record');
}" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #FF79C6">def</span><span style="color: #F8F8F2"> secCtx </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> adf.context.</span><span style="color: #50FA7B">getSecurityContext</span><span style="color: #F8F8F2">()</span></span>
<span class="line"><span style="color: #FF79C6">def</span><span style="color: #F8F8F2"> user </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> secCtx.</span><span style="color: #50FA7B">getUserName</span><span style="color: #F8F8F2">()</span></span>
<span class="line"></span>
<span class="line"><span style="color: #FF79C6">if</span><span style="color: #F8F8F2"> ( createdBy </span><span style="color: #FF79C6">!=</span><span style="color: #F8F8F2"> user ) {</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">throw</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6; font-weight: bold">new</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD; font-style: italic">oracle.jbo.ValidationException</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">&#39;</span><span style="color: #F1FA8C">Only created user can update the record</span><span style="color: #E9F284">&#39;</span><span style="color: #F8F8F2">);</span></span>
<span class="line"><span style="color: #F8F8F2">}</span></span></code></pre></div>



<p>Let us say we have a Business Object Inventory with fields (id, inventory name, quantity, price) and we want to have validation against a external api. We can configure the external api using service connections. We can make rest call in groovy and validate against it.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="def priceSvc = newService('priceService');
def responseObj = priceSvc.getQuantityAndPrice();
def quantityApi = responseObj.quantity;
def priceApi = responseObj.price;

if ( quantity &gt; quantityApi ) {
  throw new oracle.jbo.ValidationException('Quantity entered is greater that avalible quantity from api (' + quantityApi + ')');
}

if ( price &gt; priceApi ) {
  throw new oracle.jbo.ValidationException('Price entered is greater that avalible price from api (' + priceApi  + ')');
}" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #FF79C6">def</span><span style="color: #F8F8F2"> priceSvc </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #50FA7B">newService</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">&#39;</span><span style="color: #F1FA8C">priceService</span><span style="color: #E9F284">&#39;</span><span style="color: #F8F8F2">);</span></span>
<span class="line"><span style="color: #FF79C6">def</span><span style="color: #F8F8F2"> responseObj </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> priceSvc.</span><span style="color: #50FA7B">getQuantityAndPrice</span><span style="color: #F8F8F2">();</span></span>
<span class="line"><span style="color: #FF79C6">def</span><span style="color: #F8F8F2"> quantityApi </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> responseObj.quantity;</span></span>
<span class="line"><span style="color: #FF79C6">def</span><span style="color: #F8F8F2"> priceApi </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> responseObj.price;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #FF79C6">if</span><span style="color: #F8F8F2"> ( quantity </span><span style="color: #FF79C6">&gt;</span><span style="color: #F8F8F2"> quantityApi ) {</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">throw</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6; font-weight: bold">new</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD; font-style: italic">oracle.jbo.ValidationException</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">&#39;</span><span style="color: #F1FA8C">Quantity entered is greater that avalible quantity from api (</span><span style="color: #E9F284">&#39;</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">+</span><span style="color: #F8F8F2"> quantityApi </span><span style="color: #FF79C6">+</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">&#39;</span><span style="color: #F1FA8C">)</span><span style="color: #E9F284">&#39;</span><span style="color: #F8F8F2">);</span></span>
<span class="line"><span style="color: #F8F8F2">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #FF79C6">if</span><span style="color: #F8F8F2"> ( price </span><span style="color: #FF79C6">&gt;</span><span style="color: #F8F8F2"> priceApi ) {</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">throw</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6; font-weight: bold">new</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD; font-style: italic">oracle.jbo.ValidationException</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">&#39;</span><span style="color: #F1FA8C">Price entered is greater that avalible price from api (</span><span style="color: #E9F284">&#39;</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">+</span><span style="color: #F8F8F2"> priceApi  </span><span style="color: #FF79C6">+</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">&#39;</span><span style="color: #F1FA8C">)</span><span style="color: #E9F284">&#39;</span><span style="color: #F8F8F2">);</span></span>
<span class="line"><span style="color: #F8F8F2">}</span></span></code></pre></div>



<p></p>



<p></p>



<p>  </p>



<p>Reference &#8211; <a href="https://docs.oracle.com/en/cloud/paas/integration-cloud/visual-developer/trigger-rules-business-objects-1.html">https://docs.oracle.com/en/cloud/paas/integration-cloud/visual-developer/trigger-rules-business-objects-1.html</a></p>



<p><a href="https://docs.oracle.com/en/cloud/paas/app-builder-cloud/visual-builder-groovy/groovy-tips-and-techniques.html#groovy-tips-and-techniques">https://docs.oracle.com/en/cloud/paas/app-builder-cloud/visual-builder-groovy/groovy-tips-and-techniques.html#groovy-tips-and-techniques</a></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">59</post-id>	</item>
		<item>
		<title>Delete all rows from business object using groovy in vbcs</title>
		<link>https://khalil232.com/vbcs-tutorials/57/delete-all-rows-from-business-object-using-groovy-in-vbcs/</link>
		
		<dc:creator><![CDATA[khalil]]></dc:creator>
		<pubDate>Sun, 27 Aug 2023 21:21:09 +0000</pubDate>
				<category><![CDATA[VBCS-Tutorials]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[VBCS]]></category>
		<guid isPermaLink="false">https://khalil232.com/?p=57</guid>

					<description><![CDATA[Users can navigate to Business Objects ( BO ) -&#62; Objects -&#62; Select Object ( ex: Department or Employee ) -&#62; Business Rules -&#62; Object Function -&#62; New Object Function In Object function we can write groovy code to do operations Groovy code to delete all rows in business object The following code will fetch [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Users can navigate to Business Objects ( BO ) -&gt; Objects -&gt; Select Object ( ex: Department or Employee ) -&gt; Business Rules -&gt; Object Function -&gt; New Object Function </p>



<p>In Object function we can write groovy code to do operations</p>



<p>Groovy code to delete all rows in business object </p>



<p>The following code will fetch all the data from a particular BO and delete it.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="def vo = newView('EmployeeBO')
vo.executeQuery()
while (vo.hasNext()) {
  def curRow = vo.next()
  curRow.remove()
}" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #FF79C6">def</span><span style="color: #F8F8F2"> vo </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #50FA7B">newView</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">&#39;</span><span style="color: #F1FA8C">EmployeeBO</span><span style="color: #E9F284">&#39;</span><span style="color: #F8F8F2">)</span></span>
<span class="line"><span style="color: #F8F8F2">vo.</span><span style="color: #50FA7B">executeQuery</span><span style="color: #F8F8F2">()</span></span>
<span class="line"><span style="color: #FF79C6">while</span><span style="color: #F8F8F2"> (vo.</span><span style="color: #50FA7B">hasNext</span><span style="color: #F8F8F2">()) {</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">def</span><span style="color: #F8F8F2"> curRow </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> vo.</span><span style="color: #50FA7B">next</span><span style="color: #F8F8F2">()</span></span>
<span class="line"><span style="color: #F8F8F2">  curRow.</span><span style="color: #50FA7B">remove</span><span style="color: #F8F8F2">()</span></span>
<span class="line"><span style="color: #F8F8F2">}</span></span></code></pre></div>



<p>We can write this code in a separate Business object object function and call it using rest API.</p>



<p>This will be useful in scenarios where we want to delete large amount of data. Instead of calling delete API for each BO we can call the above object function to delete multiple records in one API call.</p>



<p>We can also customize this code by adding query to vo like below </p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="def vo = newView('EmployeeBO')
vo.appendViewCriteria(&quot;Salary between 50000 and 75000&quot;)
vo.executeQuery()
while (vo.hasNext()) {
  def curRow = vo.next()
  curRow.remove()
}" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #FF79C6">def</span><span style="color: #F8F8F2"> vo </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #50FA7B">newView</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">&#39;</span><span style="color: #F1FA8C">EmployeeBO</span><span style="color: #E9F284">&#39;</span><span style="color: #F8F8F2">)</span></span>
<span class="line"><span style="color: #F8F8F2">vo.</span><span style="color: #50FA7B">appendViewCriteria</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">&quot;</span><span style="color: #F1FA8C">Salary between 50000 and 75000</span><span style="color: #E9F284">&quot;</span><span style="color: #F8F8F2">)</span></span>
<span class="line"><span style="color: #F8F8F2">vo.</span><span style="color: #50FA7B">executeQuery</span><span style="color: #F8F8F2">()</span></span>
<span class="line"><span style="color: #FF79C6">while</span><span style="color: #F8F8F2"> (vo.</span><span style="color: #50FA7B">hasNext</span><span style="color: #F8F8F2">()) {</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">def</span><span style="color: #F8F8F2"> curRow </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> vo.</span><span style="color: #50FA7B">next</span><span style="color: #F8F8F2">()</span></span>
<span class="line"><span style="color: #F8F8F2">  curRow.</span><span style="color: #50FA7B">remove</span><span style="color: #F8F8F2">()</span></span>
<span class="line"><span style="color: #F8F8F2">}</span></span></code></pre></div>



<p>or by checking some logic using groovy like below </p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="def vo = newView('EmployeeBO')
vo.executeQuery()
while (vo.hasNext()) {
  def curRow = vo.next()
  if ( curRow.Salary &gt;= 5000 &amp;&amp; curRow.Salary &lt;= 75000 ) {
    curRow.remove()
  }
}" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #FF79C6">def</span><span style="color: #F8F8F2"> vo </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #50FA7B">newView</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">&#39;</span><span style="color: #F1FA8C">EmployeeBO</span><span style="color: #E9F284">&#39;</span><span style="color: #F8F8F2">)</span></span>
<span class="line"><span style="color: #F8F8F2">vo.</span><span style="color: #50FA7B">executeQuery</span><span style="color: #F8F8F2">()</span></span>
<span class="line"><span style="color: #FF79C6">while</span><span style="color: #F8F8F2"> (vo.</span><span style="color: #50FA7B">hasNext</span><span style="color: #F8F8F2">()) {</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">def</span><span style="color: #F8F8F2"> curRow </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> vo.</span><span style="color: #50FA7B">next</span><span style="color: #F8F8F2">()</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">if</span><span style="color: #F8F8F2"> ( </span><span style="color: #8BE9FD; font-style: italic">curRow.Salary</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">&gt;=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">5000</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">&amp;&amp;</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD; font-style: italic">curRow.Salary</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">&lt;=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">75000</span><span style="color: #F8F8F2"> ) {</span></span>
<span class="line"><span style="color: #F8F8F2">    curRow.</span><span style="color: #50FA7B">remove</span><span style="color: #F8F8F2">()</span></span>
<span class="line"><span style="color: #F8F8F2">  }</span></span>
<span class="line"><span style="color: #F8F8F2">}</span></span></code></pre></div>



<p>You can find more code on groovy capabilities from the following reference.</p>



<p><a href="https://docs.oracle.com/en/cloud/paas/app-builder-cloud/visual-builder-groovy/groovy-tips-and-techniques.html#groovy-tips-and-techniques">https://docs.oracle.com/en/cloud/paas/app-builder-cloud/visual-builder-groovy/groovy-tips-and-techniques.html#groovy-tips-and-techniques</a></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">57</post-id>	</item>
	</channel>
</rss>
