Skip to content

Instantly share code, notes, and snippets.

@dmj
Last active October 11, 2015 00:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dmj/3772321 to your computer and use it in GitHub Desktop.
Save dmj/3772321 to your computer and use it in GitHub Desktop.
VF2 diagrams
@startuml components.png
title VuFind 2.x Components
skinparam component {
BackgroundColor<< Pica >> red
BackgroundColor<< DB >> orange
}
[Search/Manager] as SM
() "Search/BackendInterface" as SBI
[Search/Solr/Manager] as SSM
[Search/WorldCat/Manager] as SWM
[Search/Z3950/Manager] as SZM
[ILS/Manager] as IM
() "ILS/BackendInterface" as IBI
IM -- IBI
IBI -- [ILS/Pica] << Pica >>
IBI -- [ILS/Symphony]
SM -- SBI
SBI -- SSM
SBI -- SWM
SBI -- SZM
[Auth/Manager] as AM
() "Auth/BackendInterface" as ABI
AM -- ABI
ABI -- [Auth/Shibboleth]
ABI -- [Auth/Database] << DB >>
ABI -- [Auth/Pica] << Pica >>
[Persistence] << DB >>
[RecordProvider] as RP
RP -- SM
RP -- IM
RP -- [Persistence] << DB >>
[Controller] -- RP
[Controller] -- AM
@enduml
@startuml
interface VuFind.FacetInterface {
+getSelected()
+setSelected()
+getFacetCounts()
{abstract} getSearchParameters()
{abstract} setSearchResponse()
}
class VuFind.FacetDecorator {
+getFilterValues()
+setFilterValues()
+getFacetValueContainer()
{abstract} getSearchParameters()
{abstract} setSearchResponse()
}
interface VuFind.FacetValueContainerInterface {
+add()
+getFacetValues()
+getAggregatedCount()
{abstract} count()
}
class VuFind.FacetValue {
+getLabel()
+getValue()
+getCount()
+getQuery()
}
interface VuFind.RequestValueMapperInterface {
+mapFromRequest()
+mapToRequest()
}
VuFind.FacetDecorator *-- VuFind.FacetValueContainerInterface
VuFind.FacetDecorator *-- VuFind.FacetInterface
VuFind.FacetDecorator *-- VuFind.RequestValueMapperInterface
VuFind.FacetInterface o- VuFind.FacetValue
VuFind.FacetValueContainerInterface o- VuFind.FacetValue
interface VuFindSearch.SearchResponseConsumerInterface {
+setSearchResponse()
}
interface VuFindSearch.SearchParameterProviderInterface {
+getSearchParameters()
}
@enduml
@startuml
class "VuFindSearch\\Backend\\Solr" as Backend
class "VuFindSearch\\Backend\\Solr\\QueryBuilder" as QueryBuilder
class "VuFindSearch\\Backend\\Solr\\Connector" as Connector
class "VuFindSearch\\Backend\\Solr\\SearchHandler" as SearchHandler
interface "VuFindSearch\\Response\\RecordCollectionFactoryInterface" as CollectionFactory
interface "Zend\\Log\\LoggerInterface" as Logger
Backend --> CollectionFactory : 1
Backend --> Connector : 1
Backend --> QueryBuilder : 1
Connector ..> Logger : 0..1
QueryBuilder --> SearchHandler : 0..n
@enduml
@startuml
participant Service
participant Events
[->Service : search()
activate Service
box "Backend" #f8f8f8
activate Backend
activate QueryBuilder
activate CollectionFactory
activate Connector
end box
Events<-Service : <i><font color="blue">resolve (1)</font></i>
Events-->Service
Events<-Service : <i><font color="blue">pre (2)</font></i>
Service->Backend : search()
Backend->QueryBuilder : Build SOLR query
QueryBuilder-->Backend
Backend->Backend : Select response writer (json, arrarr)
Backend->Connector : search()
Connector->Connector : Select SOLR handler
Connector->Connector : Prepare request parameters
Connector-->] : Send request
Connector<--]
Connector->Backend : Return response body
Backend->Backend : Deserialize response
Backend->CollectionFactory : factory()
CollectionFactory-->Backend
Backend->Backend : Inject source identifier
Backend->Service : Return RecordCollection
Events<-Service : <i><font color="blue">post (3)</font></i>
[<-Service : Return RecordCollection
deactivate Backend
deactivate Service
deactivate CollectionFactory
deactivate QueryBuilder
deactivate Connector
@enduml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment