Fishbowl’s Agile (like) Approach to Oracle WebCenter Portal Projects

In this video blog, Fishbowl Solutions’ Technical Project Manager, Justin Ames, and Marketing Team Lead, Jason Lamon, discuss Fishbowl’s Agile (like) approach to managing Oracle WebCenter portal projects. Justin shares an overview of what Agile and Scrum mean, how it is applied to portal development, and the customer benefits of applying Agile to an overall portal project.

Customer Testimonial:

“This is my first large project being managed with an Agile-like approach, and it has made a believer out of me. The Sprints

and Scrum meetings led by the Fishbowl Solutions team enable us to focus on producing working portal features that can be quickly validated. And because it is an iterative build process, we can quickly make changes. This has lead to the desired functionality we are looking for within our new employee portal based on Oracle WebCenter.”

Michael Berry

Staff VP, Compensation and HRIS

Large Health Insurance Provider

Oracle JET and RequireJS

What is RequireJS and why is it important?

RequireJS is a JavaScript file and module loader. Oracle JET uses Require to load only the libraries and modules/components that are needed for a particular part of an Oracle JET application.

As the JavaScript world has taken off, web applications have grown large, and monolithic client.js files have become the norm. This type of code “organization” is difficult to maintain, read and test. In addition, more and more libraries, frameworks, plugins, etc. are being included in applications, making the loading of those resources complicated and slow. Truly, it is a waste to load every script file for each page of an application if it is not needed to run that particular page.

Require was born out of the need to reduce this code complexity. As such, it improves the speed and quality of our code. At its heart, RequireJS was designed to encourage and support modular development.

What is modular development?

Modular development separates out code into distinct functional units. This kind of organization is easy to maintain, easy to read (when coming into an existing project, for example), easy to test, and increases code re-usability. RequireJS supports the Asynchronous Module Definition (AMD) API for JavaScript modules. AMD has a particular way of encapsulating a module and embraces asynchronous loading of a module and its dependencies:

Factory Function

In this module, we call define with an array of the dependencies needed. The dependencies are passed into the factory function as arguments. Importantly, the function is only executed once the required dependencies are loaded.

What does Require look like in Oracle JET

In an Oracle JET application, RequireJS is set up in the main.js (aka “bootstrap”) file. First we need to configure the paths to the various scripts/libraries needed for the app. Here is an example of the RequireJS configuration in the main.js file of the Oracle JET QuickStart template. It establishes the names and paths to all of the various libraries necessary to run the application:

RequireJS configuration


Next we have the top-level “require” call which “starts”our application. It follows the AMD API method of encapsulating the module with the require, and passing in dependencies as an array of string values, then executing the callback function once the dependencies have loaded.

Top Level Require

Here we are requiring any scripts and modules needed to load the application, and subsequently calling the function that creates the initial view. Any other code which is used in the initial view of the application is also written here (routing, for example). Note, we only pass in the dependencies that we need to load the initial application, saving valuable resources.

Using RequireJS in other modules/viewModels

RequireJS is also used in the other JavaScript files of a JET application to define viewModels. The syntax used, however, is slightly different, and can be confusing. Let’s take a look:

View Model RequireJS Syntax

Here we are passing in an array of dependencies, but we’re using “define”, and not “require.” In short, “define” is used to facilitate module definition, while “require” is used to handle dependency loading. In a module definition, for example, we can utilize “require” WITHIN a module to fetch other dependencies dynamically. “Require” is typically used to load code in the top-level JavaScript file, and “define” is used to define a module, or distinct functional portion of the application.

Oracle JET makes use of RequireJS to support modular development. Require manages the many JavaScript files and module dependencies needed in an Oracle JET application. It simplifies and organizes the development process, and makes reading, writing and testing code much more straightforward.

A Designer’s Introduction to Oracle JET

I’m thrilled to be presenting at Collaborate 2016 with my colleague John Sim, on the recently open-sourced Oracle JET! We front-end developers had been seeking a better UI/UX solution from Oracle for quite some time, and they have delivered in a big way.


Oracle JavaScript Extension Toolkit (JET) is a powerful and intuitive framework that provides a modular toolkit for front-end developers. Rather than re-inventing the wheel, Oracle JET integrates tried and tested open-source frameworks and libraries like jQuery, KnockoutJS, and RequireJS with JET-specific pre-built UI components. Oracle JET is a flexible client-side framework that can integrate with a variety of back-end services. The combination makes for speedy assembly of client-side applications that integrate with Oracle products and services, especially Oracle Cloud services.


While Java may be the leading language in the industry, JavaScript has quickly gained popularity, especially for developing client-side user interactions. JET was initially built for Oracle in-house use, but Oracle customers and partners continued to ask for JavaScript-based UI development that could interact with existing Oracle platforms. JET provides the capabilities and flexibility of JS UI development, while complying with Oracle standards (internationalization and accessibility, for example) for product delivery.

Part of the beauty of JET, is in its modularity. It allows developers to use as much or as little as they need for a particular project. In addition, different libraries can be incorporated. As JS libraries evolve, and new frameworks are developed, the idea is that they can be incorporated, as well. Oracle JET’s flexibility ensures that it can change with the JS development world.

Our session is targeted at front-end developers looking to leverage their Javascript, CSS3, and HTML5 front- end design skills to create modular single page applications with JET. We’ll include an overview of the JET framework, and discuss the features and benefits along with a quick comparison with ADF (Application Development Framework). We will walk through and

explain JET’s integrated open source libraries and frameworks,

and then take developers through the creation of a simple JET application using Oracle DoCS REST API.

Please join us at 10:30AM on April 11 in Jasmine D for a dive into this flexible, open-source(!) and exciting new JS framework, and please come see all of the Fishbowl Solutions gang at Booth #1028!

A Few of My Favorite Things for Ultimate Productivity with Oracle WebCenter

As an Oracle WebCenter consultant at Fishbowl Solutions, I have a number of tools that I use that keep me happy and productive. Whether or not you are a software developer, these tools can do the same for you and your business.




Unless you’ve been hibernating for the last year or so, you’ve probably heard of Slack. Haven’t adopted it for your business yet? Here’s why you should.

Slack facilitates contextual, transparent and efficient communication for teams. Slack helps organize your communications into “channels.” Working on a project with Fishbowl Solutions on a WebCenter project? Create a Slack channel and centralize your communications. Quickly share files with the entire team, and “Slackers” can give instant feedback. On the go? Slack goes with you via mobile, of course. Slack provides direct messaging and private channels, too.

Even better, Slack lets you integrate dozens of apps, so that you can centralize all of the services you and your team use. Send calendar reminders and events, search for documents, even start

a Skype call. Slack is team communication for the 21st century (with custom emojis!).


Twitter and Evernote


Twitter and Evernote are my number one/two combo punch for staying on top of all things development. Twitter allows me to keep up to date with the latest news and trends in the web development world. I can peruse dozens of articles every day with information I want to store for later use. I save links to the best articles in my Evernote account, which I have organized into different notebooks for various topics. For example, I’m working on a presentation for Collaborate 16 on Oracle JET, Oracle’s new front-end JavaScript framework. Anything interesting I see on Twitter re: Oracle JET goes right into my Evernote notebook. It makes keeping track of news and information a breeze.




Trello is the application for list-making over-achievers (like me). I organize my to-dos into different “boards”, depending on the project. I have a different board for each project I’m working on at Fishbowl. As I think of something I need

to do, I can quickly add it to the appropriate to-do column. When I’m busy with a task, I put it in the “doing” column, and then slide it on over

to “done” when

finished. I can keep up with my task flow, it’s motivating, visually appealing, and goes with me where I go. Trello also allows me to share tables with others for easy collaboration. Oh, and did I mention I can integrate Trello with Slack (insert custom Slack emoji here)?



Toggl is a fantastic little desktop timer tool my colleague Nate Yates introduced to me. We consultants at Fishbowl Solutions need to keep very accurate timing of the hours we spend on different projects. Toggl allows me to input my different projects, and then just click the appropriate button when I start working on it. It keeps track of my time for the week on each project. It makes keeping track of my time simple, so that I can focus most of my time on creating responsive single-page applications for Fishbowl Solutions customers.



A nice list this holiday season…Top 10 Takeaways on Oracle WebCenter 12c, The Cloud, and User Experience from OpenWorld 2015


Everyone likes lists. They are easy to follow, easy to cross off, and easy to add to. And since it is the holiday season, and you are (hopefully) putting the finishing touches on your gift giving or meal preparation lists, I thought what better way to summarize what we learned from Oracle OpenWorld 2015 in a Top 10 list. However, one caveat to that is these are not listed in any particular order, and they represent Fishbowl’s perspective on what was shared at the event regarding Oracle WebCenter Content and Portal 12, The Oracle Cloud, and front-end user experience. You can get more information on the items in this top 10 list by listening to the recording of our webinar that we delivered on December 10th.

  1. Oracle is definitely in the enterprise sync and share space. You’ve probably used Dropbox, Box, or Google Drive, and if you have you would probably agree that they were easy to use. Oracle Documents Cloud Service (ODCS) couples this ease of use with more manageability – especially for Oracle WebCenter Content customers. Content customers can maintain their content repositories on site, and easily and securely share and sync content with ODCS. New in WebCenter 12c is the ability to collaborate on content in the cloud, capture content in the cloud (emails or scanned documents), and mirror content between your on premise WebCenter instance and ODCS.
  2. Oracle’s clouds offerings help usher in new ways to engage with content and facilitate business processes. For example, you could use Oracle’s Mobile Cloud Service to build a mobile app for human resources to help with employee on boarding. We all have been through the on boarding process before, and in most cases the tasks to complete are contained within archaic HR systems and must be viewed on a desktop. With Mobile Cloud Service, coupled with Oracle’s Process Cloud Service, new employees could go through training videos, ethic courses, etc., on a mobile device – even downloading the videos for watching offline. Then, Process Cloud Service could be used to build a simple

    form where the user could check off their on boarding list, and any checked off items would trigger a workflow update to managers and HR. Dashboards could also be created for users to see their overall on boarding process status, and gamification elements could be incorporated rewarding employees for prompt training/on boarding.

  3. Oracle WebCenter has a new interface and it is really cool. Oracle released the ADF-based user interface with, but in 12c the new interface is present out of the box and does need to be enabled/turned on. This new UI, based on the Oracle Alta UI is modern, allows for more visual content, and was designed with mobile in mind.
  4. You can now annotate (mark up) images within WebCenter Content. This feature makes it even easier to collaborate on documents in WebCenter.

    Annotations include highlighting or redacting text and adding notes or watermarks. This feature should help speed up document-centric workflow processes.

  5. The Document Imaging Server from Oracle WebCenter Imaging has been consolidated with the Oracle Content Server. No more having to maintain separate repositories for transactional content (invoices) and business content (legal documents).
  6. WebCenter Portal has made major improvements with contribution, publishing, and mobile responsive. Again, the interface improvements alone will help contributors and developers build, launch and maintain a portal site in less time.
  7. Oracle JET will help front-end web developers create better user experiences. Oracle JET (Java Extension Toolkit) is a set of JavaScript libraries to build applications that interact with Oracle products. JET will especially be useful in building applications that consume and interact with Oracle Cloud Services. Again, the future looks bright from a user interface perspective at Oracle.
  8. Hybrid Content Management and

    Portal deployments may be the most logical progression. Fishbowl’s sees scenarios where WebCenter customers deploy their dev, test and staging environments on premise, and then deploy a production portal or content repository to the cloud using Oracle’s Platform as a Service (PaaS) and Java Cloud Service.

  9. Customers are talking cloud but don’t necessary have a strategy to get there. Most organizations are using cloud-based solutions (Google Drive, Dropbox, etc.), but some of these may not be approved for use. With Oracle’s comprehensive offerings across content, portal, mobile, workflow, and the cloud, organizations do not need to look outside the Oracle stack to fulfill business requirements. When you consider integrations, interoperability, and scalability, Oracle customers look to benefit from a total cost of ownership perspective.
  10. The event is growing! Estimated attendance this year was 60,000 people. 5 years ago, my first OpenWorld, it was around 40,000 if I remember correctly. Oracle is investing heavily in The Cloud, business process automation, and user experience, and if OpenWorld attendance is any indication their customer list is growing. Oracle has a great ecosystem of developers, thought leaders, and users. This growing community will only help strengthen the products further.

Again, for more information on any of the items in the list above, check out the recording of our webinar on YouTube.

Happy Holidays!