-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patheventedcommand.html
3 lines (3 loc) · 21.1 KB
/
eventedcommand.html
1
2
3
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="keywords" content="i18n, internationalization, translation, javascript, nodejs, js"><title>cqrs - viewmodel</title><link href="../public/css/index.css" rel="stylesheet"><script src="../public/js/jquery-1.7.2.min.js"></script><script src="../public/js/bootstrap-2.0.2.min.js"></script><!-- HTML5 shim, for IE6-8 support of HTML5 elements--><!--[if lt IE 9]><script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]--><!--[if lt IE 8]><link href="../public/css/font-awesome-ie7-2.0.css" rel="stylesheet" type="text/css"><![endif]--></head><body><header class="header"><div class="header-inner"><div class="navbar navbar-fixed-top"><div class="navbar-inner"><div class="container"><!--.btn-navbar is used as the toggle for collapsed navbar content--><a data-toggle="collapse" data-target=".nav-collapse" class="btn btn-navbar"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a><!-- Be sure to leave the brand out there if you want it shown--><a href="../" class="brand">cqrs</a><!-- Everything you want hidden at 940px or less, place within here--><div class="nav-collapse"><ul class="nav"><li><a href="../index.html">Home</a></li><li><a href="../pages/domain.html">domain</a></li><li><a href="../pages/viewmodel.html">viewmodel</a></li><li><a href="../pages/eventdenormalizer.html">eventdenormalizer</a></li><li><a href="http://adrai.github.io/node-eventstore/">eventstore</a></li><li><a href="http://jamuhl.github.com/backbone.CQRS/">backbone.CQRS</a></li><li><a href="https://github.com/KABA-CCEAC/angular.CQRS/">angular.CQRS</a></li><li><a href="../pages/eventedcommand.html">evented-command</a></li><li><a href="../pages/saga.html">saga</a></li></ul></div></div></div></div></div></header><div class="main"><div class="main-inner"><div class="container"><div class="content-container"> <div class="documentation"><div class="row-fluid"><div class="span8"><div class="hero-unit"><h2>
evented-command</h2><p>Project goal is to provide a simple command/event handling for evented systems like cqrs.</p></div></div><div class="span4 downloads"><p>node.js:</p><pre><code><span class="pln">npm install evented</span><span class="pun">-</span><span class="pln">command</span></code></pre><p>Build status: <a href="https://travis-ci.org/adrai/node-evented-command"><img src="https://img.shields.io/travis/adrai/node-evented-command.svg"></a></p><p>Release: <a href="https://npmjs.org/package/evented-command"><img src="https://img.shields.io/npm/v/evented-command.svg"></a></p><div style="margin-top: 25px;" class="alert alert-info feature-description"><a href="https://github.com/adrai/node-evented-command"><i class="icon-github"></i> fork me on github</a><br><a href="https://github.com/adrai/node-evented-command/issues"><i class="icon-github"></i> issues</a></div></div></div><div class="row-fluid"><div class="span12"><h2>Usage</h2><div class="row-fluid"><div class="span4"><h4 class="feature-title">Get a new instance...</h4></div><div class="span8"><div class="feature"><pre><code><span class="kwd">var</span><span class="pln"> evtCmd </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">require</span><span class="pun">(</span><span class="str">'evented-command'</span><span class="pun">)();</span></code></pre></div></div></div><div class="row-fluid"><div class="span4"><h4 class="feature-title">CDefine the command structure [optional]</h4><p>The values describes the path to that property in the command message.</p></div><div class="span8"><div class="feature"><pre><code><span class="pln">evtCmd</span><span class="pun">.</span><span class="pln">defineCommand</span><span class="pun">({</span><span class="pln"><br /> id</span><span class="pun">:</span><span class="pln"> </span><span class="str">'id'</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span><span class="pln"><br /> name</span><span class="pun">:</span><span class="pln"> </span><span class="str">'name'</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span><span class="pln"><br /> context</span><span class="pun">:</span><span class="pln"> </span><span class="str">'context.name'</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span><span class="pln"><br /> aggregate</span><span class="pun">:</span><span class="pln"> </span><span class="str">'aggregate.name'</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span><span class="pln"><br /> aggregateId</span><span class="pun">:</span><span class="pln"> </span><span class="str">'aggregate.id'</span><span class="pln"> </span><span class="com">// optional</span><span class="pln"><br /></span><span class="pun">});</span></code></pre></div></div></div><div class="row-fluid"><div class="span4"><h4 class="feature-title">Define the event structure [optional]</h4><p>The values describes the path to that property in the event message.</p></div><div class="span8"><div class="feature"><pre><code><span class="pln">evtCmd</span><span class="pun">.</span><span class="pln">defineEvent</span><span class="pun">({</span><span class="pln"><br /> correlationId</span><span class="pun">:</span><span class="pln"> </span><span class="str">'correlationId'</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span><span class="pln"><br /> id</span><span class="pun">:</span><span class="pln"> </span><span class="str">'id'</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span><span class="pln"><br /> name</span><span class="pun">:</span><span class="pln"> </span><span class="str">'name'</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span><span class="pln"><br /> context</span><span class="pun">:</span><span class="pln"> </span><span class="str">'context.name'</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span><span class="pln"><br /> aggregate</span><span class="pun">:</span><span class="pln"> </span><span class="str">'aggregate.name'</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span><span class="pln"><br /> aggregateId</span><span class="pun">:</span><span class="pln"> </span><span class="str">'aggregate.id'</span><span class="pln"> </span><span class="com">// optional</span><span class="pln"><br /></span><span class="pun">});</span></code></pre></div></div></div></div></div><div class="row-fluid"><div class="span12"><div class="row-fluid"><div class="span4"><h4 class="feature-title">Wire up commands and events</h4></div><div class="span8"><div class="feature"><pre><code><span class="com">// pass in events from your bus</span><span class="pln"><br />bus</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'event'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">data</span><span class="pun">){</span><span class="pln"><br /> evtCmd</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">(</span><span class="str">'event'</span><span class="pun">,</span><span class="pln"> data</span><span class="pun">);</span><span class="pln"><br /></span><span class="pun">});</span><span class="pln"><br /> <br /></span><span class="com">// pass commands to bus</span><span class="pln"><br />evtCmd</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'command'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">data</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> bus</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">(</span><span class="str">'command'</span><span class="pun">,</span><span class="pln"> data</span><span class="pun">);</span><span class="pln"><br /></span><span class="pun">});</span></code></pre></div></div></div><div class="row-fluid"><div class="span4"><h4 class="feature-title">Send commands</h4></div><div class="span8"><div class="feature"><pre><code><span class="kwd">var</span><span class="pln"> cmd </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Command</span><span class="pun">({</span><span class="pln"><br /> </span><span class="com">// id: 'my onwn command id', // if you don't pass an id it will generate one, when emitting the command...</span><span class="pln"><br /> name</span><span class="pun">:</span><span class="pln"> </span><span class="str">'changePerson'</span><span class="pun">,</span><span class="pln"><br /> payload</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> name</span><span class="pun">:</span><span class="pln"> </span><span class="str">'my name'</span><span class="pln"><br /> </span><span class="pun">},</span><span class="pln"><br /> aggregate</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> id</span><span class="pun">:</span><span class="pln"> </span><span class="lit">8</span><span class="pun">,</span><span class="pln"><br /> name</span><span class="pun">:</span><span class="pln"> </span><span class="str">'jack'</span><span class="pln"><br /> </span><span class="pun">},</span><span class="pln"><br /> context</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> name</span><span class="pun">:</span><span class="pln"> </span><span class="str">'hr'</span><span class="pln"><br /> </span><span class="pun">}</span><span class="pln"><br /></span><span class="pun">});</span><span class="pln"><br /> <br /></span><span class="com">// emit it</span><span class="pln"><br />cmd</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">();</span><span class="pln"><br /> <br /> <br /> <br /></span><span class="com">// if you want to observe the command pass a callback</span><span class="pln"><br />cmd</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">evt</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> <br /></span><span class="pun">});</span><span class="pln"><br /> <br /> <br /></span><span class="com">// if you want to observe the command that generates any events pass an object like this:</span><span class="pln"><br />cmd</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">({</span><span class="pln"><br /> <br /> event1</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">evt</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> <br /> </span><span class="pun">},</span><span class="pln"><br /> <br /> event2</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">evt</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> <br /> </span><span class="pun">}</span><span class="pln"><br /> <br /></span><span class="pun">});</span></code></pre></div></div></div><div class="row-fluid"><div class="span4"><h4 class="feature-title">Send commands with the speakable api</h4></div><div class="span8"><div class="feature"><pre><code><span class="pln">evtCmd</span><span class="pun">.</span><span class="pln">send</span><span class="pun">(</span><span class="str">'changePerson'</span><span class="pun">)</span><span class="pln"><br /> </span><span class="pun">.</span><span class="kwd">for</span><span class="pun">(</span><span class="str">'person'</span><span class="pun">)</span><span class="pln"> </span><span class="com">// aggregate name</span><span class="pln"><br /> </span><span class="pun">.</span><span class="pln">instance</span><span class="pun">(</span><span class="str">'8'</span><span class="pun">)</span><span class="pln"> </span><span class="com">// aggregate id</span><span class="pln"><br /> </span><span class="pun">.</span><span class="kwd">in</span><span class="pun">(</span><span class="str">'hr'</span><span class="pun">)</span><span class="pln"> </span><span class="com">// context name</span><span class="pln"><br /> </span><span class="pun">.</span><span class="kwd">with</span><span class="pun">({</span><span class="pln"><br /> </span><span class="com">// id: 'my onwn command id', // if you don't pass an id it will generate one, when emitting the command...</span><span class="pln"><br /> revision</span><span class="pun">:</span><span class="pln"> </span><span class="str">'12'</span><span class="pun">,</span><span class="pln"><br /> payload</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> name</span><span class="pun">:</span><span class="pln"> </span><span class="str">'jack'</span><span class="pln"><br /> </span><span class="pun">}</span><span class="pln"><br /> </span><span class="pun">})</span><span class="pln"><br /> </span><span class="pun">.</span><span class="pln">go</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">evt</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'speakable'</span><span class="pun">,</span><span class="pln"> evt</span><span class="pun">);</span><span class="pln"><br /> </span><span class="pun">});</span><span class="pln"><br /> <br />evtCmd</span><span class="pun">.</span><span class="pln">send</span><span class="pun">(</span><span class="str">'multi'</span><span class="pun">)</span><span class="pln"><br /> </span><span class="pun">.</span><span class="kwd">for</span><span class="pun">(</span><span class="str">'aggregate'</span><span class="pun">)</span><span class="pln"><br /> </span><span class="pun">.</span><span class="pln">instance</span><span class="pun">(</span><span class="str">'instanceId'</span><span class="pun">)</span><span class="pln"><br /> </span><span class="pun">.</span><span class="kwd">in</span><span class="pun">(</span><span class="str">'context'</span><span class="pun">)</span><span class="pln"><br /> </span><span class="pun">.</span><span class="kwd">with</span><span class="pun">({</span><span class="pln"><br /> revision</span><span class="pun">:</span><span class="pln"> </span><span class="str">'43'</span><span class="pun">,</span><span class="pln"><br /> payload</span><span class="pun">:</span><span class="pln"> </span><span class="str">'data2'</span><span class="pln"><br /> </span><span class="pun">})</span><span class="pln"><br /> </span><span class="pun">.</span><span class="pln">go</span><span class="pun">({</span><span class="pln"><br /> event1</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">evt</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'speakable'</span><span class="pun">,</span><span class="pln"> evt</span><span class="pun">);</span><span class="pln"><br /> </span><span class="pun">},</span><span class="pln"><br /> event2</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">evt</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'speakable'</span><span class="pun">,</span><span class="pln"> evt</span><span class="pun">);</span><span class="pln"><br /> </span><span class="pun">}</span><span class="pln"><br /> </span><span class="pun">});</span></code></pre></div></div></div></div></div><div class="row-fluid"><div class="span12"><h2>Define the id generator function [optional]</h2><div class="row-fluid"><div class="span4"><h4 class="feature-title">you can define a synchronous function</h4></div><div class="span8"><div class="feature"><pre><code><span class="pln">evtCmd</span><span class="pun">.</span><span class="pln">idGenerator</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> </span><span class="kwd">var</span><span class="pln"> id </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">require</span><span class="pun">(</span><span class="str">'node-uuid'</span><span class="pun">).</span><span class="pln">v4</span><span class="pun">().</span><span class="pln">toString</span><span class="pun">();</span><span class="pln"><br /> </span><span class="kwd">return</span><span class="pln"> id</span><span class="pun">;</span><span class="pln"><br /></span><span class="pun">});</span></code></pre></div></div></div><div class="row-fluid"><div class="span4"><h4 class="feature-title">or you can define an asynchronous function</h4></div><div class="span8"><div class="feature"><pre><code><span class="pln">evtCmd</span><span class="pun">.</span><span class="pln">idGenerator</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">callback</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> setTimeout</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br /> </span><span class="kwd">var</span><span class="pln"> id </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">require</span><span class="pun">(</span><span class="str">'node-uuid'</span><span class="pun">).</span><span class="pln">v4</span><span class="pun">().</span><span class="pln">toString</span><span class="pun">();</span><span class="pln"><br /> callback</span><span class="pun">(</span><span class="kwd">null</span><span class="pun">,</span><span class="pln"> id</span><span class="pun">);</span><span class="pln"><br /> </span><span class="pun">},</span><span class="pln"> </span><span class="lit">50</span><span class="pun">);</span><span class="pln"><br /></span><span class="pun">});</span></code></pre></div></div></div></div></div></div></div></div></div></div><div class="extra"><div class="extra-inner"><div class="container"><div class="row"><div class="span4"><h4>about me</h4><ul><li><a href="https://github.com/adrai"><i class="icon-github"></i> github</a></li><li><a href="https://twitter.com/adrirai"><i class="icon-twitter"></i> twitter</a></li></ul></div><div class="span4"><h4>help</h4><ul><li><a href="https://github.com/adrai/cqrs/issues">
issues (<i class="icon-github"></i>)</a></li></ul></div><div class="span4"><h4>legal</h4><ul><li><a href="https://github.com/adrai/node-cqrs-domain/blob/master/licence">license</a></li></ul></div></div></div></div></div><footer class="footer"><div class="footer-inner"><div class="container"><div class="row"><div class="span12">the cqrs modules and libraries are freely distributable under the terms of the MIT license.</div></div></div></div></footer></body></html>