Skip to content

Instantly share code, notes, and snippets.

@mikeminutillo
Created July 18, 2014 17:45
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 mikeminutillo/f8a5d66c53c1e27d64fe to your computer and use it in GitHub Desktop.
Save mikeminutillo/f8a5d66c53c1e27d64fe to your computer and use it in GitHub Desktop.
Architecture Definition DSL - Multi-file with components
internal system techtribes.je
desc techtribes.je is the only way to keep up to date with the IT, tech and digital sector in Jersey and Guernsey, Channel Islands
uses Twitter
Gets profile information and tweets from.
uses Github
Gets information about public code repositories from.
uses Blogs
Gets content using RSS and Atom feeds from.
external person Anonymous User
desc Anybody on the web
uses techtribes.je
View people, tribes (businesses, communities and interest groups), content, events, jobs, etc from the local tech, digital and IT sector.
uses Web Application
View people, tribes (businesses, communities and interest groups), content, events, jobs, etc from the local tech, digital and IT sector.
external person Aggregated User
desc A user or business with content that is aggregated into the website.
uses techtribes.je
Manage user profile and tribe membership.
uses Web Application
Manage user profile and tribe membership.
external person Administration User
desc A system administration user.
uses techtribes.je
Add people, add tribes and manage tribe membership.
uses Web Application
Add people, add tribes and manage tribe membership.
external system Twitter
desc twitter.com
external system Github
desc github.com
external system Blogs
desc RSS and Atom feeds
view context techtribes.je
container Web Application
desc Allows users to view people, tribes, content, events, jobs, etc from the local tech, digital and IT sector.
tech Apache Tomcat 7.x
system techtribes.je
uses Relational Database
Reads from and writes data to
uses NoSQL Data Store
Reads from
uses File System
Reads from
container Content Updater
desc Updates profiles, tweets, GitHub repos and content on a scheduled basis.
tech Standalone Java 7 application
system techtribes.je
uses Relational Database
Reads from and writes data to
uses NoSQL Data Store
Reads from and writes data to
uses File System
Writes to
uses Twitter
Gets profile information and tweets from.
uses Github
Gets information about public code repositories from.
uses Blogs
Gets content using RSS and Atom feeds from.
container Relational Database
desc Stores people, tribes, tribe membership, talks, events, jobs, badges, GitHub repos, etc.
system techtribes.je
tech MySQL 5.5.x
container NoSQL Data Store
desc Stores content from RSS/Atom feeds (blog posts) and tweets.
tech MongoDB 2.2.x
system techtribes.je
container File System
desc Stores search indexes.
system techtribes.je
view containers techtribes.je
component LoggingComponent
container Content Updater
desc Does Logging
component BadgeComponent
container Content Updater
desc Manages the badges that have been awarded to people and tribes.
uses Relational Database
Reads from and writes to
uses LoggingComponent
component ActivityComponent
container Content Updater
desc Provides access to information about, and calculates, the recent activity rankings.
uses Relational Database
Reads from and writes to
uses LoggingComponent
component TalkComponent
container Content Updater
desc Provides access to information about talks by local speakers.
uses Relational Database
Reads from and writes to
uses LoggingComponent
component TweetComponent
container Content Updater
desc Provides access to tweets.
uses NoSQL Data Store
Reads from and writes to
uses LoggingComponent
component NewsFeedEntryComponent
container Content Updater
desc Provides access to blog entries and news.
uses NoSQL Data Store
Reads from and writes to
uses LoggingComponent
component BadgeAwarder
container Content Updater
desc Awards Badges to people and tribes based upon recent activity.
uses BadgeComponent
Reads from and writes to
uses ActivityComponent
uses TweetComponent
uses NewsFeedEntryComponent
uses TalkComponent
uses LoggingComponent
view components Content Updater
exclude LoggingComponent
{
"softwareSystems": [
{
"type": "SoftwareSystem",
"containers": [
{
"technology": "Apache Tomcat 7.x",
"type": "Container",
"components": [],
"id": 8,
"name": "Web Application",
"description": "Allows users to view people, tribes, content, events, jobs, etc from the local tech, digital and IT sector.",
"location": "Internal",
"relationships": [
{
"description": "Reads from and writes data to",
"sourceId": 8,
"destinationId": 10
},
{
"description": "Reads from",
"sourceId": 8,
"destinationId": 11
},
{
"description": "Reads from",
"sourceId": 8,
"destinationId": 12
}
]
},
{
"technology": "Standalone Java 7 application",
"type": "Container",
"components": [
{
"type": "Component",
"technology": null,
"implementationType": null,
"interfaceType": null,
"id": 13,
"name": "LoggingComponent",
"description": "Does Logging",
"location": "Internal",
"relationships": []
},
{
"type": "Component",
"technology": null,
"implementationType": null,
"interfaceType": null,
"id": 14,
"name": "BadgeComponent",
"description": "Manages the badges that have been awarded to people and tribes.",
"location": "Internal",
"relationships": [
{
"description": "Reads from and writes to",
"sourceId": 14,
"destinationId": 10
},
{
"description": null,
"sourceId": 14,
"destinationId": 13
}
]
},
{
"type": "Component",
"technology": null,
"implementationType": null,
"interfaceType": null,
"id": 15,
"name": "ActivityComponent",
"description": "Provides access to information about, and calculates, the recent activity rankings.",
"location": "Internal",
"relationships": [
{
"description": "Reads from and writes to",
"sourceId": 15,
"destinationId": 10
},
{
"description": null,
"sourceId": 15,
"destinationId": 13
}
]
},
{
"type": "Component",
"technology": null,
"implementationType": null,
"interfaceType": null,
"id": 16,
"name": "TalkComponent",
"description": "Provides access to information about talks by local speakers.",
"location": "Internal",
"relationships": [
{
"description": "Reads from and writes to",
"sourceId": 16,
"destinationId": 10
},
{
"description": null,
"sourceId": 16,
"destinationId": 13
}
]
},
{
"type": "Component",
"technology": null,
"implementationType": null,
"interfaceType": null,
"id": 17,
"name": "TweetComponent",
"description": "Provides access to tweets.",
"location": "Internal",
"relationships": [
{
"description": "Reads from and writes to",
"sourceId": 17,
"destinationId": 11
},
{
"description": null,
"sourceId": 17,
"destinationId": 13
}
]
},
{
"type": "Component",
"technology": null,
"implementationType": null,
"interfaceType": null,
"id": 18,
"name": "NewsFeedEntryComponent",
"description": "Provides access to blog entries and news.",
"location": "Internal",
"relationships": [
{
"description": "Reads from and writes to",
"sourceId": 18,
"destinationId": 11
},
{
"description": null,
"sourceId": 18,
"destinationId": 13
}
]
},
{
"type": "Component",
"technology": null,
"implementationType": null,
"interfaceType": null,
"id": 19,
"name": "BadgeAwarder",
"description": "Awards Badges to people and tribes based upon recent activity.",
"location": "Internal",
"relationships": [
{
"description": "Reads from and writes to",
"sourceId": 19,
"destinationId": 14
},
{
"description": null,
"sourceId": 19,
"destinationId": 15
},
{
"description": null,
"sourceId": 19,
"destinationId": 17
},
{
"description": null,
"sourceId": 19,
"destinationId": 18
},
{
"description": null,
"sourceId": 19,
"destinationId": 16
},
{
"description": null,
"sourceId": 19,
"destinationId": 13
}
]
}
],
"id": 9,
"name": "Content Updater",
"description": "Updates profiles, tweets, GitHub repos and content on a scheduled basis.",
"location": "Internal",
"relationships": [
{
"description": "Reads from and writes data to",
"sourceId": 9,
"destinationId": 10
},
{
"description": "Reads from and writes data to",
"sourceId": 9,
"destinationId": 11
},
{
"description": "Writes to",
"sourceId": 9,
"destinationId": 12
},
{
"description": "Gets profile information and tweets from.",
"sourceId": 9,
"destinationId": 5
},
{
"description": "Gets information about public code repositories from.",
"sourceId": 9,
"destinationId": 6
},
{
"description": "Gets content using RSS and Atom feeds from.",
"sourceId": 9,
"destinationId": 7
}
]
},
{
"technology": "MySQL 5.5.x",
"type": "Container",
"components": [],
"id": 10,
"name": "Relational Database",
"description": "Stores people, tribes, tribe membership, talks, events, jobs, badges, GitHub repos, etc.",
"location": "Internal",
"relationships": []
},
{
"technology": "MongoDB 2.2.x",
"type": "Container",
"components": [],
"id": 11,
"name": "NoSQL Data Store",
"description": "Stores content from RSS/Atom feeds (blog posts) and tweets.",
"location": "Internal",
"relationships": []
},
{
"technology": null,
"type": "Container",
"components": [],
"id": 12,
"name": "File System",
"description": "Stores search indexes.",
"location": "Internal",
"relationships": []
}
],
"id": 1,
"name": "techtribes.je",
"description": "techtribes.je is the only way to keep up to date with the IT, tech and digital sector in Jersey and Guernsey, Channel Islands",
"location": "Internal",
"relationships": [
{
"description": "Gets profile information and tweets from.",
"sourceId": 1,
"destinationId": 5
},
{
"description": "Gets information about public code repositories from.",
"sourceId": 1,
"destinationId": 6
},
{
"description": "Gets content using RSS and Atom feeds from.",
"sourceId": 1,
"destinationId": 7
}
]
},
{
"type": "SoftwareSystem",
"containers": [],
"id": 5,
"name": "Twitter",
"description": "twitter.com",
"location": "Internal",
"relationships": []
},
{
"type": "SoftwareSystem",
"containers": [],
"id": 6,
"name": "Github",
"description": "github.com",
"location": "Internal",
"relationships": []
},
{
"type": "SoftwareSystem",
"containers": [],
"id": 7,
"name": "Blogs",
"description": "RSS and Atom feeds",
"location": "Internal",
"relationships": []
}
],
"people": [
{
"type": "Person",
"id": 2,
"name": "Anonymous User",
"description": "Anybody on the web",
"location": "Internal",
"relationships": [
{
"description": "View people, tribes (businesses, communities and interest groups), content, events, jobs, etc from the local tech, digital and IT sector.",
"sourceId": 2,
"destinationId": 1
},
{
"description": "View people, tribes (businesses, communities and interest groups), content, events, jobs, etc from the local tech, digital and IT sector.",
"sourceId": 2,
"destinationId": 8
}
]
},
{
"type": "Person",
"id": 3,
"name": "Aggregated User",
"description": "A user or business with content that is aggregated into the website.",
"location": "Internal",
"relationships": [
{
"description": "Manage user profile and tribe membership.",
"sourceId": 3,
"destinationId": 1
},
{
"description": "Manage user profile and tribe membership.",
"sourceId": 3,
"destinationId": 8
}
]
},
{
"type": "Person",
"id": 4,
"name": "Administration User",
"description": "A system administration user.",
"location": "Internal",
"relationships": [
{
"description": "Add people, add tribes and manage tribe membership.",
"sourceId": 4,
"destinationId": 1
},
{
"description": "Add people, add tribes and manage tribe membership.",
"sourceId": 4,
"destinationId": 8
}
]
}
],
"systemContextViews": [
{
"type": "SystemContext",
"name": null,
"description": "",
"elements": [
{
"id": 1
},
{
"id": 5
},
{
"id": 6
},
{
"id": 7
},
{
"id": 2
},
{
"id": 3
},
{
"id": 4
}
],
"softwareSystemId": 1,
"relationships": [
{
"sourceId": 1,
"destinationId": 5
},
{
"sourceId": 1,
"destinationId": 6
},
{
"sourceId": 1,
"destinationId": 7
},
{
"sourceId": 2,
"destinationId": 1
},
{
"sourceId": 3,
"destinationId": 1
},
{
"sourceId": 4,
"destinationId": 1
}
]
}
],
"containerViews": [
{
"type": "Container",
"name": "techtribes.je - Containers",
"description": "",
"elements": [
{
"id": 5
},
{
"id": 6
},
{
"id": 7
},
{
"id": 2
},
{
"id": 3
},
{
"id": 4
},
{
"id": 8
},
{
"id": 9
},
{
"id": 10
},
{
"id": 11
},
{
"id": 12
}
],
"softwareSystemId": 1,
"relationships": [
{
"sourceId": 2,
"destinationId": 8
},
{
"sourceId": 3,
"destinationId": 8
},
{
"sourceId": 4,
"destinationId": 8
},
{
"sourceId": 8,
"destinationId": 10
},
{
"sourceId": 8,
"destinationId": 11
},
{
"sourceId": 8,
"destinationId": 12
},
{
"sourceId": 9,
"destinationId": 10
},
{
"sourceId": 9,
"destinationId": 11
},
{
"sourceId": 9,
"destinationId": 12
},
{
"sourceId": 9,
"destinationId": 5
},
{
"sourceId": 9,
"destinationId": 6
},
{
"sourceId": 9,
"destinationId": 7
}
]
}
],
"componentViews": [
{
"containerId": 9,
"type": "Component",
"name": "techtribes.je - Content Updater - Components",
"description": "",
"elements": [
{
"id": 8
},
{
"id": 10
},
{
"id": 11
},
{
"id": 12
},
{
"id": 14
},
{
"id": 15
},
{
"id": 16
},
{
"id": 17
},
{
"id": 18
},
{
"id": 19
}
],
"softwareSystemId": 1,
"relationships": [
{
"sourceId": 8,
"destinationId": 10
},
{
"sourceId": 8,
"destinationId": 11
},
{
"sourceId": 8,
"destinationId": 12
},
{
"sourceId": 14,
"destinationId": 10
},
{
"sourceId": 15,
"destinationId": 10
},
{
"sourceId": 16,
"destinationId": 10
},
{
"sourceId": 17,
"destinationId": 11
},
{
"sourceId": 18,
"destinationId": 11
},
{
"sourceId": 19,
"destinationId": 14
},
{
"sourceId": 19,
"destinationId": 15
},
{
"sourceId": 19,
"destinationId": 17
},
{
"sourceId": 19,
"destinationId": 18
},
{
"sourceId": 19,
"destinationId": 16
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment