Archive

Graphical goodies for the BPMN modeler

We have worked hard on the BPMN modeler and have a few things to show off.

Some semantic changes

  • Associations can target sequence and messaging edges.
  • At the semantic level only. We are actively working on making it possible to connect them in the diagram.

  • Pools hold messaging edges.
  • We haven’t worked on making it possible in the editor as well, but the semantic model accepts those now.

Support for BPMN 1.1

We are heading for basic support of BPMN 1.1. You can deactivate it in the BPMN Diagrams preference page.

  • Signal events
  • They really don’t look good yet, and we are looking for help on that
    Signal events.

  • The look and feel of shapes is BPMN 1.1 compliant
  • Multiple event and event-based gateway a la BPMN 1.1 sauce
    Throwing and catching events are not drawn in the same way

  • Routing of sequence edges with gateways has drastically improved.
  • Nice looking diagram

    More

    • We have added the link and multiple events to the palette.
    • We miss images for those items right now, as well as the ones for the signal event. Working on that bit.

    • Only one connection handle shows at a time in the diagram.
    • We wanted to have only one connection handle showing at a time. That way when you mouse over the shapes, they don’t animate all at the same time.

    • Terminate events are better centered
    • Better centered terminate end events

    • Improvements over lanes
    • Lanes
      Lanes can now have a background color, and they resize in a better way that they used to.

    • We have fixed a pesky bug when using the BPMN modeler in a different editing domain.

    We hope you enjoy those improvements, will be inspired by them and will give us a hand at the next Eclipse bug day!

    These icons link to social bookmarking sites where readers can share and discover new web pages.
    • del.icio.us
    • Digg
    • co.mments
    • Slashdot
    • SphereIt
    • Reddit
    • Furl
    • Technorati
    • NewsVine
    • Simpy
    • StumbleUpon
    • Ma.gnolia

    Intalio|BPMS 5.1 is out

    I’m very happy to announce that we made a new release of Intalio|BPMS.

    We have fixed bugs in this release, introduced a new tool named “Insert space” (it deserves a separate blog post that should come soon).

    Overall the modeling experience is now even smoother.

    We also upgraded Designer and Server to support java 6.

    You can get all this new stuff for free right now on our community web site.

    Happy holidays!

    These icons link to social bookmarking sites where readers can share and discover new web pages.
    • del.icio.us
    • Digg
    • co.mments
    • Slashdot
    • SphereIt
    • Reddit
    • Furl
    • Technorati
    • NewsVine
    • Simpy
    • StumbleUpon
    • Ma.gnolia

    I’m speaking at EclipseCon 2008


    I'm speaking at EclipseCon 2008

    I will be talking about the BPMN modeler in a tutorial session, along with Hugues Malphettes and Alex Boisvert. You can chat with us on this mailing list if you have questions, or would like to help with the tutorial.

    Please leave a comment if you want to meet for a beer!

    These icons link to social bookmarking sites where readers can share and discover new web pages.
    • del.icio.us
    • Digg
    • co.mments
    • Slashdot
    • SphereIt
    • Reddit
    • Furl
    • Technorati
    • NewsVine
    • Simpy
    • StumbleUpon
    • Ma.gnolia

    NLS and StringBuffer

    I was surprised to find in the M4 News And Noteworthy list a shortcut to change a concatenated String to StringBuffer.

    At first, it looks like a good idea.

    String s = "offset " + offset + " is at line " + line;

    is changed to:

    StringBuffer stringBuffer = new StringBuffer();
    stringBuffer.append("offset ");
    stringBuffer.append(offset);
    stringBuffer.append(" is at line ");
    stringBuffer.append(line);
    

    I know using StringBuffers is better for performance UPDATE: I confused StringBuffer with StringBuilder! look at this bug for changing StringBuffer to StringBuilder.

    I would have rather been going for this:

    NLS.bind("offset {0} is at line {1}", offset, line);

    Just because this is so much easier to internationalize.

    I have almost finished doing i18n for the BPMN modeler, a component of the STP project, and I really lost time on such cases.

    Just my $0.02!

    These icons link to social bookmarking sites where readers can share and discover new web pages.
    • del.icio.us
    • Digg
    • co.mments
    • Slashdot
    • SphereIt
    • Reddit
    • Furl
    • Technorati
    • NewsVine
    • Simpy
    • StumbleUpon
    • Ma.gnolia

    Gutsy

    I just moved to kubuntu Gutsy.

    It’s very good. It was running well at the first boot, and the ATI drivers were activated in 3 clicks.

    Overall (I’m moving from Dapper), the gain in performance and graphics is very noticeable. My computer has never been so silent and so fast.

    There are still two small glitches:

    I can’t put my computer to hibernate. Well, it does hibernate, but I can’t expect it to wake up.
    Here is the Ubuntu bug to watch.

    Dolphin. I don’t like it. I have gotten used to the unique features of Konqueror, the copy To action, the tab support.
    Feel free to sign the petition to have KDE 4 offer the user to choose his own file manager.

    These icons link to social bookmarking sites where readers can share and discover new web pages.
    • del.icio.us
    • Digg
    • co.mments
    • Slashdot
    • SphereIt
    • Reddit
    • Furl
    • Technorati
    • NewsVine
    • Simpy
    • StumbleUpon
    • Ma.gnolia

    SOA Tools Project On Subversion

    Adrian Skehill and Matt just finished the migration of the STP project to Subversion.

    Thanks for the awesome work guys!

    These icons link to social bookmarking sites where readers can share and discover new web pages.
    • del.icio.us
    • Digg
    • co.mments
    • Slashdot
    • SphereIt
    • Reddit
    • Furl
    • Technorati
    • NewsVine
    • Simpy
    • StumbleUpon
    • Ma.gnolia

    A word of caution when using the Capistrano multistage plugin

    When using the multistage plugin, which is pretty much required for anything serious on Capistrano, do not use the word “stage” to describe one of the stages. It provokes a name conflict down the road.

    These icons link to social bookmarking sites where readers can share and discover new web pages.
    • del.icio.us
    • Digg
    • co.mments
    • Slashdot
    • SphereIt
    • Reddit
    • Furl
    • Technorati
    • NewsVine
    • Simpy
    • StumbleUpon
    • Ma.gnolia

    Funnel 0.1

    I worked some more on Funnel over the week-end to turn it into something usable. You can get it here.

    The results look (In My Not So Humble Opinion) very good:

    • Funnel supports caching. It will register the feed if you ask it to, and will ping it back in case you update something. The data is stored in the database, maybe we can expose it if needed.
    • Funnel updates asynchronously. You run a script to update the feed data, and another one to generate the feed file
    • I made a nice website, that should be updated with more and more examples and documentation.

    I still miss for now the background job that will trigger the update and generation scripts. It may be done using cron, which is fine for Unix-land.
    I will probably add a rake task to force an update, and a script to run an update thread in background.

    The admin interface is yet to be done. Once it is, I’ll shoot for 1.0. Stay tuned!

    These icons link to social bookmarking sites where readers can share and discover new web pages.
    • del.icio.us
    • Digg
    • co.mments
    • Slashdot
    • SphereIt
    • Reddit
    • Furl
    • Technorati
    • NewsVine
    • Simpy
    • StumbleUpon
    • Ma.gnolia

    Push your feeds into Funnel

    I have continued my experiment with the RSS libs a bit, and have built a first prototype that I call Funnel.

    Funnel takes the feeds declared in the feeds table.

    In a separate thread, it runs a script that looks at the feed, and if there is a new item or an item that looks like it is updated, it runs a filter on it.

    The filter is completely extensible, so that I can add antispam measures later like I did here.

    Once the item is accepted, it is picked up by the feed when building it using Builder.

    I fund this project with Micropledge. Micropledge is a really cool website to get your open source projects funded. Check it out!

    At this point, I achieved my primary goal but have new issues I need to deal with.

    • I want to record the feed optionally. I want to make it possible for the user to record completely the items in the items table, so that he does not have to bother about them.
    • I use Rails. While this gives a nice frame to my application, it is clearly overkill for some uses of Funnel. I think I should make it available in different little gems, and the core gem would provide pretty much as simple as Svn2Rss is.
    • The feed is not cached. It is currently recreated every time someone asks for it. Like Svn2Rss, I need to create an asynchronous way to output it.

    If I have those core components working, I can easily create an administration interface and a UI to show my feed.

    If you are interested into this project, you can fund it and/or join the mailing list:

    Google Groups

    Subscribe to Funnel Atom and RSS merger
    Email:
    Visit this group
    These icons link to social bookmarking sites where readers can share and discover new web pages.
    • del.icio.us
    • Digg
    • co.mments
    • Slashdot
    • SphereIt
    • Reddit
    • Furl
    • Technorati
    • NewsVine
    • Simpy
    • StumbleUpon
    • Ma.gnolia

    Scala syntax extension

    Follow up with yesterday:
    you can get my Scala syntax gem extension here, and read below for the instructions on how to install it.

    First here is the result:

    
    /**
     so much fun
    */
    class Auction(seller: Actor, minBid: Int, closing: Date) extends Actor {
      val StringForFun = "hello"
      val timeToShutdown = 36000000 // msec
      val bidIncrement = 10
      def act() {
        var maxBid = minBid - bidIncrement
        var maxBidder: Actor = null
        var running = true
        while (running) {
          receiveWithin ((closing.getTime() - new Date().getTime())) {
            case Offer(bid, client) =>
              if (bid >= maxBid + bidIncrement) {
                if (maxBid >= minBid) maxBidder ! BeatenOffer(bid)
                maxBid = bid; maxBidder = client; client ! BestOffer
              } else {
                client ! BeatenOffer(maxBid)
              }
            case Inquire(client) =>
              client ! Status(maxBid, closing)
            case TIMEOUT =>
              if (maxBid >= minBid) {
                val reply = AuctionConcluded(seller, maxBidder)
                maxBidder ! reply; seller ! reply
              } else {
                seller ! AuctionFailed
              }
              receiveWithin(timeToShutdown) {
                case Offer(_, client) => client ! AuctionOver
                case TIMEOUT => running = false
              }
          }
        }
      }
    }
    

    You will need to add those CSS elements to display things correctly:

    pre {
    	background: #000000 repeat-x;
    	color: #00FF00;
    	font-family: arial, 'lucida console', sans-serif;
    	line-height: 160%;
    	font-size: 120%;
    }
    
    code {
    	color: #00EE00;
    	font-style: bold;
    	font-family: arial, 'lucida console', sans-serif;
    }	
    
    .comment { color: #333; font-style: italic; }
    .keyword { color: #eff; font-weight: bold; }
    .punct { color: #444; font-weight: bold; }
    .symbol { color: #0bb; }
    .string { color: #6b4; }
    .ident { color: #00b; }
    .constant { color: #66f; }
    .regex { color: #a82; }
    .number { color: #a33; }
    .expr { color: #227; }
    

    Then on your machine, you will need ruby and rubygems installed, and install redcloth and syntax:

    gem install syntax
    gem install redcloth
    

    Put your sample into a text file in the same folder as run.rb, then run:

    ruby run.rb myscala.txt > output.html
    

    That’s about it. It’d be great to develop the same things for Java and CSS. In the mean time, enjoy!

    These icons link to social bookmarking sites where readers can share and discover new web pages.
    • del.icio.us
    • Digg
    • co.mments
    • Slashdot
    • SphereIt
    • Reddit
    • Furl
    • Technorati
    • NewsVine
    • Simpy
    • StumbleUpon
    • Ma.gnolia