Categories
bdg Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

ALUI (Plumtree) Training Postponed

We had some conflicts, so we postponed the Herndon, VA-based training to next week. It’s now 4/16-4/18 for administrators and 4/18-4/20 for developers. We’ll be accepting registrations until 4/13, so if you’re interested, please send a note to [email protected].

Categories
bdg dev2dev Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

Four ALI IDKs at your Disposal — Fifth One on the Way?

As most of you already know, there are four IDKs out there in IDK-land. To take a step back, if you’re really new to ALUI (formerly Plumtree) development, you can read about how ALUI handles portlets and how an IDK helps you write portlets. So, back to the four IDKs. They are all freely-downloadable from BEA — I’ve included links here:

*These two IDKs were written by developers at bdg and then released to the open source community on dev2dev’s CodeShare.

edocs warns you in boldface type: always use the IDK. That’s sound advice, given that the IDK API isolates you, as a portlet developer, from changes to the underlying protocol that ALUI uses to communicate between the portal and portlets (CSP). However, what if you’re not writing a portlet in Java, .NET, Ruby or PHP? As an aside, once upon a time, there were Perl and ColdFusion GDKs (predecessor to the EDK/IDK), but these development kits are no longer maintained by anyone, although I know for a fact that the ColdFusion GDK is still in use by an ALUI customer because it came up during a sales call!

So, back to my “what if” question: how can you write a portlet without an IDK? It’s actually not too hard if you’re just getting information from the portal. However, it gets challenging when you start setting preferences and then it starts to get really painful when you start dealing with Unicode issues, encrypted settings and some of the other really hairy stuff. So that’s why edocs implores you to use an IDK, when one is available.

If you do go down the road of writing a portlet in a language where an IDK isn’t available, I highly recommend that you at least abstract out your CSP calls such that they’re isolated from the rest of your portlet code. While you’re at it, you might as well follow the same API that BEA uses; in other words, write your own IDK (or at least the parts of it that you need to get your portlet done). To get you started, here’s how BEA probably implemented one of the IDK methods in Java:

public AggregationMode getAggregationMode() {
  if (!request.isGatewayed()) {
    throw new NotGatewayedException("Request not gatewayed.");
  }
  
  if (request.getHeader("CSP-Aggregation-Mode").equals("Multiple"))
    return AggregationMode.Multiple;
  } else {
    return AggregationMode.Single;
  }
}

So, go forth and write your own IDK. Or, preferably, ask a bdg-er to write one for you!

On a related note, one of our customers recently asked us to build an IDK for Lotus Notes/Domino in LotusScript. We’re trying to figure out if other people might be interested in this IDK so that we can decide if we’re going to open source it or do it as a consulting project (or some hybrid of the two). If you are interested in LN/Domino development for ALUI, let us know by commenting on this blog. I always love hearing feedback from users of the PHP and Ruby IDKs as well.

Comments

Comments are listed in date ascending order (oldest first)

  • Hi Chris. We have a couple of remote portlets on web servers running Perl so I looked around for awhile for the original Perl IDK but couldn’t locate it, so I’ve written a Perl module that supports the methods provided by IPortletRequest. They’re read-only methods but are really all we needed access to. man-page is here…
    http://webdev.co.nz/Perl/IPortletRequest.txt Is this worth placing in codeshare do you reckon? I don’t see a lot of action in the forums concerning Perl use.

    Dean Stringer ([email protected])

    Posted by: deeknow on March 22, 2007 at 2:00 PM

  • Hello Dean! The original Perl GDK was written so long ago that I’m not sure how much good it would do. It was based on CSP 1.0 and it followed the old GSServices API rather than the new com.plumtree.remote.portlet API.

    I’m pretty stoked to find out that someone else has written at least part of an IDK — that’s impressive. Do I think it’s worth posting to CodeShare? I haven’t heard much talk about ALUI and Perl, but I guess it can’t hurt.

    Posted by: bucchere on March 22, 2007 at 5:03 PM

  • Hi, Chris. We would love to have a Lotus Notes/Domino IDK available to us, as we have lots of “legacy” applications in Domino that we want to expose in ALUI, and an IDK would certainly help! Just my nickel’s worth… 🙂

    Posted by: kcepull on March 30, 2007 at 11:21 AM

  • Thanks for your comment. If you don’t mind my asking, would you be willing to pay for such a thing or is it only a nice-to-have that you would download and use if it were opensource, but not pay for it if it were a commercial product?

    Posted by: bucchere on March 31, 2007 at 6:07 PM

Categories
bdg dev2dev Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

Portals and SOA: Portals in a Service-Oriented Architecture

I’ve been invited to give the following talk at BEA Participate:

Why is a Service-Oriented Architecture important to an IT infrastructure and what are the elements and products needed to build out an SOA? These questions answered, plus a discussion on how portals are the practical starting point to leveraging SOA.

Quite honestly, the title and abstract make it sound like an invitation to engage in a lively game of buzzword bingo, but I assure you this talk will be light on the trite — you won’t hear me use the acronym SOA more than once or twice — and heavy on the real deal, rubber-meets-the-road stuff about how mere mortals/human beings are actually accomplishing the sort of things that SOA evangelists are preaching these days.

So, here’s what you can expect: I’ll talk a bit about some of the challenges of building integrated user experiences in today’s enormously complex and heterogeneous IT environment and show how a software developer — without superpowers — can piece together an integrated true-to-the-principals-of-SOA application using ALUI, ALDSP (Data Services Platform) and ALESB (Enterprise Service Bus). This will culminate in an actual, real-life demo.

I will of course make sure to sacrifice a chicken to the Almighty Goddess of Demos or do whatever else I have to do to make sure my demo doesn’t crash. Scratch that, I’ll just run it on Linux and everything will be fine.

So, all joking aside, if you have any ideas for items you’d like me to include in (or exclude from) my talk, please post your comments here. I’ll be sure to give anyone who makes a good suggestion a “shout out” during my presentation. They’re actually giving me a whole hour this time, so they’ll be room for plenty of tomfoolery, geekspeak, silly anecdotes and still time to answer your insightful questions at the end. As one of my good friends and business partners said following my talk at last year’s BEA World,

you never know what to expect during one of [Chris Bucchere’s] talks.

I’m not sure exactly what he meant, but of course I took it as a compliment.

In closing, while we’re on the subject of BEA Participate, I just wanted to say thanks to Christine “Obi” Wan for giving me the opportunity to present and, more importantly, for putting together such a great-looking agenda, which you can review if you like, because now it’s posted on the BEA Participate site.

In the meantime, do your best to convince the powers that be at your company/organization that they will finally discover the secret to “leveraging SOA” if they send you to this conference. Also, please don’t mention that every past Odyssey has had several open bars.

Comments

Comments are listed in date ascending order (oldest first)

  • Working with Aqualogic we all know how it’s easy to plug in our portlet into Aqualogic. We don’t need Aqualogic portal running on our own computer to do this, we don’t need special IDE, we don’t need upload wars into portal. It took time to explain this to my experience J2EE collegaes that got some experience with IBM Websphere. Here what they do there:
    http://www-128.ibm.com/developerworks/websphere/techjournal/0410_barcia/0410_barcia.html
    A lot of steps pretty much the some but have a look at step 11. Here is the core difference. So at least one benifit of SOA is that we don’t need to do step 11.

    Posted by: Bryazgin on April 13, 2007 at 7:03 AM

  • >Quite honestly, the title and abstract make it sound like an >invitation to engage in a lively game of buzzword bingo True, I have the some issue. In my article (for russian development network) I want to stress SOA architecture of Aqualogic, but I don’t want to use SOA word. Audience is pretty techical so they all pretty much feed up of this word. Hmm, may be I will end up with this:
    Avoid nightmare of step number eleven !
    At least, “what the hell this guy talking about?” will be more predict reaction. 🙂

    Posted by: Bryazgin on April 13, 2007 at 7:25 AM

  • Hi Dmitri! Thanks for your insightful comments.As I’m building the demo for my talk, I’ve noticed that these SOA tools encourage you to loosely-couple everything. And that’s a good thing. As you pointed out, ALUI fits into this nicely with its loosely-coupled portlet architecture. The evil “Step 11” (too bad it wasn’t “Step 13”) is: “Select the Browse button and navigate to the WAR file for your portlet, then select Next (Figure 17).” Step 11 has some pretty awful implications for the enterprise. First off, it assumes that everything is Java, which, as much as I love Java, is just wrong wrong wrong in the heterogeneous enterprise. Secondly, it tightly couples your portlets to your portal, which is contrary to SOA.As an aside, I was listening to some Web 2.0 podcasts in the car the other day, and this guy who worked on Google Maps talked about “seams” in an architecture. To paraphrase, he basically said that everyone misuses the word “seamless.” Seams, just like in the textile industry, are critical to enterprise architecture. Just as seams hold swaths of fabric together and separate one bit of fabric from another, they also help define boundaries in the enterprise architecture that are equally critical to SOA. Without seams, everything must be homogeneous — applications must be bought from the same vendor, run on the same OS, be written in the same language, etc. — and this is completely contrary to the reality of enterprise software and systems and completely anti-SOA.

    To illustrate how not being “seamless” is actually a good thing, I’ve designed a demo system that involves bits of LAMP (Linux Apache MySQL PHP), bits of Java, bits of .NET and bits of Adobe Flash all held together with seams built with ALDSP, ALESB and ALUI. I’m still working on the technical side of things, but the use case is simple: a sales rep wants to quote his customer. Behind the scenes, his company is running a LAMP CRM server, a Flash/SQLServer product database, a .NET portal, and a Java-based Collaboration Server. Using a hybrid of ALDSP, ALESB and Java and .NET web services, the user experience is easy and seamless, but behind the scenes, it’s the powerful seams supported by ALDSP and ALESB that make this not only possible, but fairly straightforward.

    If you’re interested in hearing more, register for BEA Participate and [shameless plug]come to my talk[/shameless plug]! By the way, I’m co-presenting with Joseph Stanko, the BEA Engineering Manager responsible for the development of Ensemble (formerly known as Project Runner) — he will run several slides to help you understand the theory behind SOA and I will show the reality of how the AquaLogic stack truly enables SOA in the enterprise.

    Posted by: bucchere on April 14, 2007 at 6:07 AM

  • Alas, I’ve finally finished my demo. I had some configuration issues with ALSB, but ultimately they boiled down to the interface between the keyboard and the chair, i.e. human error. I had the proxy service calling the business service, which, in turn, called the proxy service again. You should have seen the utter wasteland this little tidbit of mutual recursion made of my machine. Actually, I was impressed — Java would spit out a JVM_Bind error once it exceeded some internal maximum, but ALSB (running on WLS 9.2) would actually keep running. Nice.Anyway, now that I’m past all that, I have an ALDSP layer over two disparate data sources (one MySQL DB containing CRM info and one HSQL DB containing product info) exposing data through netui/beehive to a single ALI portlet. (The nifty little portlet uses script.aculo.us to show an interesting new take on the age-old concept of master-detail.) I also included an Adobe Flex-driven portlet. The two portlets use some client-side IPC (inter-portlet communication) to exchange info and then they call a proxy service on ALSB that takes info from both sources and creates a Word document (in the form of a sales quote). The business service also uploads this document to ALI Collaboration so that people can work on it collaboratively before sending it to the customer. (I may replace this last little bit with a .NET web service, just to show that Java and .NET are both acceptable alternatives for writing the “glue” or “seams” in a true service-oriented architecture.)Lastly, the event coordinators have locked in a time slot for us: Monday, May 7th at 4:30 PM in the Technical/Developer Track.

    If you’re “participating” it would great to see you at our talk or at the bdg booth. This year we have a cool — yet practical — giveway that will definitely brighten your day. Looking forward to the conference!

    Posted by: bucchere on April 22, 2007 at 7:52 PM

Categories
bdg Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

Upcoming ALUI (Plumtree) Training — April 9th, 2007

We’re very pleased to announce that we’ve finalized the date for our next ALUI/Plumtree training course, scheduled for the week of April 9th, 2007.

We’re changing the lineup a tad to provide three days of ALUI administration training followed by three days of developer training, but all in a five day week. So how do we plan to pack six days of training into five? The answer is “super Wednesday,” which will be a day when we teach administration for developers. In other words, it’s the last day for the administrators (advanced administration) and the first day for the developers.

Bottom line: to sign up for either class (or the whole week), send an email to [email protected].

Categories
bdg dev2dev Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

WLP + Adrenaline = ALI?

I recall sitting in a meeting in 1998 where we were discussing how to aggregate portlet content into a portal page. We talked a lot about iframes but couldn’t consider them as a serious integration option because of security, scalability/performance, caching and portal-to-portlet communication. Instead, we spent the next year building and testing the HTTPGadgetProvider, which later came to be called the “(Massively) Parallel Portal Engine.” (The term “Massively” was later dropped and I believe the name “Parallel Portal Engine” or PPE for short finally stuck.) I won’t go into details about how the PPE works, but if you’re interested, you can check out this great page in edocs that sums it up nicely.

So anyway, iframes are certainly reasonble way to build a portal in a day. But, in terms of building a robust enterprise portal that can actually withstand the demands of more than say, ten users, and that will pass even the most rudimentary security evaluation, iframes are complete nonsense.

So, today, during my lunch break, I attended Peter Laird’s Webinar, which he advertised in his nascent blog. It was all about enterprise mashups, a topic by which I’m very much intrigued. (Recall that PTMingle, my winning entry in the 2005 Plumtree Odyssey “Booth of Pain” coding competition was a mashup between Hypergraph, Google Maps, del.icio.us and Plumtree User Profiling.)

Imagine my surprise when Peter described how you can mash up Google “Gadgets” and other resources available via URLs using Adrenaline, a “new” technology from the WLP team based on, of all things, iframes. It was like entering a worm hole and being transported back to 1998. (I was single again, I had no kids, I was thinner and I had more hair on my head . . . and less on my back.) But the weird thing about this parallel universe is that BEA engineers were telling me that iframes were a great way to mashup enterprise web content and that intranets all over the world could benefit from this revolutionary concept. Intranets? You mean the things that everybody replaced with portals in the last millennium? Iframes? I must have been dreaming . . . .

When I finally came back to my senses, a few things occurred to me.

First of all, it’s 2007. Portals are a thing of the past. For some of us, that will be a hard pill to swallow. But let’s face it, innovators have moved on to blogging, wikis, tagging/folksonomies and lots of other nice web 2.0 sites that all have rounded corners. The bleeding edge folks have decided that many is smarter than any. The rest of the world will catch up soon.

Secondly, if you are still building a portal or composite application of any flavor, iframes are not a viable solution. They fall short in the following ways:

Portal-to-Portlet Communication

Say you want to send information (like the name of the current user) down to a portlet running in an iframe. Hmmm, the request for an iframe comes from the browser, not from the portal. So, if anything needs to be passed into the iframe, I guess you have to put in in the URL in the request for the iframe. That’s great, but that URL is now visible in the page’s source. So a simple, “Hello [your name]” portlet where the portlet gets the name from the portal is doable. But what about passing a password? That information would need to go first to the browser and then back to the remote tier, which, from a security standpoint, is a complete showstopper.

Security

Let’s talk a little more about security. Since you’re using an iframe, the requests aren’t proxied by the portal. Instead, a page of HTML gets sent from the portal to the browser and then the browser turns around and makes requests to all the iframes on that page. Since the portal isn’t serving as a proxy, it can’t control what you do and don’t have rights to see, so security is completely thrown out of the window. (Or should I say, thrown out of the iframe?) Moreover, in an enterprise deployment, the portal usually sits in the DMZ and proxies requests out to bits and pieces of internal systems in order to surface them for extranet users. If you’re using iframes, every bit of content needs to be visible from an end user’s browser. So what’s to stop an end-user from scraping the URL out of a portal page and hitting a portlet directly? Nothing! (If I understand what I’m reading correctly, the WLP team is calling this a feature. I would call it a severe security risk.)

Scalability/Performance

Yes, this approach will work for Google Gadgets. But Google has more money than pretty much everyone. They can afford to spend frivolously on anything, including hardware. However, the rest of the world actually cares about the kind of load you put on a system when you create a “mashup.” A page consisting of five iframes is like five users hitting the sites with five separate requests, separate sessions and separate little “browsers.” If any of the iframes forces a full-page refresh or if the user does the unthinkable and say, moves to another page, every request is reissued and the mashup content is regenerated. This simply does not scale beyond a few users, unless you have as much money and as much hardware as Google does.

Caching

A properly designed portal or content aggregation engine will only issue requests to portlets when necessary. In other words, each remote portlet will only get a request if it needs to be loaded because the portal doesn’t have a cached entry. Unfortunately, you can’t do this with iframes because the portal doesn’t even know they exist. (Remember, all requests for iframe content go directly from the browser to the remote content, bypassing the portal entirely.)

What baffles me is why a company would acquire another company with a revolutionary technology (the PPE) and then start from ground zero and build a technology that does the same thing but without a portal-to-portlet communication model (preferences), security, scalability or caching. If consumers weren’t already confused, now they most certainly are.

As technologists, I hope you can see through the hype about Adrenaline and consider a product that actually allows you to mash up web content in a scalable and secure way and has been doing so since 1999. It’s called AquaLogic Interaction and it’s sold by a company we all know and love called BEA.

Comments

Comments are listed in date ascending order (oldest first)

  • I just discovered that the BID/AquaLogic (formerly Plumtree, Fuego, Flashline, etc.) folks are having another webinar, entitled “Harnessing Enterprise Mash-ups with Security and Control.” This webinar (I hope) will show:
    1. how ALI has been handling mashups since before mashups was even a buzzword and
    2. how Project Runner enables next generation mashups that allow you to invoke back-end applications and provision security, branding, SSO, etc. without actually funneling everything through the portal.

    If you were at today’s webinar and you’re now wondering how to do mashups with more robustness and security, then I hope you’ll attend this webinar. By all means, it’s just the responsible thing to do in order to offer customers different integration options when creating their mashups.

    Posted by: bucchere on January 10, 2007 at 7:31 PM

  • I’d like to add a couple points of clarity from BID product management. First of all, we’re happy to have passionate developers, but I fear this post may give the wrong impression about some of BEA’s technology and plans.

    WLP Adrenaline, ALUI, and project Runner are all complementary technologies that have a very exciting future when applied to problems such as Enterprise Mashups. You’ll be hearing more about them from BEA over the coming months through various venues, including Webinars targeted at WLP-specific use cases (such as Peter’s excellent talk) and ALUI use cases (including tomorrow’s Runner Webinar). There will also be the usual blogging and other activities.

    Just as WLP and ALUI product teams are aligned, these different technologies are aligned. Adrenaline offers WLP customers a way to extend their reach in fundamentally new ways, and Peter will expound on some technical subtleties to address some of Chris’ concerns. Runner, too, is very exciting, enabling a completely different set of use cases. As the details unfold we’ll demonstrate how well aligned these technologies are — just wait until you see them working together!

    – David Meyer

    Posted by: dmeyer on January 10, 2007 at 10:41 PM

  • Just for those that don’t know about Adrenaline, here’s an article introducing Adrenaline.

    Posted by: jonmountjoy on January 11, 2007 at 12:19 PM

  • Chris,

    As David writes, BEA is moving ahead with multiple approaches to address the enterprise mashup space. My webinar covered the approach WLP is taking, and in no way implied that ALUI is not also a viable player in this space. We offer our customers a choice of products, and different products make sense to different customers.

    As for the specific issues you raised:

    ** Technical Reply

    Good technical points, but I think you overemphasized the role of iframes within WLP. Let me cover the two places we showed the use of iframes:

    Use Case 1: injecting a portlet into a legacy webapp

    Demo: An iframe was used in the demo to inject a portlet into a legacy static html page with almost no modification to that page (one line change).

    WLP does support an alternative approach – an Ajax streamed portlet. I simply did not have time to demo it. Also, this is not a portal use case for including external non-portal content into a Portal; instead it is the inverse, which is to publish existing portal content into legacy web applications . It was intended to show a very inexpensive way to energize a dated application until it is rationalized into a portal. The focus here is on minimizing cost of supporting legacy, while building portlets in transit to a portal solution.

    Use Case 2: WLP as a Mashup composition framework

    Demo: Iframes were used to pull in non-WSRP capable components (e.g. Google Gadgets) onto a WLP page

    First, as background info, the WLP architecture supports the rendering of various types of portlets:

    • Local portlets (deployed within the webapp, JSF, JPF, etc)
    • WSRP portlets – an advanced remoting approach which handles security, inter-portlet communication, etc…
    • Iframe portlets – an available remoting approach
    • WLP partners with Kapow for remote clipped portlets (similar to the ALUI approach)

    In regards to this use case, you brought up specific concerns:

    Security

    Concerns about shared authentication were noted in my talk. If components come from outside the enterprise, there is no easy solution to that problem, regardless of what product you are using. However, I spoke of a couple approaches in the webinar, including SAML.

    If those components come from inside the enterprise, the security hacks you were referring to are generally not necessary. Our customers that expect SSO have a web SSO solution (typically, cookie powered, not password in the URL powered) in place within the enterprise.

    Caching/Performance

    The most serious concerns of yours appear to be performance related. Specifically, the concern is that a full page refresh of a page that contains N number of iframes will cause an N+1 number of requests. To expand on your concern, I will add that this is not only seen in pages with iframes, but also pages that use Ajax to pull in data. I would say that there are several reasons why this does not invalidate WLP’s approaches:

    1. Mashup pages with lots of iframe portlets approach

    Google Personalized Home Page makes use of iframes to implement their mashup framework. Many of the Gadgets on the page are rendered with an iframe. But you are mistaken in saying that this scales because Google is throwing tons of hardware at the problem. The iframe Gadgets rendered in GPHP are rendered not by Google, but by 3rd party gadget hosting servers around the world. Google does NOT have to process those iframe Gadget requests, it is a distributed approach. Likewise, you could create a WLP page where most of the portlets are iframe portlets that hit a distributed set of servers, if that makes sense. Or…

    2. Mashup pages with a mixture of portlets

    The 2nd demo in my webinar wasn’t showing a page with all iframe portlets. Rather, what the demo was showing was a WLP page with a couple of iframe portlets mixed in with local portlets. As shown above, WLP supports a number of portlet types, and a good approach is to build pages that are a mixture of that set.

    3. Ajax helps minimize page refreshes

    Your concern about iframe performance stems from the case in which the entire page refreshes. With the usage of Ajax becoming common, plus with WLP 9.2 built in support for auto-generating Ajax portlets, this impact can be minimized. Page refreshes are becoming more rare. With WLP 10.0, which releases in a few months, the Ajax support has been expanded to support Ajax based portal page changes, further reducing the liklihood of a page refresh.

    4. The “Bleeding Edge” guys are also using browser based mashup approaches

    You referred to the “Bleeding Edge” technologists in your blog as the people that are doing things correctly. What are they doing? Some of the time, those guys are doing browser based Mashups. They often use a combination of iframes and Ajax from the browser to implement their mashups. So the same approach that you dislike is already in common use across the web.

    ** Market Reply

    You state “Portals are a thing of the past”. An interesting opinion, but just that. IT cannot afford web sprawl, and so a framework for rationalization will always be in demand whether you call it a Portal or something new.

    New technologies continue to provide alternatives to existing methodologies and portals are no different. However, one thing that has distinguished portal frameworks is their ability to embrace new technologies. Struts, WSRP, JSF are all examples of this as are the Web 2.0 constructs like mashups and rich interfaces based on Ajax. This is all good news as the enterprise has a wealth of options to choose from.

    Posted by: plaird on January 11, 2007 at 2:56 PM

  • I must say, as a customer and developer, it’s great plumtree (I mean BEA, or is it Oracle) management allows you guys to express your own opinions. It so happens I’ve spent quite a bit of time trying to get JBoss Seam (and Ice Faces) to work with Aqualogic 6.1. I’ve been looking at the IFrame route, because the gateway stuff just isn’t working (it doesn’t properly rewrite the URLs for the Ajax stuff). I’ve come to hate the gateway. I bet it was a great idea before Ajax, but now it seems like almost every web 2.0 application is incompatible (needs major modification to get it to work). Or maybe I just don’t understand how to get it to work. Is there any good documentation on it? I’m hoping for some major improvements when 6.5 comes out though.

    Posted by: cmann50 on April 4, 2008 at 2:28 PM

Categories
bdg Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

My Tags

We’re serious about what we do. 😉 For those of you wondering, yes, those really are my plates.

Categories
bdg Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

The Ruby IDK

It’s here: The little integration kit that could change the world. Thanks to the efforts of hotshot bdg developer Andrew Bays, the Ruby IDK is now rockin’ on BEA’s dev2dev CodeShare. Visit the project at https://rubyidk.projects.dev2dev.bea.com and start a discussion thread if you like.

Like all the best things in life, the Ruby IDK is free. It comes as a Rails project, so just unzip it and type ruby script/server and off you go developing Ruby/Rails portlets to your heart’s content. Enjoy!

Categories
bdg dev2dev Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

Announcing the Ruby IDK

Check it out at https://rubyidk.projects.dev2dev.bea.com.

Let’s have a virtual round of applause for Andrew Bays, bdg’s hotshot developer responsible for the latest innovation to come from our open source factory, the Ruby IDK.

Comments

Comments are listed in date ascending order (oldest first)

  • It’s a little unclear from this, and from the project description, just what the Ruby IDK is – unless of course you know what “all methods in com.plumtree.remote.portlet.*” are. Can you blog a few examples of what you can do with this?

    Posted by: jonmountjoy on October 13, 2006 at 2:15 AM

  • Here are a few examples of how one might use the Ruby IDK for portlet development. These snippets are utilized in your Ruby on Rails server’s View files (.rhtml files). The instance variables that they employ are declared and instantiated in your Application Controller(s).
    <!-- This example sets the portlet's title bar -->
    <% @portletResponse.setTitle("My Awesome Portlet") %>
    
    <!-- This example greets the user -->
    Hello, <%= @portletUser.getUserName() %>!
    
    <!-- This example redirects the browser to the portal home page -->
    <% @portletResponse.returnToPortal() %>
    
    <!-- This example creates a link back to the portal home page -->
    <a href=">%= @portletRequest.getReturnURI() %>">%= @portletRequest.getReturnURI() %>"</a>
    
    !-- This example shows how to force a portlet displayed outside of a portal page to use the ALUI header and footer -->
    <% @portletResponse.setHostedDisplayMode(HostedDisplayMode.Hosted) %>
    

    I hope you find this useful and at least somewhat informative. I would stress that you examine the sample portlets provided in CodeShare’s rubyidk.zip for a more thorough presentation of the IDK’s potential.

    Regards,
    Andrew Bays | bdg | 607 316 3090
    [email protected] | http://www.bdg-online.com

    Posted by: andrew.bays on October 20, 2006 at 11:50 AM

Categories
bdg Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

.NET Meet Java (and vice versa)

Here are my notes from this session, which, BTW, is the best talk I’ve seen today. (The best yesterday was Eric Whitley’s.)

Interesting stat: 80% of the Fortune 500 use .NET.

Microsoft is committed to a January 2007 release of Excel Services for the Web, which has interesting implications for ALUI. Perhaps there’s an opportunity here for building ALUI/MS Excel integration the right way. Finally.

The .NET Application Accelerator is coming in a matter of weeks. It will expose any .NET application as a WSRP service that can be consumed by ALI or WLP.

Categories
bdg dev2dev Featured Posts Plumtree • BEA AquaLogic Interaction • Oracle WebCenter Interaction

My Love Affair with ALI Taglibs

There’s been some recent activity on this very old thread in the newsgroups regarding displaying the help link in a portlet. Until G6, this could only be done with native code AFAIK. But, if you supress the portlet title bar, there really aren’t many places where you can put native code in a portlet.

Enter G6 and the extensible taglib support, a quiet little feature that (without any fanfare or marketing by BID) has seriously changed my life.

The source speaks for itself. It look 15 minutes to write. (Granted, I already had my ALUI development environment all set up.)

HelpURL.java:

package com.bdgportal.alui.taglibs;

import com.plumtree.openfoundation.util.*;
import com.plumtree.portaluiinfrastructure.tags.*;
import com.plumtree.portaluiinfrastructure.tags.metadata.*;
import com.plumtree.server.*;
import com.plumtree.xpshared.htmlelements.*;

public class HelpURL extends ATag {

public static final ITagMetaData TAG;
public static final RequiredTagAttribute PORTLET_ID;
  public static final RequiredTagAttribute ID;
  public static final OptionalTagAttribute SCOPE;

static
{
 TAG = new TagMetaData("helpurl",
   "Puts the help URL for this portlet into the variable specified by the ID attribute.");

 PORTLET_ID = new RequiredTagAttribute("portletid",
   "The portlet ID.",
   AttributeType.INT);

 ID = new RequiredTagAttribute("id",
   "The name of the variable in which the help link should be stored.",
   AttributeType.STRING);

 SCOPE = new OptionalTagAttribute("scope",
   "The scope used to store the the help link.",
   AttributeType.STRING, Scope.PORTLET_REQUEST.toString());
}

public HTMLElement DisplayTag() {
 ((IXPList)GetState().GetSharedVariable(GetTagAttributeAsString(ID),
  Scope.GetScope(GetTagAttributeAsString(SCOPE)))).Add(
     ((IPTWebService)((IPTSession)GetEnvironment().GetUserSession()).GetWebServices()
  .Open(((IPTGadget)((IPTSession)GetEnvironment().GetUserSession()).GetGadgets()
  .Open(GetTagAttributeAsInt(PORTLET_ID), false)).GetWebServiceID(), false))
  .GetProviderInfo().ReadAsString("PTC_HTTPGADGET_HELPURL"));
 return null;
}

public ATag Create() {
 return new HelpURL();
}
}

To deploy this code, see the excellent section on edocs about creating custom Adaptive Tags.

To use this code in a portlet, do the following.

myportlet.htm:

<span xmlns:pt='http://www.plumtree.com/xmlschemas/ptui/'>
	<pt:mytaglibns.helpurl pt:portletid="234" pt:id="helplink"/>
	<pt:core.html pt:tag="a" href="$helplink">Help</pt:core.html>
</span>

I didn’t test this, so YMMV. Have fun!

Comments

Comments are listed in date ascending order (oldest first)

  • That’s slick, Chris – that’ll be handy for porting between devstageprod where objectids may be different 🙂

    Posted by: ewwhitley on September 13, 2006 at 6:20 AM

  • Hi, This code makes ten database requests just to get the the IPTWebService object for given portlet. Is there any better way to do this?

    Posted by: Piotr Dudkiewicz on May 18, 2007 at 6:48 AM

  • Sorry, but there’s no better way to get the help URL out of the web service. ALUI is optimized to make calls to its database and the UI code does that everywhere — it’s a dynamic web application, so that should be expected.

    Posted by: bucchere on May 29, 2007 at 2:03 PM

  • It seems that ALUI is optimized to do as many database calls as it’s possible;) Thanks.

    Posted by: Piotr Dudkiewicz on June 1, 2007 at 2:46 AM