<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-27532376</atom:id><lastBuildDate>Thu, 12 Nov 2009 13:27:53 +0000</lastBuildDate><title>Susan Duncan</title><description>Filtering the Muddy Waters of ALM, Team Development, Database and Oracle ADF in JDeveloper</description><link>http://susanduncan.blogspot.com/</link><managingEditor>noreply@blogger.com (Susan)</managingEditor><generator>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/SusanDuncan" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-7545979906790601611</guid><pubDate>Mon, 21 Sep 2009 16:09:00 +0000</pubDate><atom:updated>2009-09-21T16:10:08.684Z</atom:updated><title /><description>&lt;h2 class="bTitle"&gt;Announcing new Oracle Development SIG in the UK&lt;/h2&gt;  &lt;div class="bText"&gt;    &lt;p&gt;On the 27th of October, the UKOUG are launching a new &lt;a href="http://www.ukoug.org/calendar/show_events.jsp?year=2009&amp;amp;month=10&amp;amp;day=27"&gt;Development SIG &lt;/a&gt;aimed at any developer who is developing using Oracle tools and technology. The first special interest group (SIG) will have a "modernization" theme to it and covers topics as including Apex, SOA, Forms, Designer and JDeveloper.&lt;/p&gt;  &lt;p&gt;A full SIG agenda is published &lt;a href="http://www.ukoug.org/calendar/show_events.jsp?year=2009&amp;amp;month=10&amp;amp;day=27"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;As usual with these events, space is limited and given the wealth of experienced presenters and topics, it should serve as a great learning opportunity as well as the chance to exchange ideas and meet with fellow developers.&lt;/p&gt;    &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-7545979906790601611?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2009/09/announcing-new-oracle-development-sig.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-8860882188681872790</guid><pubDate>Mon, 20 Jul 2009 10:57:00 +0000</pubDate><atom:updated>2009-07-20T11:48:51.774Z</atom:updated><title>Team Productivity Center Tutorial Published</title><description>There is now an &lt;a href="http://www.oracle.com/technology/obe/obe11jdev/bulldog/gettingstartedtpc/getting_started_tpc.htm"&gt;Oracle By Example (OBE) tutorial &lt;/a&gt;available for TPC. It takes you through a number of topics including, on the admin side, setting up teams and integrating with repositories and, as a TPC user, querying repositories and creating relationships and tagging items across repositories.&lt;br /&gt;&lt;br /&gt;It assumes that you have already installed or have access to TPC on the server. If not,  &lt;a href="http://www.oracle.com/technology/software/products/tpc/softtpc.html"&gt;here &lt;/a&gt;are instructions on doing that. The OBE includes images and examples using JIRA and MS Project Server but for a tutorial on the Rally Software integration, explore their &lt;a href="http://www.rallydev.com/oracle"&gt;site&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And, as always, give me your feedback!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-8860882188681872790?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2009/07/team-productivity-center-tutorial.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-6003884955614772279</guid><pubDate>Thu, 16 Jul 2009 09:05:00 +0000</pubDate><atom:updated>2009-07-16T09:49:19.996Z</atom:updated><title>Connecting with Team Productivity Center</title><description>Well, it's been quite a couple of weeks. TPC was featured in the developer tools section of the&lt;a href="http://www.oracle.com/technology/products/middleware/index.html"&gt; Fusion Middleware 11&lt;span style="font-style: italic;"&gt;g&lt;/span&gt;&lt;/a&gt; launch and got some good press coverage (for instance &lt;a href="http://www.eweek.com/c/a/Application-Development/Oracle-Delves-Into-Application-Lifecycle-Management-110445"&gt;eWeek&lt;/a&gt;) and the bloggers were our in force.  You can watch the launch and see Duncan Mills use TPC in his demo. He has also recorded an Oracle &lt;a href="http://feedproxy.google.com/%7Er/OracleOfmRadio/%7E3/q9j1X7FhF0I/7720784_duncan_mills_060809.m4v"&gt;Videocast &lt;/a&gt;and &lt;a href="http://feedproxy.google.com/%7Er/OracleOfmRadio/%7E3/JteqRfdtXro/7720784_duncan_mills_060809.mp3"&gt;Podcast &lt;/a&gt;introducing TPC.&lt;br /&gt;&lt;br /&gt;My aim is to get as many users to download and use it as possible (actually, that is every Product Manager's aim for their product!) That is going well, but I could do with your help to get the news out there.  The ALM repositories we integrate with currently are all leaders in their field. The JIRA integration is a great productivity booster and the more I work with JIRA the more I realise how flexible it is. Microsoft Project Server is widely used in enterprise organisations and Rally Software is a world leader in agile development.&lt;br /&gt;&lt;br /&gt;We are working on additional connectors (more news on that when I can divulge more) but there is always room for more. I'd love to hear from you on what ALM repositories you would like to see TPC integrate with. I'd love to hear from you if you have an internal system you would like to write a connector to integrate it with TPC. In fact, I'd love to hear from you in any capacity concerning TPC - and that, of course, includes those of you who have reported bugs too ;-)&lt;br /&gt;&lt;br /&gt;John Stegeman, an Oracle Ace Director, is interested in creating a connector to TRAC. He announced this with a &lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=926937"&gt;JDeveloper forum post&lt;/a&gt; saying, " &lt;span style="font-style: italic;"&gt;I've been thinking about writing a connector for an issue management system that I use (of course, there &lt;/span&gt;&lt;b style="font-style: italic;"&gt;had&lt;/b&gt;&lt;span style="font-style: italic;"&gt; to be a selfish reason), TRAC. I think an ideal way to do this would be with a small team of developers working together on the new sample code site hosted by Oracle (&lt;/span&gt;&lt;a style="font-style: italic;" class="jive-link-external" href="http://www.samplecode.oracle.com/"&gt;http://www.samplecode.oracle.com&lt;/a&gt;&lt;span style="font-style: italic;"&gt;). &lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;I think this is a great idea. It would be about a month of effort and you would get the opportunity not only to get to know our connector framework but to work as part of a small team and gain experience to perhaps go on to creating a connector for something within your own organisation. You can contact John through the forum post. I would highly recommend it (well, I would, wouldn't I?)&lt;br /&gt;&lt;br /&gt;So, download, use, report, connect, and code - yep, that about covers it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-6003884955614772279?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2009/07/well-its-been-quite-couple-of-weeks.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-3888101548568765204</guid><pubDate>Wed, 01 Jul 2009 14:22:00 +0000</pubDate><atom:updated>2009-07-01T15:11:23.481Z</atom:updated><title>Introducing Oracle Team Productivity Center</title><description>Today is an exciting day for me. It's the launch of &lt;a href="http://www.oracle.com/technology/products/middleware/index.html"&gt;Oracle Fusion Middleware 11g&lt;/a&gt; in the USA and tomorrow the launch event comes to London. Included in this launch is, of course,  Oracle JDeveloper 11gR1.&lt;br /&gt;&lt;br /&gt;For some time I've been working on a new aspect of JDeveloper -&lt;a href="http://www.oracle.com/technology/products/tpc/index.html"&gt; Oracle Team Productivity Center&lt;/a&gt;.  It is our first release of functionality to enable better Application Lifecycle Management for JDeveloper users and it is included in Oracle JDeveloper 11gR1.&lt;br /&gt;&lt;br /&gt;TPC  introduces the Team Navigator to JDeveloper. Through this navigator I can set up my team and user structure, applying team roles to users in teams/projects. I can connect to my existing ALM repositories and query/update artifacts in those repositories while working in JDeveloper.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tDM321vXxtw/Skt54y4ckTI/AAAAAAAAAFU/i2sLd57mTNA/s1600-h/arch.jpg"&gt;&lt;img style="cursor: pointer; width: 377px; height: 400px;" src="http://1.bp.blogspot.com/_tDM321vXxtw/Skt54y4ckTI/AAAAAAAAAFU/i2sLd57mTNA/s400/arch.jpg" alt="" id="BLOGGER_PHOTO_ID_5353506598698127666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In addition I can contextually link artifacts from different ALM repositories together - so I can create a relationship between a  requirement defined in JIRA and a task in MS Project Server and I can tag items (needs a use case, ready for code review etc.) that are either visible to me or to all the members of my team. And I can be a member of multiple teams too.  If I'm working on one task and am asked to switch to some other piece of code I can save the state of my development files open in the IDE against a specific work item. Work item is the generic term we give to any ALM artifact queried from an integrated ALM repository. So in the example below, I am working on a JIRA issue - SSTORE-23. If I Save Context I will save the Business Component files open in the editor along with the position and sizing of all the other JDeveloper windows. Then when I come back to this piece of work I can re-open SSTORE and Restore Context - to return my IDE to the saved state. Another great productivity booster!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tDM321vXxtw/Skt5erk6vnI/AAAAAAAAAFM/iQRoI_Ju4Lo/s1600-h/context1.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 196px;" src="http://2.bp.blogspot.com/_tDM321vXxtw/Skt5erk6vnI/AAAAAAAAAFM/iQRoI_Ju4Lo/s400/context1.jpg" alt="" id="BLOGGER_PHOTO_ID_5353506150060572274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A database is used to store queries, relationships, tags etc and managed by a small JEE application. This is set up by the installer and the client-side workings are downloaded through the normal Check For Updates Center in JDeveloper.&lt;br /&gt;&lt;br /&gt;In this first release, in addition to the adaptors developed by us to connect to JIRA and MS Project Server I'm really pleased that we have partnered with &lt;a href="http://www.rallydev.com/"&gt;Rally Software&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Rally is the leader in Agile application lifecycle management (ALM) dedicated to making distributed development organizations faster and leaner by dramatically cutting the time, cost and effort needed to deliver high quality applications.  Rally's products were honored with four consecutive Jolt awards (the software industry's equivalent of the Oscar® award) in 2006, 2007, 2008 and 2009. The company's end-to-end solutions for Agile development also include Agile University, the largest source for Agile training, and Agile Commons, the largest collaborative Web 2.0 community dedicated to advancing software agility.  Using the Rally Connector JDeveloper users can view and &lt;span class="il"&gt;update&lt;/span&gt; their Rally tasks and defects directly from JDeveloper.&lt;br /&gt;&lt;br /&gt;This release of TPC concentrates on enabling JDeveloper users, but Application Lifecycle Management is about more than just developers - it has a role in breaking down functional silos (development, QA, Doc, PM....) and it's our aim to push TPC out to more than developers going forward - both in terms of increased services provided by TPC and increasing the number of connectors available to differing ALM repositories (requirements, task, defects, testing etc)&lt;br /&gt;&lt;br /&gt;One step towards that goal is the provision of a Connector Developers Guide and a sample connector to allow other third parties to create connectors to their existing ALM tools - be those commercial products or in-house systems.&lt;br /&gt;&lt;br /&gt;But that's not all - JDeveloper users can also integrate their XMPP chat system into JDeveloper - even more productivity for developers without the need to leave their IDE! I can who of my team mates is connected to chat and also chat with all my buddies - whether they are working with TPC or not.&lt;br /&gt;&lt;br /&gt;This is just a very brief introduction to Team Productivity Center. Browse the link above for more information, download, install and try it out - and let me know what you think ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-3888101548568765204?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2009/07/introducing-oracle-team-productivity.html</link><author>noreply@blogger.com (Susan)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_tDM321vXxtw/Skt54y4ckTI/AAAAAAAAAFU/i2sLd57mTNA/s72-c/arch.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-2271157772929018535</guid><pubDate>Sat, 13 Jun 2009 09:05:00 +0000</pubDate><atom:updated>2009-06-13T09:27:59.226Z</atom:updated><title>ODTUG 2009</title><description>I can hardly believe it's another year (of few posts to my blog) and another &lt;a href="http://www.odtugkaleidoscope.com/"&gt;ODTUG Kaleidoscope&lt;/a&gt; conference  is almost upon us. This year the conference is in Monterey so I'm packing my bags and off to Oracle Headquarters in San Francisco tomorrow - then down to the conference on June 20th&lt;br /&gt;&lt;br /&gt;If you have the opportunity I'd urge you to try and make it there too. The 'fun' starts off on Saturday when there is a community service day. Last year we painted school classrooms in New Orleans, this year we are helping to restore  habitat at Martin Dunes, California’s  largest and most intact dune ecosystem. So I'm packing plenty of sunscreen as my pale English skin isn't used to the California sun! More fun after the first day of sessions Sunday - with the second ODTUG Jam Session. Those of you who know Grant Ronald and I know that we are much too shy and retiring to join in that ;-)&lt;br /&gt;&lt;br /&gt;But of course, that's not all the fun. The conference is full of interesting and diverse sessions - and I should know, I was part of the panel reviewing papers for the Editor's Choice award - I spent a few evenings reading papers on everything from project management to Oracle to the Holy Grail.&lt;br /&gt;&lt;br /&gt;As for me, I'm really excited to be doing two sessions -&lt;br /&gt;&lt;br /&gt;5000 tables, 100 schemas, 2000 developers: This will showcase some of the team-working features such as standards and version  management, and reporting and impact analysis and the highly usable and scalable  data modeling in JDeveloper. I've got some great new functionality to reveal - reporting on your data models, user defined validation and declarative compare of versioned database objects&lt;br /&gt;&lt;br /&gt;Tooling up for ALM 2.0 with Oracle Team Productivity Center: If you were lucky enough to be at Oracle World or the UK Oracle User Group conference last year you might have seen a very early incarnation of this project that I've been working on. At ODTUG I'm going to be demoing the very latest code and showing you how to use your ALM repositories from within JDeveloper and how to integrate artifacts from those (maybe) disparate repositories together through Oracle Team Productivity Center. All this and team management too!&lt;br /&gt;&lt;br /&gt;Another goal I have for the conference week is to talk to as many JDeveloper users as possible about team working, ALM and SDLC - and to ensure that I get feedback to take back and work on more  functionality in JDeveloper to compliment the great application development tool we have&lt;br /&gt;&lt;br /&gt;I look forward to seeing you there - or if not, finding other ways to talk to you!&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;p class="style45"&gt;&lt;a href="#Top"&gt;Back to Top &lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-2271157772929018535?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2009/06/odtug-2009.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-8479234061165561549</guid><pubDate>Tue, 12 Aug 2008 14:18:00 +0000</pubDate><atom:updated>2008-08-12T14:45:38.589Z</atom:updated><title>DD Tips and Techniques - 2 Displaying Shapes</title><description>When I said occasional in the last blog - I didn't specify the time interval - so here is a second post in as many minutes!&lt;br /&gt;&lt;br /&gt;There are a number of ways to tidy a cluttered diagram. Sometimes you don't want to see all the columns/constraints in the table shape, or perhaps you only want to see some of the columns - the keys or the most important columns:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;View As -&gt; Compact&lt;br /&gt;&lt;/span&gt;Select shapes in a diagram and use this context menu to  completely remove any columns or constraints from the  shape &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Hide Selected Shapes&lt;br /&gt;&lt;/span&gt;If you want to show only some of the members of your shape (for instance only the keys and major columns in a table) select members you want to hide and use this context menu. The members are cut from the diagram but are still available to you through the shape editor. To see all the members again use Show All Hidden Members&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tools -&gt; Preferences -&gt; Diagrams -&gt; Database&lt;/span&gt;&lt;br /&gt;Under this node you will find many different options for your database diagram - you can change font, shape colors for many different database shapes. For instance - select Table from the dropdown list and uncheck Show Constraints if you want to exclude them from the diagram. Note that changes made in this way only apply to new shapes added to a diagram. So it's good practice to check your preferences before you start work on a diagram&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-8479234061165561549?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2008/08/dd-tips-and-techniques-2-displaying.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-6090456355854953335</guid><pubDate>Tue, 12 Aug 2008 12:03:00 +0000</pubDate><atom:updated>2008-08-12T14:11:05.286Z</atom:updated><title>Database Diagramming Tips and Techniques  - 1 Keyboard Accelerators</title><description>I'm working on a new database design and thought I'd pass on some of the tips that I use to aid my work. As always with my blog entries, this will be an occasional series.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Keyboard Accelerators - diagram cleaning aid&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I often create new offline database tables using a database diagram. I can visualize and edit objects in-place easily and often. But having to resize the shapes and tidy up the relationship lines can be very frustrating! So I do the following:&lt;br /&gt;&lt;br /&gt;First the setup -&lt;br /&gt;Go into Tools -&gt; Preferences -&gt; Accelerators&lt;br /&gt;Scroll down the Actions list and select Height and Width&lt;br /&gt;Add a new accelerator (if none set) - I use Ctrl H&lt;br /&gt;Scroll to Select All and check what accelerator is set - default is Ctrl A&lt;br /&gt;Scroll to Straighten Lines and add an accelerator - say Ctrl L&lt;br /&gt;&lt;br /&gt;Now, in my diagram whenever I can't see all the info in my table shapes I either select the specific tables and do Ctrl H or do Ctrl A + Ctrl H to resize all my shapes followed by Ctrl L to straighten the lines.&lt;br /&gt;&lt;br /&gt;Easy Tip No1!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-6090456355854953335?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2008/08/database-modeling-tips-and-techniques-1.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-8914325508152516229</guid><pubDate>Mon, 09 Jun 2008 11:08:00 +0000</pubDate><atom:updated>2008-06-09T11:33:00.255Z</atom:updated><title>Checking who else has checked out?</title><description>A comment on an earlier post has prompted me to clarify the way that Subversion handles certain tasks.  The commenter is using SQLDeveloper, that uses JDeveloper's SVN implementation, and wants-&lt;br /&gt;&lt;br /&gt;1.  Subversion navigator to indicate if others are working on the same code&lt;br /&gt;&lt;br /&gt;Subversion uses the copy-modify-merge paradigm. This means that any user with the correct authorization can check out a copy of the code from the repository to a local file system. This local copy can be manipulated (using JDEV, Tortoise, command line etc) so that updates and commits can be carried out from it. However, the Subversion repository does not have any understanding of how many users are working on or have checked out the same code. Updates and Commits are instigated from the local copy.  This also means that any local copy checked out from Subversion may never be checked back in.&lt;br /&gt;&lt;br /&gt;2.When double clicking on a package in the database  or in the versioning tree and have the option to load the local copy (linked to subversion).&lt;br /&gt;&lt;br /&gt;With respect to the request to double click on the versioning tree this comes back to Subversion having no knowledge of the local copies. I think that he is asking that the local copy be updated through using the Subversion navigator - but updates are driven from the local copy, not the repository.&lt;br /&gt;&lt;br /&gt;As for the database package, that would be another level of complexity. Presumably the single point of truth is the package definition held in the SVN repository. To ensure that the database holds the latest version the user would have to checkout a the latest version as a local copy from the repository and update the DB. I'm not sure that somehow automating this process would be desirable - it would need links from the DB to the tool to the correct local copy location and through this to the SVN repository - sounds error prone to me.&lt;br /&gt;&lt;br /&gt;3. Be able to do a compile and see the log window&lt;br /&gt;&lt;br /&gt;This is a SQL Developer question, rather than SVN oriented, so I'll leave that to my colleagues with SQLDeveloper to answer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-8914325508152516229?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2008/06/checking-who-else-has-checked-out.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-322442982494192185</guid><pubDate>Fri, 06 Jun 2008 12:36:00 +0000</pubDate><atom:updated>2008-06-06T13:08:36.548Z</atom:updated><title>Going To New Orleans - ODTUG Kalaidoscope 2008</title><description>I've traveled and spoken on Oracle all around the world at many events but this year will be my first at &lt;a href="http://www.odtugkaleidoscope.com/index.html"&gt;ODTUG &lt;/a&gt;(June 15th-19th). I'm looking forward to both the technical and the non-technical aspects of the conference. New Orleans is somewhere that I haven't visited in 15 years and I'm happy to be one of the nearly-75 strong &lt;a href="http://www.odtugkaleidoscope.com/ODTUGbrigade.htm"&gt;ODTUG Brigade&lt;/a&gt; volunteering for a day of community service work to give back to the city that has given so much to music lovers and so many others like me.&lt;br /&gt;&lt;br /&gt;The conference is packed with keynotes and sessions, I'm going to be presenting two:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Who Moved My Code? - Team Development in Oracle JDeveloper on Wednesday 8.00-9.00am&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Seven Secrets (and more) of Successful JDeveloper Database Designers on Wednesday 2.45-3.45pm&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Both of these will be predominantly demo driven sessions. In the first Lynn Munsinger will be joining me so we can demo multi-developer tips and tricks using Subversion. The Seven Secrets will focus on existing and new features for database development and visualization for application developers. I'm hoping also to squeeze in a sneak preview of a project I'm working on around Application Lifecycle Management. Please join me if you are at ODTUG as I would welcome your feedback.&lt;br /&gt;&lt;br /&gt;Our Usability Research Team is running some &lt;a href="http://www.odtugkaleidoscope.com/feedbacksessions.html"&gt;feedback sessions&lt;/a&gt; that Lynn, Grant Ronald and myself will be attending, be sure and sign up for one of those. Plus, if you want to talk to us about any aspect of JDeveloper we will be in the exhibit halls ready and willing to demo and discuss.&lt;br /&gt;&lt;br /&gt;Finally, I hear there is a &lt;a href="http://www.odtugkaleidoscope.com/events.html"&gt;ODTUG Jam Session&lt;/a&gt; and I'm pretty sure I wont be able to resist!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-322442982494192185?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2008/06/going-to-new-orleans-odtug-kalaidoscope.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-3990471321546531889</guid><pubDate>Fri, 06 Jun 2008 12:32:00 +0000</pubDate><atom:updated>2008-06-06T12:35:26.524Z</atom:updated><title>New Best Practices Paper for Subversion and JDeveloper</title><description>I've finally got around to pulling together some of the information and best practices that I've blogged about into a document. You can view it &lt;a href="http://www.oracle.com/technology/products/jdev/11/how-tos/subversion/teamdevsubversion.html"&gt;here &lt;/a&gt;on Oracle Technology Network. Let me know what you think&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-3990471321546531889?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2008/06/new-best-practices-paper-for-subversion.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-8448323799949413422</guid><pubDate>Tue, 22 Apr 2008 09:34:00 +0000</pubDate><atom:updated>2008-04-22T21:45:56.258Z</atom:updated><title>ALM - help me help you!</title><description>Some of the areas that I've always been interested in  - as a consultant, a teacher, a curriculum developer or as a Product Manager - are standards, methodology and development process: From Designer to JDEV, from CDM to Agile, from ClearCase to SVN, from IE to UML and so much more. Now we call that ALM - Application Lifecycle Management - the management of the lifecycle development practices (requirements, build, test, change control, defect mgmt etc)  fused together through application of process, reporting, traceability and collaboration.&lt;br /&gt;&lt;br /&gt;Here in JDeveloper land we are always looking at ways to improve both our tooling and the developer experience so I've put together a survey to find out what ALM tools you are using today. We're looking into adding better integration with ALM tools and the results of the survey will ensure that we move in the right direction.&lt;br /&gt;&lt;br /&gt;So please, take a couple of minutes to complete &lt;a href="https://vovici.com/wsb.dll/s/a7aeg3344f"&gt;this quick online survey&lt;/a&gt; and help me help you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-8448323799949413422?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2008/04/alm-help-me-help-you.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-3590418064932760738</guid><pubDate>Fri, 08 Feb 2008 15:04:00 +0000</pubDate><atom:updated>2008-02-08T19:04:18.369Z</atom:updated><title>Evil Clones - The SCM nightmare that can stop you in your tracks</title><description>It can happen to anyone. First the feeling of disbelief, then the cold sweat; you try pinching yourself, hoping it's some bad dream and you'll wake up and they'll be gone . . .&lt;br /&gt;&lt;br /&gt;There, that's my catchy first line of my first novel written, now just the other 150 pages to invent. But unfortunately it really can happen to you - if you are working with ClearCase you may have come across &lt;a href="http://www.ibm.com/developerworks/rational/library/4701.html"&gt;evil twins&lt;/a&gt;. But I want to talk about a different nightmare that can occur if you are using SVN or CVS.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tDM321vXxtw/R6ydA7DcelI/AAAAAAAAADI/bTBCOt5NGGI/s1600-h/ec5.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_tDM321vXxtw/R6ydA7DcelI/AAAAAAAAADI/bTBCOt5NGGI/s400/ec5.png" alt="" id="BLOGGER_PHOTO_ID_5164675511864818258" border="0" /&gt;&lt;/a&gt;Here's the scenario. You and a team member are both working on a file (let's call it MyClass1) checked out of SVN.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tDM321vXxtw/R6ycB7DcekI/AAAAAAAAADA/ytDx_JUl4tk/s1600-h/ec4.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_tDM321vXxtw/R6ycB7DcekI/AAAAAAAAADA/ytDx_JUl4tk/s400/ec4.png" alt="" id="BLOGGER_PHOTO_ID_5164674429533059650" border="0" /&gt;&lt;/a&gt;Your colleague, as part of her edits, renames MyClass1 to CloneClass1 and commits the working copy. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SVN uses  copy/delete commands for a rename:&lt;br /&gt;First MyClass1 is copied (so that the history is maintained) to CloneClass1.&lt;br /&gt;Then MyClass1 is deleted from the repository.&lt;br /&gt;The screenshot of the SVN repository (left) shows the new resulting file with CloneClass1.&lt;br /&gt;&lt;br /&gt;CVS is not quite so clever is uses add/delete: It adds CloneClass1 and deletes MyClass1 - so none of the history of MyClass1 is copied to the new CloneClass1.&lt;br /&gt;&lt;br /&gt;But back to the SVN example. You have edited the checked out MyClass1 and are oblivious to your team member's edits. Not a problem, you might think as an update from the repository would absorb the changes or at the very least show you a conflict over the rename. Unfortunately not!&lt;br /&gt;&lt;br /&gt;Here is where the nightmare that I'm calling Evil Clones appears.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tDM321vXxtw/R6yeN7DcenI/AAAAAAAAADY/TXZGe-JAbAA/s1600-h/ec6.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_tDM321vXxtw/R6yeN7DcenI/AAAAAAAAADY/TXZGe-JAbAA/s400/ec6.png" alt="" id="BLOGGER_PHOTO_ID_5164676834714745458" border="0" /&gt;&lt;/a&gt;The repository rightly updates your working copy with CloneClass1. But wait, your class MyClass1 is not only still in your App Navigator, but is no longer under version control!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you think about it, this is correct -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SVN has replaced MyClass1 with CloneClass1. It has no recollection of the object MyClass1 so there is no merge of MyClass1 and CloneClass1.&lt;/li&gt;&lt;li&gt;You wouldn't want to lose the additional changes you have made to MyClass1 in your working copy - and it is not under version control - well, it's not, because it doesn't exist in the SVN repository&lt;/li&gt;&lt;li&gt;You can easily recognize that MyClass1 has been replaced by CloneClass1 so it's a simple job to move your changes to CloneClass1 - or is it. . .&lt;/li&gt;&lt;/ul&gt;This is expected behavior from Subversion and it seems that they recognize it as a &lt;a href="http://subversion.tigris.org/issues/show_bug.cgi?id=898"&gt;bug &lt;/a&gt;. The example above is very simple. But what when you have 00s of different files in your working copy?&lt;br /&gt;&lt;br /&gt;I'd be interested in how you work around this shortcoming in SVN. Here are some of my thoughts:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Don't rename, if you think you must, think again!&lt;/li&gt;&lt;li&gt;If you must, then refactoring or plain renaming of files (this is not specifically a Java problem, could be XML metadata, diagram or any other file type) should always be taken seriously in team development. In our JDeveloper development teams it's usual for the developer thinking about renames to email colleagues, check for dependencies and most definitely comment both the code, the check-in and the build notes to minimize the possible problems.&lt;/li&gt;&lt;li&gt;How renaming is handled in your team should be part of your defined development process. It should take account of your source code system, your build system and provide workarounds as necessary&lt;/li&gt;&lt;li&gt;If you are using JDeveloper and find that one of your objects appears to 'lose' its versioning status after an update - think rename!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Always ensure that you fully comment a rename on commit so that other users can use the log to find out where and why their object was deleted from the repository&lt;/li&gt;&lt;/ul&gt;In a forthcoming post I want to look more closely at how you detect and work to correct a rename problem. Specifically I want to use JDEV's offline database objects to do this. In the Java world developers may be more aware of the power of refactoring. But, as I said above, this is not a problem restricted to Java. I want to highlight the effect on XML and database objects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-3590418064932760738?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2008/02/evil-clones-scm-nightmare-that-can-stop.html</link><author>noreply@blogger.com (Susan)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_tDM321vXxtw/R6ydA7DcelI/AAAAAAAAADI/bTBCOt5NGGI/s72-c/ec5.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-6414702707109490697</guid><pubDate>Fri, 08 Feb 2008 11:04:00 +0000</pubDate><atom:updated>2008-02-08T14:57:09.956Z</atom:updated><title>At what level should I version my source code? - Alternate Takes</title><description>So now you know that I'm a Blues fan. One of Blues most revered artists was Robert Johnson. There are only a very few recordings of him - done between 1937 and '39 - just 29 different songs, but there are alternate takes bringing his total recordings to around 40 songs. Maybe he was striving for perfection, maybe different styles suited different audiences or even his moods, but these alternate takes add to the  legacy left by him. Some blues fans have their own favorites but I love them all!&lt;br /&gt;&lt;br /&gt;Recently I've been speaking with a number of JDeveloper/SVN users concerning the level at which they version their code. While I still maintain that the best way is to create a working copy at the Application level there are times and development process requirements when this isn't practical or possible.&lt;br /&gt;&lt;br /&gt;Take this example: A team development with one Application split into many Projects. The Application is under source control using SVN.  Their development process mandates commits are done per Project. There are a number of ways to achieve this, here are my suggestions for a team member to work on one or more projects and be selective about what is committed:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Alternate Take 1: Check-out each project as a separate working copy&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create a new empty Application with no projects&lt;/li&gt;&lt;li&gt;Use the SVN Navigator to select the root node of one of your projects in the repository&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Check this project out of the repository&lt;/li&gt;&lt;li&gt;For the check-out destination, select the root folder of your newly created application&lt;/li&gt;&lt;li&gt;You will get a warning on the Confirm Check Out dialog that you have selected a directory that is not empty - this is OK&lt;/li&gt;&lt;li&gt;Continue to check out projects under your application root folder&lt;mycopyprojects&gt;&lt;myproject1&gt;&lt;br /&gt;&lt;mycopyprojects&gt;&lt;/mycopyprojects&gt;&lt;mycopyprojects&gt;&lt;myproject2&gt;&lt;br /&gt;&lt;mycopyprojects&gt;&lt;myproject1&gt;&lt;mycopyprojects&gt;&lt;myproject1&gt;&lt;mycopyprojects&gt;&lt;myproject2&gt;&lt;mycopyprojects&gt;&lt;/mycopyprojects&gt;&lt;/myproject2&gt;&lt;/mycopyprojects&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tDM321vXxtw/R6xFM7DcedI/AAAAAAAAACI/X7y2Hb_1gQk/s1600-h/alt1.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_tDM321vXxtw/R6xFM7DcedI/AAAAAAAAACI/X7y2Hb_1gQk/s320/alt1.png" alt="" id="BLOGGER_PHOTO_ID_5164578961000004050" border="0" /&gt;&lt;/a&gt;&lt;/myproject1&gt;&lt;/mycopyprojects&gt;&lt;/myproject1&gt;&lt;/mycopyprojects&gt;&lt;/myproject2&gt;&lt;/mycopyprojects&gt;&lt;/myproject1&gt;&lt;/mycopyprojects&gt;&lt;/li&gt;&lt;li&gt;Now you can use JDeveloper's Commit Working Copy command on any node in a specific project and that project's changes will be committed.&lt;/li&gt;&lt;/ol&gt; &lt;span style="font-weight: bold;"&gt;Alternate Take 2: Filter the Outgoing Pending Changes Window&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Using JDeveloper 11g you can filter the Pending Changes window by application or project. In the screen shot below I've filtered my outgoing changes to myProject1. I can select one or more of these files and with the context menu Commit Working Copy or Commit. I'd choose to select all the files and Commit if I had checked out my Application as the working copy. I'd choose Commit Working Copy if I had used Alternate Take1 to check out each project as a working copy. Unfortunately JDEV 10g doesn't have this filtering ability so this is an 11g only Alternate Take&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tDM321vXxtw/R6xtZbDcegI/AAAAAAAAACg/7V5eMh8jO0M/s1600-h/alt4.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_tDM321vXxtw/R6xtZbDcegI/AAAAAAAAACg/7V5eMh8jO0M/s400/alt4.png" alt="" id="BLOGGER_PHOTO_ID_5164623156213479938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm sure there are other Alternate Takes to  both the level at which you  version your code and how you manage checkin/out. I'd love to hear the good practices and the pitfalls.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-6414702707109490697?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2008/02/at-what-level-should-i-version-my.html</link><author>noreply@blogger.com (Susan)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_tDM321vXxtw/R6xFM7DcedI/AAAAAAAAACI/X7y2Hb_1gQk/s72-c/alt1.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-1167722226424756513</guid><pubDate>Mon, 14 Jan 2008 15:01:00 +0000</pubDate><atom:updated>2008-01-24T15:44:47.026Z</atom:updated><title /><description>I got tagged in the &lt;a href="http://oracleappslab.com/2008/01/07/orablog-tag/"&gt;Oracle Blogsphere tag game&lt;/a&gt; by &lt;a href="http://blogs.oracle.com/shay/"&gt;Shay Shmeltzer&lt;/a&gt; so here goes my entry of 8 things you didn't know about me.&lt;br /&gt;&lt;br /&gt;1. In 1973 I was sent from Reading, UK to live on a cotton farm and attend high school in Arkansas, USA for a year by &lt;a href="http://www.afs.org/afs_or/home"&gt;AFS Intercultural Scholarships&lt;/a&gt;. At the end of the year I was inducted as an &lt;a href="http://www.arkansastraveler.org/mission.htm"&gt;Arkansas Traveler&lt;/a&gt;. Even now I drop into an Arkansas drawl the minute I reach the Delta - love it!&lt;br /&gt;&lt;br /&gt;2. This started my love affair with &lt;a href="http://en.wikipedia.org/wiki/Blues"&gt;Blues&lt;/a&gt;. It grew and developed after I met my husband, Scott, through his research for the original writers of songs recorded by such great guitarists as &lt;a href="http://www.rorygallagher.com/"&gt;Rory Gallagher&lt;/a&gt;. In about 1986 during a blues festival holiday in Memphis (TN) we met some people who have become our great friends: &lt;a href="http://www.crossroadslearning.org/index.html"&gt;David and Liz Berntson&lt;/a&gt; who, earlier in the year, had founded the Tulsa Blues Society. Also first met  &lt;a href="http://www.bbc.co.uk/radio2/shows/jones/biography.shtml"&gt;Paul Jones&lt;/a&gt; who was in Memphis to cover the festival for BBC Radio. As a result of these meetings we arrived home to find Paul had talked about our ideas on air and we started the British Blues Connection and the magazine Blueprint.&lt;br /&gt;&lt;br /&gt;3. During over 10 years of the British Blues Connection and Blueprint, we became the first overseas Blues organization to be affiliated to the &lt;a href="http://www.blues.org/"&gt;Blues Foundation &lt;/a&gt;and were &lt;a href="http://www.blues.org/kba/past.php4?YearId=15"&gt;Keeping The Blues Alive&lt;/a&gt; award winners in 1990. In the late 1990s we passed the UK blues gauntlet over to &lt;a href="http://www.blueprint-blues.co.uk/index.html"&gt;Blues In Britain&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. I love music, singing and dancing. From working the amateur chorus lines in productions like &lt;a href="http://en.wikipedia.org/wiki/Lady_Be_Good_%28musical%29"&gt;Lady Be Good&lt;/a&gt; in my 20s (when I was younger, thinner and more flexible!) to singing and dancing with blues men or my fab musical family or anyone who will let me. One of my special blues moments is dancing on stage with &lt;a href="http://www.rockhall.com/inductee/willie-dixon"&gt;Willie Dixon&lt;/a&gt; when he presented us with our KBA Award in 1990. But it's not just about Blues, I love music - from Karaoke to Kraftwerk, Blues to Bartok and all the Kings (Elvis, Freddie, Albert, James, Frank, Bob ....)&lt;br /&gt;&lt;br /&gt;5. I love to travel. I'm not sure I'll ever make the &lt;a href="http://www.travelerscenturyclub.org/"&gt;Traveler's Century Club&lt;/a&gt; (think I'm at about 35 currently) but I like to take every travel opportunity (whether work or leisure related!) Last year I added South Korea and China to my list and this year, as well as Europe and the USA, we will be in Rio to celebrate the wedding of our good friends: Blues man &lt;a href="http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&amp;amp;friendid=168355028"&gt;Alamo Leal&lt;/a&gt; and Mariza Lopez&lt;br /&gt;&lt;br /&gt;6. My first personal computer was an &lt;a href="http://en.wikipedia.org/wiki/Macintosh_SE/30"&gt;Mac SE30&lt;/a&gt; Bought this in 1989 when Blueprint became a magazine that could no longer be pasted and photocopied on my office copier but had to become more sophisticated as its readership grew. I learned how to use Adobe Pagemaker and spent many long, long nights waiting for the tiny screen to refresh as I moved across its 32 pages adding articles (Scott was the editor) and leaving space to paste in the photos. This was also the time of my introduction to 'programming'. I used spreadsheets and macros to maintain the subscription list and create mailing labels. At the time I thought I had designed a database!&lt;br /&gt;&lt;br /&gt;7. Oracle is my second career. In my 20s I was a Financial Controller for a SME US company in the UK and started up subsidiaries in France and Germany for them. In my young, thrusting days I was even a finalist in the UK 'Young Career Woman of the Year' (can't remember which year - didn't get far). Later I took a Computer Science degree (for fun) and decided to try life at Oracle - the rest is history!&lt;br /&gt;&lt;br /&gt;8. I have two favourite types of footwear! In the summer it's hard to imagine not being in flip-flops. I have many, many pairs - including &lt;a href="http://www.havaianas.com/#"&gt;High Havaianas&lt;/a&gt; that can make that awkward transition from shorts to cocktail dress ;-) In the winter I move into cowboy boots - the most comfortable footwear ever. But be sure to get a good brand. For me that has to be the &lt;a href="http://www.ariat.com/products_detail.aspx?pcid=9&amp;amp;cid=2&amp;amp;scid=20&amp;amp;pid=190"&gt;Ariat.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So, if you see a flip-flop carrying, cowboy boot wearing, laptop hauling Oracle Product Manager demoing with blues-inspired examples - be sure to say "hi y'all"&lt;br /&gt;&lt;br /&gt;I hate chain letters but who am I to deny you the opportunity to join the fun? So I tag &lt;a href="http://sueharper.blogspot.com/"&gt;Sue Harper&lt;/a&gt;, &lt;a href="http://db360.blogspot.com/"&gt;Kuassi Mensah&lt;/a&gt;, &lt;a href="http://java-persistence.blogspot.com/"&gt;Doug Clarke&lt;/a&gt;, &lt;a href="http://ws-rx.blogspot.com/"&gt;Eric Rajkovic&lt;/a&gt;, &lt;a href="http://blogs.oracle.com/duffblog/"&gt;Brian Duff&lt;/a&gt; (sorry)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-1167722226424756513?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2008/01/i-got-tagged-in-oracle-blogsphere-tag.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-5665575582635402460</guid><pubDate>Mon, 05 Nov 2007 15:11:00 +0000</pubDate><atom:updated>2007-11-05T16:03:31.422Z</atom:updated><title>At what level should I version my source code?</title><description>This is a question that comes up regularly when I talk to development teams. And I believe that the answer should always be - at the top level.&lt;br /&gt;&lt;br /&gt;If you are using JDeveloper this means at the application level. We adopt this in our own development here and it's my top tip for best practice. Some might want to argue that if their application is broken into a number of different projects then why not version those individually?&lt;br /&gt;&lt;br /&gt;One problem with this approach could be cross- project dependencies in your application. Imagine that you work in one project on a day to day basic but there is a dependency on libraries held in another project (let's call it a 'library' project). You might checkout both projects at the beginning of the development cycle but assume that the 'library' project was complete and so you could just work and update your 'working' project. At some later stage, you could run into problems when you want to check in your 'working' project and realise that updates have been made to the 'library' project.&lt;br /&gt;&lt;br /&gt;On a practical level, if you are using JDeveloper, you should not only follow my advice and version at the application level, but always ensure that your .jws configuration file is included in source control. This isn't a problem if you using JDeveloper's integrated SVN commands. When you select an application you automatically get the .jws file included.&lt;br /&gt;&lt;br /&gt;But what if not all your development team are using JDeveloper? Perhaps you prefer to use Tortoise for your SVN interactions. Or perhaps you have some team members that use Eclipse or another IDE as well as JDeveloper? In this case it is important to ensure that you still  place both your 'jws' and your 'jpr' files under source control.&lt;br /&gt;&lt;br /&gt;Why? Because JDeveloper's  SVN code looks at the state of those files to decide what menu options it makes available. For instance, say  an initial import of an application to SVN had been done using Tortoise and the .jws file had not been included. I then check out this into a working copy in JDeveloper and make some changes. When I try to commit or update this working copy using JDeveloper I would expect to get the menu options 'Commit Working Copy' or 'Update Working Copy'. In fact, I would only see 'Import Files' as the .jws files would not be part of the versioned application and so JDeveloper offers you the option to place the application under version control.&lt;br /&gt;&lt;br /&gt;I've come across this a few recently. The workaround is to go back to the repository and add the .jws file to version control. This brings the IDE back into kilter and allows you to continue using JDeveloper's integrated SVN support.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-5665575582635402460?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2007/11/at-what-level-should-i-version-my.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-5758475784268583155</guid><pubDate>Wed, 24 Oct 2007 14:45:00 +0000</pubDate><atom:updated>2007-10-24T15:51:13.052Z</atom:updated><title>Connecting to CVS/SVN thru JDeveloper</title><description>Here is how simple it is to set up your CVS repository to work in &lt;a href="http://www.oracle.com/technology/products/jdev/11/index.html"&gt;JDeveloper 11g.&lt;/a&gt; The first step is to select your Versioning system. SVN and CVS are shipped with JDeveloper 11g. Other supported version control system can be downloaded via Check for Updates.&lt;br /&gt;Now you can view the SVN or CVS Navigator from the View menu. Use the context menu of the parent node in the open navigator to create a new repository connection. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tDM321vXxtw/Rx9g_aDQW9I/AAAAAAAAABU/EydbB2R5Ia4/s1600-h/cvsconnect.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_tDM321vXxtw/Rx9g_aDQW9I/AAAAAAAAABU/EydbB2R5Ia4/s320/cvsconnect.png" alt="" id="BLOGGER_PHOTO_ID_5124921543411915730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;For CVS enter the details of your CVS repository in the wizard; including your access method and authentication style and user id (set by your CVS repository administrator). Test the connection and Finish the wizard. You are now able to browse the repository and Check Out a module using the context menu to begin work. To add a new application to the repository select Import Module from the Versioning menu.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tDM321vXxtw/Rx9jNaDQW-I/AAAAAAAAABc/F-WehSiRvvE/s1600-h/svnconnect.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_tDM321vXxtw/Rx9jNaDQW-I/AAAAAAAAABc/F-WehSiRvvE/s320/svnconnect.png" alt="" id="BLOGGER_PHOTO_ID_5124923982953339874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For SVN enter the URL to the repository, user name and password, again Test the connection and click OK to complete the connection. As well as being able to browse the repository you can do other things such as create new remote directories from the context menu of the connection in the navigator.&lt;br /&gt;&lt;br /&gt;To add a new application to the repository using either CVS or SVN, select Import Module from the Versioning menu.&lt;br /&gt;By returning to the Versoning menu and selecting another version control system you can invoke the navigator for that system - without losing any of the connections you have to other systems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-5758475784268583155?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2007/10/connecting-to-cvssvn-thru-jdeveloper.html</link><author>noreply@blogger.com (Susan)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_tDM321vXxtw/Rx9g_aDQW9I/AAAAAAAAABU/EydbB2R5Ia4/s72-c/cvsconnect.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-5550750223803099099</guid><pubDate>Tue, 23 Oct 2007 10:53:00 +0000</pubDate><atom:updated>2007-10-23T11:21:04.475Z</atom:updated><title>SVN Branching in JDeveloper 11g</title><description>The latest Technology Preview of &lt;a href="http://www.oracle.com/technology/products/jdev/11/index.html"&gt;JDeveloper 11g&lt;/a&gt; is now available and contains some great new functionality to support Subversion 1.4.3.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tDM321vXxtw/Rx3Vb6DQW5I/AAAAAAAAAA0/iJRo-suCj6I/s1600-h/FilterPendingChanges.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_tDM321vXxtw/Rx3Vb6DQW5I/AAAAAAAAAA0/iJRo-suCj6I/s320/FilterPendingChanges.png" alt="" id="BLOGGER_PHOTO_ID_5124486626433588114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;We've added the Incoming Changes tab to the Pending Changes window - so valuable if you want a sneak preview of what changes others are making to files you have in Working Copies in JDeveloper.&lt;br /&gt;Also, you can now filter Pending Changes at the application or project level.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;But best of all, we've added support for Branch/Tag, Switch and Merge. I've created an online demo that you can play from &lt;a href="http://www.oracle.com/technology/products/jdev/viewlets/11/index.html"&gt;OTN.&lt;/a&gt; If you haven't already, download the 11g previe&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tDM321vXxtw/Rx3YYaDQW7I/AAAAAAAAABE/kqMwflC5PCo/s1600-h/BranchDialog.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_tDM321vXxtw/Rx3YYaDQW7I/AAAAAAAAABE/kqMwflC5PCo/s320/BranchDialog.png" alt="" id="BLOGGER_PHOTO_ID_5124489864838929330" border="0" /&gt;&lt;/a&gt;w and try it out - I'd love to have your feedback&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-5550750223803099099?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2007/10/svn-branching-in-jdeveloper-11g.html</link><author>noreply@blogger.com (Susan)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_tDM321vXxtw/Rx3Vb6DQW5I/AAAAAAAAAA0/iJRo-suCj6I/s72-c/FilterPendingChanges.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-1479488450995327299</guid><pubDate>Fri, 22 Jun 2007 14:00:00 +0000</pubDate><atom:updated>2007-06-22T16:11:13.115Z</atom:updated><title>Synchronizing with CVS in JDeveloper</title><description>Whatever your mechanism for working with CVS during development one of the things that we all like to avoid is unresolveable conflicts. But when working in a team environment it's an ever present evil.&lt;br /&gt;&lt;br /&gt;Using the Incoming Changes tab of JDeveloper's Pending Changes window can help in pre-empting conflicts and managing them.&lt;br /&gt;&lt;br /&gt;Here is a very simple example. I have an application under CVS source control that contains a number of classes. I'm working with a team who are also working on these files. In the Pending Changes window I can see that 2 of the files have been modified and checked in since I checked out my copy. This is shown in the Incoming Changes tab:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tDM321vXxtw/Rnv0NC7hOQI/AAAAAAAAAAc/460S1xCj2Sw/s1600-h/pchgs1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_tDM321vXxtw/Rnv0NC7hOQI/AAAAAAAAAAc/460S1xCj2Sw/s400/pchgs1.png" alt="" id="BLOGGER_PHOTO_ID_5078921509752355074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My local change is reflected in the Outgoing pane (I haven't bothered to insert an image of the outgoing pane here, but in this view I can quickly see that there is only outgoing change - and I know this is the only file I am working on).&lt;br /&gt;&lt;br /&gt;Greeting.java has been updated and checked-in by someone else but doesn't cause a conflict with my version.&lt;br /&gt;&lt;br /&gt;NewGreeting.java appears to have an unresolveable conflict. Double-clicking on the file in the Incoming Changes window returns me to the file in the code editor (or opens it), moves the focus to the History Tab, selects the Head revision to compare my local version of the file with and highlights the first change.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tDM321vXxtw/Rnv0Vi7hORI/AAAAAAAAAAk/WmbGzd6jgaA/s1600-h/pchgs2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_tDM321vXxtw/Rnv0Vi7hORI/AAAAAAAAAAk/WmbGzd6jgaA/s400/pchgs2.png" alt="" id="BLOGGER_PHOTO_ID_5078921655781243154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;From here I have a number of options. Knowing that there is a conflict I could make changes to my code. Or perhaps I want to run Update and then use JDeveloper's Merge feature to resolve the conflict or perhaps I just carry on with my coding and choose to deal with the conflict at some later date, whilst keeping it in the back of my mind (and in my Incoming Changes window!) Whatever route I take, I'm able to keep my local copy and the repository synchronized and view/act on any conflicts as I choose.&lt;br /&gt;&lt;br /&gt;I've kept my example very simple and have used JDeveloper 10.1.3.2. In a future post I'll give you a taste of enhancements we've made to Pending Changes for the JDeveloper 11g&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-1479488450995327299?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2007/06/synchronizing-with-cvs-in-jdeveloper.html</link><author>noreply@blogger.com (Susan)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_tDM321vXxtw/Rnv0NC7hOQI/AAAAAAAAAAc/460S1xCj2Sw/s72-c/pchgs1.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-5081534149173365262</guid><pubDate>Fri, 22 Jun 2007 13:29:00 +0000</pubDate><atom:updated>2007-06-22T13:59:51.142Z</atom:updated><title>From Seoul to Shanghai with ODC</title><description>I can hardly believe it's been 8 months since I last posted here. In that time I've taken up a new role within the JDeveloper Produce Management Group and have been focused on different areas of the product than my previous SOA focus. I now work very closely with our development groups coming up with requirements for JDeveloper and support development.&lt;br /&gt;&lt;br /&gt;This doesn't mean I don't get to meet with users any more, an important part of requirements gathering is to listen to what our customers are saying! This year I've been very lucky to have been involved with the &lt;a href="http://www.oracle.com/technology/events/develop2007/index.html"&gt;Oracle Develop Conferences&lt;/a&gt;. I've 'done' Seoul and if you're in London next Tuesday and Wednesday be sure to get over to the Excel Centre for the London run of this conference designed specifically for developers. I'll be there talking web services, ADF and Fusion and would also love to talk to you about your complete application development lifecycle experiences - the what, why and how of your approach. I have a special interest in Source Control systems - so come and tell me how JDeveloper stacks up.&lt;br /&gt;&lt;br /&gt;And Shanghai? Well that's where this year's ODC run closes at &lt;a href="http://www.oracle.com/global/ap/openworld/index.html"&gt;Oracle OpenWorld&lt;/a&gt; in Shanghai - and I'll be there too, maybe I'll see you?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-5081534149173365262?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2007/06/from-seoul-to-shanghai-with-odc.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-116120685933100418</guid><pubDate>Wed, 18 Oct 2006 21:26:00 +0000</pubDate><atom:updated>2006-11-01T23:22:20.336Z</atom:updated><title>No Time For Post-Vacation Blues</title><description>I'm back from the Delta and in San Francisco preparing and looking forward to Oracle OpenWorld next week and in particular the &lt;a href="http://www.oracle.com/technology/events/oracle-openworld-2006/develop/index.html"&gt;Oracle Develop  &lt;/a&gt;event.&lt;br /&gt;&lt;br /&gt;         If you are in the San Francisco area during Oracle OpenWorld Oct 22-26, you have the opportunity to see Rod Johnson and Brian Behlendorf speak! Rod Johnson is one of the world's leading authorities on Java and J2EE development.   Brian Behlendorf is the CTO and founder of CollabNet - the main sponsor of the Subversion project. He also cofounded and contributed heavily to the Apache Web Server Project.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;And don't miss all the other great &lt;a href="http://www.oracle.com/technology/events/oracle-openworld-2006/develop/java.html"&gt;sessions and hands-on labs&lt;/a&gt; that my colleagues and I are presenting&lt;br /&gt;&lt;br /&gt;See you there, come and say hello&lt;br /&gt;&lt;i&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-116120685933100418?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2006/10/no-time-for-post-vacation-blues.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-115989949602883066</guid><pubDate>Tue, 03 Oct 2006 18:14:00 +0000</pubDate><atom:updated>2006-10-04T10:56:38.010Z</atom:updated><title>Down in the Delta with the Blues</title><description>I wont be posting or answering comments for the next week as I'm down by the banks of the Mississippi for the &lt;a href="http://www.bluesandheritage.com/aboutfestival.htm"&gt;Arkansas Blues and Heritage Festival&lt;/a&gt;. Anyone else going? See y'all there (must be said with an English accent tinged with Arkansas).&lt;br /&gt;Otherwise, hope to see some of you at Oracle OpenWorld later in the month&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-115989949602883066?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2006/10/down-in-delta-with-blues.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-115876576039571885</guid><pubDate>Wed, 20 Sep 2006 15:07:00 +0000</pubDate><atom:updated>2007-01-03T22:28:26.973Z</atom:updated><title>Dealing with Complex Input Params in ADF Web Service Data Controls</title><description>A comment on a &lt;a href="http://susanduncan.blogspot.com/2006/06/watch-demo-using-bpel-in-adf.html"&gt;recent post&lt;/a&gt; prompts me to clarify how Web Service complex input parameters can be used in an ADF application&lt;p&gt;If the inputs are simple types or a single complex object (not an array of objects) then when you create the ADF Data Control for the service the data control palette gives you the structure of the parameters, enabling you to drag them on to a page as a parameter form or an action of some kind.&lt;br /&gt;&lt;br /&gt;To illustrate consider the following method definition:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;public Quote processOrderQuote(String productName, String itenType, String partnum, String quantity, String price)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Published as a web service, the complexTypes as seen in the WSDL file look like this:&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4324/2902/1600/wsdc10.5.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/4324/2902/320/wsdc10.4.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;The ADF Data Control created from the WSDL file uses OrderQuote elements as the String parameters. It wouldn't be my choice to name my parameters param0 - param4, not best practice, but that's the way this WSDL has been created. Dragging the OrderQuote service call onto a page will give you a choice of data bindings - perhaps you need a parameter form so that the input can be recorded directly, or perhaps just a command button or link where the input parameters will be existing data in your application&lt;br /&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4324/2902/1600/wsdc1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/4324/2902/320/wsdc1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;What about the more complex situation where the input parameter is an array of objects?&lt;br /&gt;&lt;br /&gt;To illustrate consider the following method definition:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;public Quote processPOItemsQuote(Item[] items)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Published as a web service, the complexTypes in the WSDL file look like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4324/2902/1600/wsdc20.1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/4324/2902/400/wsdc20.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And the Data Control looks like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4324/2902/1600/wsdc2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/4324/2902/320/wsdc2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In this case the input parameter - the array of objects - is not dealt with directly by the data control. I'm working with JSF so I need to use a managed bean to populate the input parameter, the principle is the same in other UIs too. In my scenario, I need a parameter form for a user to enter the itemId and quantity of the item they want to get a quote on. To keep my example simple, just one item is going to be quoted on - but an array is still needed to fulfill the service's input requirement.&lt;br /&gt;&lt;br /&gt;1. I've created a JSF JSP page (&lt;span style="font-weight: bold;"&gt;getPOQuote.jsp&lt;/span&gt;) with a backing bean (&lt;span style="font-weight: bold;"&gt;GetPOQuote.java&lt;/span&gt;). First I want to add my input paramaters to the bean.  I've added 2 new variables to the GetPOQuote.java and using JDeveloper I can automatically generate the accessors:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4324/2902/1600/wsdc3.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/4324/2902/320/wsdc3.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Next I need to create a method to populate the array that my service is expecting as a parameter. I added the getItems method:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4324/2902/1600/wsdc7.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/4324/2902/320/wsdc7.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. I add two ADF Faces Core: InputText components onto my page and use the Property Inspector(PI) to give them the labels I want&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4324/2902/1600/wsdc4.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/4324/2902/320/wsdc4.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. Now I want to bind the value of these input fields to my new backing bean attributes. I select the &lt;span style="font-weight: bold;"&gt;Quantity &lt;/span&gt;field and in the PI Value property type &lt;span style="font-weight: bold;"&gt;#{&lt;/span&gt; and hit enter. This tells the framework that I want to use the Expression Builder(EB) and I can open the EB by clicking the ellipses button.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4324/2902/1600/wsdc5.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/4324/2902/320/wsdc5.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5. Now I can browse to my &lt;span style="font-weight: bold;"&gt;backing_getPOQuote&lt;/span&gt; managed bean and double-click the &lt;span style="font-weight: bold;"&gt;quantity &lt;/span&gt;attribute to create the expression &lt;span style="font-weight: bold;"&gt;#{backing_getPOQuote.quantity}&lt;/span&gt;. This ensures that the user input to the quantity field is bound to the quantity attribute of the managed bean. I need to repeat this for the &lt;span style="font-weight: bold;"&gt;Item Id&lt;/span&gt; field and bind that to &lt;span style="font-weight: bold;"&gt;itemId&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4324/2902/1600/wsdc6.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/4324/2902/320/wsdc6.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6. Finally, back in my page I can drag the &lt;span style="font-weight: bold;"&gt;POItemsQuote(Object)&lt;/span&gt; service from the DC palette onto the page as a ADF Command Button. In the Action Binding Editor I can use the ellipses to the right of the Value column to browse to the items attribute of my managed bean (remember in Step2 I created the &lt;span style="font-weight: bold;"&gt;getItems&lt;/span&gt; method in my managed bean) to pass the input object to the service&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4324/2902/1600/wsdc21.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/4324/2902/320/wsdc21.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;7. Back in my page, if I open the Page Definition File I can see that the &lt;span style="font-weight: bold;"&gt;POItemQuote&lt;/span&gt; methodAction is now correctly populated with &lt;span style="font-weight: bold;"&gt;backing_getPOQuote.items&lt;/span&gt; being passed in as &lt;span style="font-weight: bold;"&gt;param0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4324/2902/1600/wsdc9.0.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/4324/2902/320/wsdc9.0.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And that's it, add a page to show the result of the service, add a navigation case to it and run!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-115876576039571885?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2006/09/dealing-with-complex-input-params-in.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">15</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-115832710070166442</guid><pubDate>Fri, 15 Sep 2006 13:25:00 +0000</pubDate><atom:updated>2006-10-03T17:35:46.343Z</atom:updated><title>SOA and the Database - Heresy?</title><description>It comes up a lot at conferences and seminars: Where should my business logic reside - the database or the middle-tier? In the SOA world you might think that using the database was the wrong choice, but why not leverage your existing DB-level validation from your Business Services?&lt;br /&gt;&lt;br /&gt;I recently had some correspondence with Kent Graziano of &lt;a href="http://www.odtug.com/pls/htmldb/f?p=500:900:4621789366849616741::::P900_EXPERT_AREA_ID:23"&gt;ODTUG&lt;/a&gt; fame on just this topic. He says, "&lt;span style="font-style: italic;"&gt;essentially we generate the TAPI and the associated DB triggers on all tables. The developers then write simple insert, update, and delete SQL against the tables to pass the required data elements. The triggers fire the TAPI procedures and fill in the auto generated stuff (sequence ids, date created, user created, etc). And voila you get referential integrity without coding in the middle tier. One of our apps is even generating the journal records automatically for audit trail.  &lt;/span&gt;&lt;span style="font-style: italic;"&gt;In addition all these applications rely on Oracle views or materialized views (from our read-only ODS) as the source for all the drop down lists. Seems that may be an SOA-type approach as well since we have abstracted the data one layer above the actual database tables (and we reuse the same view definitions for multiple applications to insure one-source of truth across the apps)."&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;I don't see anything wrong with this approach. Of course, from an SOA point of view you must ensure that your services are just that, and not too fine-grained, but that can be dealt with in or above the DB level in whatever technology or framework you choose to develop business services in.&lt;br /&gt;&lt;br /&gt;Moving forward, it might be that Kent's application developers will take advantage of the benefits of middle-tier business logic and rules - for instance using the ESB and Rules Engine of Oracle's SOA Suite - but that's another discussion! So, am I an SOA-heretic to use database logic and services in the same sentence?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-115832710070166442?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2006/09/soa-and-database-heresy.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">7</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-115096918219090582</guid><pubDate>Thu, 22 Jun 2006 09:07:00 +0000</pubDate><atom:updated>2006-10-17T22:26:46.736Z</atom:updated><title>Developing J2EE1.3 and 1.4 Web Services in tandem</title><description>Alan Gibson, one of our engineering gurus here in JDeveloperland, gave me this tip recently for developing both J2EE 1.3 and 1.4 services in the same application.&lt;br /&gt;&lt;br /&gt;1. Add your base Java implementation to project1&lt;br /&gt;2. Create project2 for your J2EE1.3 Web service&lt;br /&gt;3. In the Dependencies tab of the Project Settings for project2, check project1 as a dependency&lt;br /&gt;4. Publish your J2EE1.3 service in this project&lt;br /&gt;5. Repeat steps 2-4 for a J2EE1.4 service&lt;br /&gt;&lt;br /&gt;There is a bug in the J2EE1.3 service creation that means the node for the web service will show up in project1, but the crucial thing is that the J2EE1.3 web.xml file will go into project2, so this solution does work properly when you deploy or run it.&lt;br /&gt;&lt;br /&gt;This is a good example of the way you can use project dependencies to separate your base logic from the service artifacts - even if you only have one kind of service implementation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-115096918219090582?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2006/06/developing-j2ee13-and-14-web-services.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-27532376.post-114984305001691223</guid><pubDate>Fri, 09 Jun 2006 08:44:00 +0000</pubDate><atom:updated>2006-06-14T07:29:31.066Z</atom:updated><title>Watch a demo using BPEL in an ADF application</title><description>I've just &lt;a href="http://www.oracle.com/technology/products/jdev/viewlets/1013/bpelfromadf_viewlet_swf.html"&gt;published a demo&lt;/a&gt; on OTN that runs through integrating a BPEL process in an Oracle ADF application. It's so easy, so 4GL! Check it out and let me know what you think.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27532376-114984305001691223?l=susanduncan.blogspot.com'/&gt;&lt;/div&gt;</description><link>http://susanduncan.blogspot.com/2006/06/watch-demo-using-bpel-in-adf.html</link><author>noreply@blogger.com (Susan)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total></item></channel></rss>
