JBoss Workflow JBpm and JBoss Rules (Drools) | People and Techno. Notes from this Post on the Serverside I recently wrote an O’Reilly article on one of the related JBoss projects the Drools / JBoss rules engine. Just to get the difference between jBPM and Drools / JBoss Rules straight in my head: - Workflow tends to be ‘wide’ where Rule Engines tend to be ‘deep’. - Workflow is wide as the flow is spread over different people / actors and over time. - Rule Engines are ‘deep’ as they apply simple rules to solve complex problems, but in general the rules are applied ‘all at once’. Some of the confusion (in my head at least) comes from the fact: - It is possible to implement workflow using a rules engine, much as it is possible to write your own workflow using Java. . - Both JBoss Rules (Drools) and JBoss Workflow (jBPM) see to ‘externalize’ part of the solution outside of Java. Like this: Like Loading... Drools BeJUG 2010. Scala Implicits: a dose of Magic | Part 1.
Implicits are an extremely powerful feature of Scala. In terms of mechanics, they are based on the following:Implicit definitions: these are method, val, or object definitions marked with the implict keyword.Implicit conversions (also called view conversions in this post): these can be further divided into:Conversions of a method call receiver: for this type of conversion, if a non-existent method m1 is called on an object of type X, the compiler makes an attempt to convert this source object to a target object of a type Y that contains m1. For this to succeed, a unique implicit method of type (X => Y) should be in scope at the point of call.Conversions to an expected type: for this type of conversion, if a method m2 takes a parameter type Y, and it is called with a parameter x of type X, the compiler makes an attempt to convert x to a target object of type Y, which is then passed along to m2.
In this post, I am going to talk about view conversions, which are a major use of implicits. Scala Nugget - Pattern matching and Lists « The point is missed. I was whining recently about how my scala-code is java in poor disguise. I started reading the scala by example pdf that also comes with the scala installation.
I just read some interesting things about lists and pattern-matching that gave me an idea how to “scalafy” the following scjava-code: If it’s not crystal clear to you what the code does. Here is an overview: The first method takes a name and a resourceThe name is split up into it’s path-elementsThe path is passed to the createResource method that will create all directories that does not yet exist on the way to the resource and finally return a function that takes a resource as input and creates it in the already given directory.
A big issue I have with the code is the createResource-method. It simply is very hard to name it. createAllDirectoriesAndReturnResourceCreatingMethod would illustrate better how smelly that method really is. List(“a”, “b”, “c”, “d”) is equivalent to “a” ::(“b” ::(“c” ::(“d” ::(Nil)))) Ok, not that hard. Project Coin: multi-catch and final rethrow : Joseph D. Darcy's. As alluded to as a possibility previously, I'm happy to announce that improved exception handling with multi-catch and final rethrow will be part of an upcoming JDK 7 build. Improved exception handling is joining other Project Coin features available in the repository after successful experiences with a multi-catch implementation developed by Maurizio Cimadamore. Maurizio's work also revealed and corrected a flaw in the originally proposed static analysis for the set of exception that can be rethrown; from the original proposal form for this feature: [a] final catch parameter is treated as throwing precisely those exception types that the try block can throw, no previous catch clause handles, and is a subtype of one of the types in the declaration of the catch parameter Consider a final rethrow statement as below where the dynamic class of a thrown exception differs from the static type (due to a cast in this case): To address this, the third clause is changed to.
Jonas Bonér » Blog Archive » Real-World Scala: Introduction. The last nine months I have been running my own business together with some friends (Triental AB). We are building a product suite for private banking and wealth management with a focus on portfolio management, analysis and simulation. One of the great things of being your own is that you get to choose whatever technology you like and think is best suitable for the job. The last years I have been studying and playing with Functional Programming (FP) in general and Scala in particular (among with Erlang, Clojure and Haskell). FP has been used successfully in the financial domain before (for example Jane Street Capital (OCaml) and Business Objects (CAL)), and the work we do is heavily based on mathematics which maps excellent to the FP paradigm.
Apart from the FP properties (such as immutability, high-order functions, closures etc.) So I decided to try use FP and Scala for real. And will the benefit of using it in terms of: Dependency Injection (DI) Code tangling and scattering e.g. DSLs - A powerful Scala feature. Domain Specific Languages (DSL) written in Scala have become powerful tool in the hands of Scala programmers. In the original language design great care was taken to ensure that the syntax would allow programmers to create natural looking DSLs. Spend a moment to enjoy Michael Fogus's humour and the clever use he makes of implicits to create "Baysick". It looks like BASIC feels like BASIC but it's a Scala DSL. Then you may like to follow some other links to see DSL examples for Financial Asset Management, Apache Camel Services and OSGi.
Michael decided to extend the simple BASIC interpreter posted by Szymon Jachim to the Scala Nabble forums. Here is a simple Lunar Lander game he has written using his BASIC-like DSL. More information can be found on his site and the source code is located at Github. If you are new to Scala or to DSLs you may like to watch Bill Venners video "The Feel Of Scala" where he both talks about Scala the language and DSLs in the context of program testing.
Using Scala for Domain-Specific-Languages. Ruby Fibers: 8 Useful Reads On Ruby’s New Concurrency Feature. New to Ruby 1.9 is the concept of fibers. Fibers are light-weight (green) threads with manual, cooperative scheduling, rather than the preemptive scheduling of Ruby 1.8's threads. Since Ruby 1.9's threads exist at the system level, fibers are, in a way, Ruby 1.9's answer to Ruby 1.8's green threads, but lacking the pre-emptive scheduling. Now that Ruby 1.9 is becoming more important with each passing month, I've rounded up some of the best articles about Ruby 1.9's fiber functionality so that you can be up to speed with all of the major concepts in perhaps 10 to 15 minutes. If you're getting interested in Ruby 1.9, you'll want to read on: Fibers & Cooperative Scheduling in Ruby - Ilya Grigorik hits it out of the ballpark with perhaps the best overview of fibers.
Pipelines Using Fibers in Ruby 1.9 - Dave Thomas gives one of his typically awesome code walkthroughs by showing how fibers can be used to emulate a UNIX-esque pipeline of operations. Still new to the Ruby 1.9 bandwagon? State machine != workflow engine « processi. Update (2010) : this resource lifecycle post features two quotes that are enlightening when thinking about state and workflow. update (2011) : a discussion between two engineers about state machines and workflow (guest post at Engine Yard) This post is intended for Ruby developers.
The idea for it came after numerous discussions with fellow programmers about state machines and workflow engines. What motivates me for posting is the publication of the 3rd issue of the excellent Rails Magazine. At first a word of warning, I wrote these lines with no intention of minimizing the potential of state machines vs workflow engines. There are a number of open questions in this post, I don’t intend to answer them now or later. Spark The article “Workflow solutions with AASM” starts with : There are two main forms of workflows: sequential and state-machine. I’m clearly in the “sequential workflow” faction. Are “sequential workflows” and “state machines” excluding one another ? Case cases nuances machines. The Process Virtual Machine.
By Tom Baeyens and Miguel Valdes Faura May 8th, 2007. Introduction There are many process languages for Business Process Management (BPM), workflow and orchestration. For simplicity we'll refer to that collection as workflow for short. There are two aspects to workflow; the process modelling aspect and the software implementation aspect. The biggest problem in workflow technologies today is that they don't handle the dual nature of those technologies properly. The main goal of this paper is to fix exactly that problem.
The Process Virtual Machine does not define a process language. Component technology The reason for the fragmentation in process languages is that there are many environments and features that can be handled by workflow. While every developer knows the relational model that underpins relational databases, such a conceptual model is absent for workflow. More and more, software development will be done in a mix of many languages. Embeddable workflow Scope Basics A task node. Unified Rules Engine and Processes. Workflow Business Process Management systems and rules engines go hand in hand. A process definition language (such as XPDL, Colored Petri Nets, Pi-Workflow or jPDL) is used to describe a process at a relatively coarse level of abstraction. Rules are then used to implement decisions based upon the context of the workflow, for example to determine who should work on an item, who should be notified when an activity completes, or what to do when an activity has stalled.
Today, Mark Proctor and Kris Verlaenen of the JBoss Drools team published information on their vision of declarative programming using workflow and rules. The article begins with Mark describing what the next major advances will be for rules engines: The article builds on a previous paper published by the jBPM team on what was dubbed the "Process Virtual Machine" (PVM). In a nutshell, PVM is to workflow what bytecode is to Java - a process execution engine that is independent of the process definition language. Object database. Example of an object-oriented model[1] Object databases have been considered since the early 1980s.[2] Overview[edit] Object-oriented database management systems (OODBMSs) combine database capabilities with object-oriented programming language capabilities.
OODBMSs allow object-oriented programmers to develop the product, store them as objects, and replicate or modify existing objects to make new objects within the OODBMS. As the usage of web-based technology increases with the implementation of Intranets and extranets, companies have a vested interest in OODBMSs to display their complex data. History[edit] Object database management systems grew out of research during the early to mid-1970s into having intrinsic database management support for graph-structured objects. Timeline[edit] Adoption of object databases[edit] Another group of object databases focuses on embedded use in devices, packaged software, and real-time systems. Technical features[edit] Standards[edit] See also[edit]