Skip to content
Jesus Ruiz edited this page Aug 1, 2013 · 43 revisions

With durable.js you can manage data by coordinating event streams that span across long periods of time.

  • Programs are hosted using Node.js.
  • The program data is stored in mongoDb (document database).
  • Events are posted to the program through a simple REST interface.
  • A web client, based on d3.js, for program and data visualization.

For example

Writing efficient, consistent and reliable programs is simple and easy.

Sequence

    var d = require('durable');   
    d.run({  
      sequence: d.receive({ content: "hello world" })  
        .continueWith(function (s) { s.hello = s.getOutput().content; })  
        .checkpoint("hello")  
        .receive({ content: "good bye" })  
        .continueWith(function (s) { s.bye = s.getOutput().content; })  
        .checkpoint("bye")  
    });``` 

_See it in [action] (http://polar-ridge-1045.herokuapp.com/sequence/1/admin.html)._
#### State chart

    var d = require('durable');   
    d.run({  
      chart: d.stateChart({
        s1: {
          t1: {
            when: d.tryReceive({ content: "s2" }),
            run: function (s) { s.i = (s.i ? s.i + 1: 1); },
            to: "s2" } },
        s2: {
          t1: {
            when: d.tryReceive({ content: "s1" }),
            run: function (s) { s.i = s.i + 1; },
            to: "s1" },
          t2: {
            when: d.tryReceive({ content: "end" }),
            to: "end" } },
        end: { } 
      }) 
    });

_See it in [action] (http://polar-ridge-1045.herokuapp.com/chart/1/admin.html)._
## Details
If it all sounds interesting, feel free to look at these documents.
* [Step by step] (http://www.github.com/jruizgit/durable/wiki/step-by-step)
* [Concepts] (http://www.github.com/jruizgit/durable/wiki/concepts)
* [API reference] (http://www.github.com/jruizgit/durable/wiki/api-reference)
Clone this wiki locally