var domain = new Domain({ db:{ get:function(typeName,id,callback){ ...... callback(err,obj); }, update:function(typeName,objData,callback){ ...... callback(err); }, save:function(typeName,objData,callback){ ...... callback(err); }, remove:function(){ ...... callback(err); } } aggres:[ { typeName:"MyAggre", methods:{ changeName:function(name){ this.$data("name",name); var AggreType = this.$domain.getAggre(typeName); var newAggreObj = new AggreType(data); AggreType.get("id002",function(aggreObj){ }); var myService = this.$domain.getService(serviceName); myService( ... ); this.$publish("changeName",name); } ...... }, validat:function(data){ ...... return true / false; } } ], services:{ service01:function(){ var otherService = this.$domain.getService(serviceName); otherService( ... ) var AggreType = this.$domain.getAggre(typeName); ...... var aggreObj = AggreType.get(id); aggreObj.id / method ...... } ...... }, commands:{ "change user name":function(params,callback){ ...... callback(); } ...... } }); domain.command(["change user name", { id:"id001" , name:"new name" } ],function(err,msg){ }) domain.on(aggreTypeName,aggreID,eventName , function(data) { }) domain.once(aggreTypeName,aggreID,eventName , function(data) { })