序列是什么
模块a-sequence
提供了序列
特性,可以为某个具体业务提供唯一序列值
,比如原子
在新建时分配唯一名称
声明序列
在模块的meta
中配置序列
参数
src/suite-vendor/test-party/modules/test-party/backend/src/meta.js
- 1sequence: {
- 2 providers: {
- 3 test: {
- 4 bean: 'test',
- 5 start: 0,
- 6 },
- 7 },
- 8},
名称 | 说明 |
---|---|
test | 序列名称 |
test.bean | 序列对应的Bean组件 |
test.start | 起始值 |
定义Bean组件
src/suite-vendor/test-party/modules/test-party/backend/src/bean/sequence.test.js
- 1module.exports = ctx => {
- 2 class Sequence {
- 3
- 4 async execute(context) {
- 5 let value = context.value;
- 6 return ++value;
- 7 }
- 8
- 9 }
- 10
- 11 return Sequence;
- 12};
-
返回值:新序列值
-
参数
名称 | 说明 |
---|---|
context.value | 序列的当前值 |
注册Bean组件
src/suite-vendor/test-party/modules/test-party/backend/src/beans.js
- 1const sequenceTest = require('./bean/sequence.test.js');
- 2
- 3module.exports = app => {
- 4 const beans = {
- 5 // sequence
- 6 'sequence.test': {
- 7 mode: 'ctx',
- 8 bean: sequenceTest,
- 9 },
- 10 };
- 11 return beans;
- 12};
注册名称 | 场景 | 所属模块 | global | beanFullName |
---|---|---|---|---|
test | sequence | test-party | false | test-party.sequence.test |
使用序列
模块a-sequence
提供了全局Bean组件sequence
,可以便利的操作序列
src/suite-vendor/test-party/modules/test-party/backend/src/controller/test/feat/sequence.js
current
- 1let current = await this.ctx.bean.sequence.current('test');
next
- 1let next = await this.ctx.bean.sequence.next('test');
reset
- 1await this.ctx.bean.sequence.reset('test');
跨模块访问
可以访问其他模块的序列值
- 1// other module's sequence
- 2const moduleSequence = this.ctx.bean.sequence.module(`test-party`);
- 3// next
- 4let next = await moduleSequence.next('test');
评论: