索引时序图

8 阅读1分钟
sequenceDiagram  
actor Browser  
actor Scheduler  
Browser->>smartbi.metadata.MetadataModule: rebuildIndex  
smartbi.metadata.MetadataModule->>smartbi.index.IndexRebuildService: rebuildIndex  
  
smartbi.index.IndexRebuildService->>ILock: tryLock("REBUILD-INDEX")  
ILock-->>smartbi.index.IndexRebuildService: lock  
  
critical lock success  
smartbi.index.IndexRebuildService ->> smartbi.index.Indexable: count()  
smartbi.index.Indexable -->> smartbi.index.IndexRebuildService: resource count  
  
loop from < count  
smartbi.index.IndexRebuildService ->> smartbi.index.Indexable: getDocuments(from, pageSize), from += pageSize  
  
note right of smartbi.index.Indexable: 每一个Indexable实现类处理一类资源  
par t_restree  
rect rgb(191, 223, 255)  
smartbi.index.Indexable ->> DAO: t_restree  
DAO -->> smartbi.index.Indexable: CatalogElement  
smartbi.index.Indexable ->> MetadataModule.References: getResources  
MetadataModule.References -->>smartbi.index.Indexable:  RefResources  
smartbi.index.Indexable ->> smartbi.index.Indexable: CatalogDocument  
end  
  
and others  
rect rgb(11, 253, 205)  
smartbi.index.Indexable ->> DAO: others  
DAO -->> smartbi.index.Indexable: CategoryResource  
smartbi.index.Indexable ->> smartbi.index.Indexable: CatalogDocument  
end  
end  
smartbi.index.Indexable ->> smartbi.index.IndexRebuildService: IDocuments  
  
smartbi.index.IndexRebuildService ->> smartbi.index.IndexPersistExecutor:addDocs  
   
end  
end  
  
rect rgb(211, 255, 255)  
Browser->>smartbi.metadata.MetadataModule: addDocument/updateDocument/deleteDocument  
smartbi.metadata.MetadataModule ->> IndexMessageProducer: produce(IndexChangedMessage)  
IndexMessageProducer ->> MQ: publish  
  
end  
  
rect rgb(255,240,245)  
loop: 调度任务轮训  
Scheduler ->> IndexMessageConsumer:  
IndexMessageConsumer->>ILock: tryLock("REBUILD-INDEX")  
ILock-->>IndexMessageConsumer: lock  
  
critical lock success  
  
IndexMessageConsumer ->> MQ: poll  
MQ -->> IndexMessageConsumer: IndexChangedMessage  
IndexMessageConsumer ->> smartbi.index.IndexRebuildService: rebuildIndex(type, resIds)  
smartbi.index.IndexRebuildService ->> smartbi.index.Indexable: getDocuments(resIds)  
note right of smartbi.index.Indexable: 此过程与重建索引相同  
smartbi.index.Indexable ->> smartbi.index.IndexRebuildService: IDocuments  
smartbi.index.IndexRebuildService ->> smartbi.index.IndexPersistExecutor:addDocs  
end  
end  
end