jQuery Hosted by Google AND Microsoft

September 21, 2009 Jason Stortz Comments off

Last Tuesday, 9/15/2009, Scott Gutherie of Microsoft broke the news about jQuery on the Microsoft CDN. Now, whichever side of the fence you sit on in the Google vs. Microsoft religious fervor you will still enjoy being able to use jQuery on their dime! Happy, happy, joy joy!

The official ASP.NET Page about the CDN:
http://www.asp.net/ajax/cdn/

An in action sample:
http://stephenwalther.com/blog/archive/2009/09/16/microsoft-ajax-cdn-and-the-jquery-validation-library.aspx

Which should you use?
http://stackoverflow.com/questions/1447184/microsoft-cdn-for-jquery-or-google-cdn

Those of us using jQuery in our Oracle Web Content Management initiatives need to be aware of this and the Google AJAX APIs. I always like to have options. This is just one more option for us.

You can also check out the Google jQuery hosting options here.

Categories: OracleWCM

Find Your UCM Search Active Index in Java

September 17, 2009 Jason Stortz Comments off

Out on the Oracle ECM Forums a question came up about how to find out which index is currently active (from Java). It's quite simple really. Just use the getActiveProperty method of the ActiveIndexState class.

Like so:

String activeIndexRoot = ActiveIndexState.getActiveProperty("ActiveIndex"); 

To see this in action grab this Sample Component to Find Your UCM Search Active Index.

Categories: OracleUCM

Ping Enabling Your Firewall

September 12, 2009 Jason Stortz Comments off

Today I was setting up a VMWare Workstation instance. I tried to ping the host. It did not work. Figures. I thought to myself, what's the setting to enable that again? I get tired of hunting this down for the Windows Firewall and my Norton Firewall.

I also wanted an excuse to play with creating HD quality YouTube videos. So here goes.

Categories: Mindlessness

UCM Community Expands Again – Welcome Kyle!

September 10, 2009 Jason Stortz Comments off

While my blog output the last couple months has been lackluster at best the community at large has benefited from a new author in the arena. Take a look at http://blogs.oracle.com/kyle. Leave a comment. Welcome Kyle Hatlestad to our blog-o-sphere.

I am adding Kyle to the blog roll here. He has already produced a series of very nice articles and I strongly encourage you to take a gander and add his site to your RSS Reader. To give you a sample, here are the titles of his first eight posts:

2009.08.31 – How to set up a Public Document Library in WebCenter Spaces
2009.08.21 – Positioning Sections in Site Studio Designer
2009.08.20 – Site Studio Naming Best Practices
2009.08.18 – UCM Black Hole Check In
2009.08.14 – Allow Contributors To Add Fragments To Your UCM Site Studio Pages
2009.08.06 – UCM Custom Skins and Layouts
2009.07.23 – Global Rules for Standard Check In and Search Only
2009.07.21 – Displaying Native Content With Site Studio 10gR4 in External Apps

Excellent work so far. Kyle has been involved in various aspects of the community for a while. I see his name in forums and blogs occasionally. This is a great next step for him, and a benefit for all of us learning and using Content Server on a weekly basis.

In an effort to learn more about Kyle I have been sending him questions and tabulating his answers to form a kind of "Web Interview". I wanted to introduce him as a community participant, point out his great work and demonstrate to people just how approachable he is. Here's some of the questions I asked and his responses.

Where have you worked other than Oracle (did you come over with the Stellent acquisition)?

Yes, I came over as part of the acquisition of Stellent. I joined Stellent (which was formally named IntraNet Solutions) in July of 1998. Prior to Stellent, I worked at Camax which was a Computer Aided Manufacturing (CAM) software company for 3 years.

Where is home?

I work in Eden Prairie, MN which was the Stellent headquarters. I live about 20 miles north and was born and raised in Minnesota.

Can you describe what you do now for Oracle and the previous roles you have played in the history of Stellent?

I work in the sales organization in a department known as the Enterprise Solution Group. Our charter is to put together reusable sales assets that can be used during sales cycles. Prior to sales, I was in the Quality Assurance department doing testing for several years. I was also a consultant for several years and did go to customers to do initial installs and configurations of systems.

Is there anyone you can single out has influential in your career development?

Frank Radichel who is a Vice President in Software Development at Oracle and was head of R&D under Stellent has been a big influence on me. I've worked directly for him when I was in the Quality Assurance group and have always worked with him in the other various roles that I've had (Tech Support, Consulting, Sales). He's always been a great mentor and someone I could always turn to with questions.

What products do you work with on a semi-regular basis at Oracle besides UCM (your recent blog post indicates WebCenter Spaces)?

The major ones within what we call the 'Enterprise 2.0' group. They include the portal products of WebCenter Spaces, WebCenter Interaction, and WebLogic Portal. I also work a lot with Information Rights Management and Oracle Capture. Outside of the E 2.0 products, I've done work with BPEL Process Manager, Siebel, AutoVue, & BI Publisher. It's basically the laundry list of products that integrate with UCM. Which seem to be growing every day.

Within UCM what are your favorite two products and why?

I generally like to work with Site Studio. Web Content Management offers a lot of flexibility and creativity. I also like working with the core Content Server which has proven to have a great architecture over the years.

Outside of UCM what are your favorite two Oracle products?

WebCenter Spaces is a great product to work with. It's a very advanced product with a lot of flexibility and control. Provides a great portal/workspace environment that we use internally on a day-to-day basis with our own projects.

And I guess the other product would have to be the database. Under Stellent I was often intimidated when working with the Oracle Database, but have really enjoyed digging into all the things it can do and benefits it provides. Things like Secure Files with compression, deduplication, and encryption of unstructured data, the Application Express (APEX) interface, Oracle Text searching, etc.

What's one piece of functionality that you would like to see added to Content Server? (I get asked this on support follow-up calls all the time!)

Yeah…this is a tough one because it's always changing depending on what I'm working on at the time and what's missing.

While it's not technically functionality, I think a redesign of the UI would be nice. I think functionally it can do most of the things customers need (or can be customized to), but the general UI can be difficult to use for the non-technical user.

One enhancement I've always wanted to be included since day one has been the ability to store and present comments in Workflow. For both rejection and approval. I've been asked too many times then I can count if you can add comments when you approve in workflow.

What do you feel is the hardest part about customizing Content Server?

Tracing resource includes across different components and patches. Resource includes are great in that they are modular and reusable, but given the number of core and extra components that generally get loaded, it can be cumbersome at times to find the code you need to override for your component.

Do you have any advice to share with those that have just purchased Content Server and are intimidated by "the possibilities" it provides them?

Well, I've always tried to encourage customers to start small and try to do quick win projects first. It helps with the learning curve and encourages adoption. I've seen too many initial big projects that get bogged down in politics, lack of understanding, and poor planning.

Also, I tell every customer to buy the book "The Definitive Guide to Stellent Content Server Development" by Brian "Bex" Huff. Even though it was written prior to the acquisition, the majority of it still holds true for UCM 10gR3 and is a tremendous resource.

Please tell us your vision for the future of Content Management (2-3 years out). What are some forthcoming trends, technologies, etc.?

I think it's something that Billy Cripe has been saying for a few years now and that's "invisible ECM". It's the concept that ECM is sitting behind the systems that businesses use to do their day-to-day work. So it will be less important that it be a primary system that users go directly to and use but rather transparent to them as they are executing their business process. So I see a lot more integrations down the line that tie Content Management systems closer to these business systems.

Here's to hoping that Kyle can find the time to continue sharing his insights with all of us in the community for a long time to come. Thanks for the info Kyle, keep the posts coming!

Categories: OracleUCM

Uninstall Stellent Services

August 18, 2009 Jason Stortz Comments off

When attempting to install or uninstall Content Server or the related services on a Windows box you may occasionally run into some problems. Whatever the scenario is, you may get to a place where you need to manually uninstall the services.

Note: As you will recall, uninstalling Content Server is generally a very simple task of finding the bin directory on the command line and issuing this command:

Installer UnregisterAll

This should cleanup everything. When it doesn't, you can attempt these maneuvers:

-cs install-\bin\IdcServerNT -uninstall -cs install-\admin\bin\IdcAdminNT -uninstall -ibr install-\bin\IdcRefineryNT -uninstall

If this doesn't work, you can also try this beauty:

sc delete "service name"

And finally, you can go hack the registry at your own risk:

  1. Open command prompt
  2. Type "regedit"
  3. Press enter
  4. Navigate to 'HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services'
  5. Find service name you wish to remove
  6. Select it
  7. Delete it

Categories: OracleUCM

Release State Values Defined (dReleaseState)

August 12, 2009 Jason Stortz Comments off

A question was asked on the Oracle ECM forums about what the various values for Release State meant. I knew which states some of the single character values represented, but not all of them. I was interested in finally finding out this answer for myself once and for all so I dug in. What follows is what I found as a result:

N
apStateNew
This item was newly added to the system

Y
apStateCurrent
This refers to the revision status of the content item (so it's the most recent revision of the content item)

O
apStateOld
This refers to the revision status of the content item (so it's not the most recent revision of the content item)

E
apStateWorkflow
This means the content items is currently in a workflow

R
apStateProcessing
This means the content items is currently being processed by the indexer

U
apStateUpdate
This means the content item is being updated

I
apStateIndexing
This means the content items is currently being indexed

Categories: OracleUCM

Case Insensitive User Name Logins

August 2, 2009 Jason Stortz Comments off

A recent client has users who were getting frustrated about the case sensitivity of the UCM logins. Their old system did not have this restriction (feature?) and they wanted this removed. The more of these types of things you remove the less secure the login becomes, but depending on each situation the risk/reward analysis plays to either side of the fence.

This turns out to be a fairly easy task to accomplish. First, the users in question need to be changed to "Global" in the User Admin applet.

NOTE: This means you cannot perform this action with SYSADMIN.

Having switched the appropriate users to Global, you need to add this setting via Admin Server (under General Configuration) or directly to the confing.cfg file. Once added, do not forget to restart the services.

AllowCaseInsensitiveLogin=true   

Categories: OracleUCM

Defaulting Query Form Type

July 23, 2009 Jason Stortz Comments off

The default query form setting out-of-the-box is the expanded "standard" form. New with 10gR3, you also get the Query Builder form that allows non-technical users to build more advanced queries. Query Builder also includes some new advanced options for power users.

One thing you may want to do at some point is change the default query form view. Users can set their preferred query form view in their profile. Once a user sets this in the profile it will override anything you or your admin set as the system default.

To see where all this query form view decision making is happening we will take a quick peek at the "determine_search_form_type" dynamic html include:

<@dynamichtml determine_search_form_type@> <$if not searchFormType$>  <$searchFormType = utGetValue("pne_portal", "searchFormType")$> <$endif$> <$if not searchFormType and DefaultSearchFormType$>  <$searchFormType = DefaultSearchFormType$> <$endif$> <$if not searchFormType$>  <$searchFormType = "standard"$> <$endif$> <$if DisabledSearchFormTypes$>  <$DisabledSearchFormTypes = DisabledSearchFormTypes$> <$else$>  <$DisabledSearchFormTypes = ""$> <$endif$> <$if DisabledSearchFormTypes like ("*" & searchFormType & "*")$>  <$if DefaultSearchFormType$>   <$searchFormType = DefaultSearchFormType$>  <$else$>   <$searchFormType = "standard"$>  <$endif$> <$endif$><@end@> 

Upon examination of this include you can see that you can use DefaultSearchFormType as a configuration variable in Admin Server or [install]/config/config.cfg to control the default query form view. Also note, they provide a variable to disable a particular query form view, DisabledSearchFormTypes.

Out-of-the-box, possible values we can set are "standard" which is the default, and "queryBuilder".

Categories: OracleUCM

Announcing Redstone Content Solutions!

July 21, 2009 Jason Stortz Comments off

Announcing: Redstone Content Solutions

I have been working with my business partner, John Klein, to form a new Advanced Training & Consulting company focused on Oracle products. We work specifically in the Enterprise 2.0 landscape. Please visit our new website to learn more about us and our services. Please feel free to contact us at any time for answers to your questions.

As one might imagine, starting a new company can be a bit of an adventurous undertaking. I wanted to take a moment to thank the various people who offered so much help and advice. So as to protect the innocent, we will not get into names, however, you all know who you are. Thank you so much for reviewing our content, tearing apart the website and answering way too many questions about running a business, accounting, insurance and legal advice.

Press Release: Open For Business

The Blog

The presence of and my involvement and commitment to Redstone Content Solutions will have no negative effect on Core Content Only. I intend to continue posting code samples and giving away free components as time permits. In fact, the possibility of MORE posting and samples is very real as time may actually be more available now that we have opened Redstone Content Solutions.

Belated Anniversary

Nearly one year ago, on July 14th, 2008, I released the first post for Core Content Only. One full, eventful year later I want thank you for visiting my corner of the internet and I appreciate all the feedback presented by my various visitors. I hope you have found the last year as rewarding as I have.

One year has presented 104 posts or approximately 8.6 posts per month as well as 14 free downloadable examples/components. This is a little below my posting target of 10 posts a month while still satisfying my "freebie quota" of one new download per month.

One of the most interesting parts of any public endeavor is monitoring the statistics. The first couple of months were a little slow and it was fun to see the visits and page views spike whenever the blog was mentioned in another public space. Visits and page views have fairly consistently grown by about 10% each month. The download page gets the most traffic by far.

Categories: OracleUCM

Search UCM (Stellent) With Groovy

July 9, 2009 Jason Stortz Comments off

In a previous article we talked about using Groovy to execute the PING_SERVER service of our SOA enabled Content Server. Interesting, but fairly useless you might say. Let's see how we can conduct a search using Groovy and then access specific metadata from those search results.

You may want to keep the RIDC JavaDoc link handy as you explore Groovy Integration further.

First, the script, and then some discussion.

The Script

// Import needed classes from Remote Intradoc Jarimport oracle.stellent.ridc.IdcClientManagerimport oracle.stellent.ridc.IdcContext
 
// Create the client for request/response, connect directly to serverclient = (new IdcClientManager()).createClient("idc://localhost:4444")
 
// Create a user/security contextuserContext = new IdcContext("sysadmin", "idc")
 
// Setup the request, search for two pieces of contentreq = client.createBinder()req.putLocal("IdcService", "GET_SEARCH_RESULTS")req.putLocal("QueryText", "")req.putLocal("ResultCount", "2")
 
// Get the responseresp = client.sendRequest(userContext, req).getResponseAsBinder()
 
// Dump out the local data of the responseprintln "LocalData:" resp.getLocalData().keySet().each{ println " $it = ${resp.getLocalData().get(it)}"}
 
// Dump out the names of the resultsets in the responseprintln "\nResultSets:"resp.getResultSetNames().each{ println " $it"}
 
// Dump out dDocTitle for each piece of content in the responseprintln "\nTitles:"rsSearchResults = resp.getResultSet("SearchResults")rsSearchResults.getRows().each{ println " ${it.get('dDocTitle')}"}
 
// Wrap it up!println "\nDone"
 

Closures

The above script makes extensive use of a language feature in Groovy known as a closure. Closures are not specific to Groovy and they are certainly not a new concept. They are found in many other programming languages. One such language you may be very familiar with is JavaScript!

In this particular case we are using the "each" closure function. Here is an excerpt from the sample script:

println "LocalData:"resp.getLocalData().keySet().each{ println " $it = ${resp.getLocalData().get(it)}"}
 

See that "each" statement in the second line? The word each followed by curly brackets forges the wrapping closure and the code inside is what becomes executed when the closure is invoked. In this case, our closure is invoked for each key in the Key Set of the Local Data collection. Within the closure you can use the "it" variable (as in iterator) to access each key.

If you have something against the name "it" for the variable you can alter the variable name. As an example, let's change the syntax so the variable will be named "key", try this:

println "LocalData:"resp.getLocalData().keySet().each{ key -> println " $key = ${resp.getLocalData().get(key)}"} 
 

This is also very helpful when using a closure within a closure. An example? Sure. What if you wanted to loop the resultsets and print the value for each column for each row of each resultset? You're code might use nested closures and look something like this:

resp.getResultSetNames().each{ println "\nResult Set '$it':" resp.getResultSet(it).getRows().each { row ->  resp.getResultSet(it).getFields().each {  field ->  println "\t${field.getName()} = ${row.get(field.getName())}" } } print("\t----------------")}
 

Additional Sample Scripts

Here are two additional Groovy Scripts you can download and try out:

Search & Target Title, and Search & List Result Sets

Categories: OracleUCM Tags: