hydramata-works 0.0.1.prerelease
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.hound.yml +818 -0
- data/.rspec +2 -0
- data/.travis.yml +20 -0
- data/CONTRIBUTING.md +220 -0
- data/Gemfile +36 -0
- data/Guardfile +36 -0
- data/LICENSE +15 -0
- data/README.md +36 -0
- data/Rakefile +47 -0
- data/TODO.md +74 -0
- data/VISION.md +19 -0
- data/app/forms/hydramata/works/entity_form.rb +92 -0
- data/app/forms/hydramata/works/validation_service.rb +78 -0
- data/app/models/hydramata/works/data_definition.rb +57 -0
- data/app/models/hydramata/works/entities.rb +11 -0
- data/app/models/hydramata/works/entity.rb +75 -0
- data/app/models/hydramata/works/predicate.rb +35 -0
- data/app/models/hydramata/works/predicate_presentation_sequences/storage.rb +29 -0
- data/app/models/hydramata/works/predicate_set.rb +44 -0
- data/app/models/hydramata/works/predicate_sets/storage.rb +45 -0
- data/app/models/hydramata/works/predicates.rb +14 -0
- data/app/models/hydramata/works/predicates/storage.rb +33 -0
- data/app/models/hydramata/works/presentation_structure.rb +29 -0
- data/app/models/hydramata/works/property.rb +72 -0
- data/app/models/hydramata/works/property_set.rb +89 -0
- data/app/models/hydramata/works/validations.rb +6 -0
- data/app/models/hydramata/works/value.rb +34 -0
- data/app/models/hydramata/works/work_type.rb +49 -0
- data/app/models/hydramata/works/work_types.rb +14 -0
- data/app/models/hydramata/works/work_types/storage.rb +42 -0
- data/app/parsers/hydramata/works/datastream_parser.rb +36 -0
- data/app/parsers/hydramata/works/datastream_parsers/rdf_ntriples_parser.rb +60 -0
- data/app/parsers/hydramata/works/datastream_parsers/simple_xml_parser.rb +27 -0
- data/app/parsers/hydramata/works/predicate_parser.rb +31 -0
- data/app/parsers/hydramata/works/predicate_parsers/simple_parser.rb +13 -0
- data/app/parsers/hydramata/works/validations_parser.rb +22 -0
- data/app/parsers/hydramata/works/value_parser.rb +26 -0
- data/app/parsers/hydramata/works/value_parsers.rb +27 -0
- data/app/parsers/hydramata/works/value_parsers/date_parser.rb +13 -0
- data/app/parsers/hydramata/works/value_parsers/interrogation_parser.rb +18 -0
- data/app/parsers/hydramata/works/value_parsers/simple_parser.rb +14 -0
- data/app/presenters/hydramata/works/base_presenter.rb +146 -0
- data/app/presenters/hydramata/works/dom_attributes_builder.rb +24 -0
- data/app/presenters/hydramata/works/entity_presenter.rb +67 -0
- data/app/presenters/hydramata/works/fieldset_presenter.rb +54 -0
- data/app/presenters/hydramata/works/property_presenter.rb +51 -0
- data/app/presenters/hydramata/works/value_presenter.rb +60 -0
- data/app/renderers/hydramata/works/entity_renderer.rb +45 -0
- data/app/views/hydramata/works/fieldsets/_edit.html.erb +4 -0
- data/app/views/hydramata/works/fieldsets/_show.html.erb +8 -0
- data/app/views/hydramata/works/fieldsets/_show.json.jbuilder +8 -0
- data/app/views/hydramata/works/properties/_edit.html.erb +12 -0
- data/app/views/hydramata/works/properties/_show.html.erb +3 -0
- data/app/views/hydramata/works/properties/_show.json.jbuilder +1 -0
- data/app/views/hydramata/works/works/_edit.html.erb +8 -0
- data/app/views/hydramata/works/works/_new.html.erb +8 -0
- data/app/views/hydramata/works/works/_show.html.erb +3 -0
- data/app/views/hydramata/works/works/_show.json.jbuilder +13 -0
- data/app/wranglers/hydramata/works/fedora_wrangler.rb +66 -0
- data/bin/rails +12 -0
- data/db/migrate/20140606132349_create_hydramata_work_predicates.rb +13 -0
- data/db/migrate/20140606132350_create_hydramata_work_types.rb +9 -0
- data/db/migrate/20140606132351_create_hydramata_work_predicate_sets.rb +13 -0
- data/db/migrate/20140606132352_create_hydramata_work_predicate_presentation_sequences.rb +12 -0
- data/db/migrate/20140623200635_add_validations_to_predicates.rb +5 -0
- data/db/migrate/20140627134133_adding_item_type_schema_dot_org_to_work_type.rb +5 -0
- data/db/migrate/20140627140840_adding_item_prop_schema_dot_org_to_predicate.rb +5 -0
- data/db/seeds.rb +36 -0
- data/documents/administrative-set-strawperson.md +45 -0
- data/documents/diagrams/hydramata-refactor-tasks.dot +88 -0
- data/documents/diagrams/hydramata-sip-dip-aip.dot +88 -0
- data/documents/diagrams/hydramata-work-architecture.dot +129 -0
- data/documents/diagrams/hydramata-work-subcomponents.dot +36 -0
- data/documents/diagrams/map-from-database-to-work-object.dot +44 -0
- data/documents/diagrams/map-from-fedora-to-work-object.dot +51 -0
- data/documents/diagrams/map-from-input-to-work-object.dot +37 -0
- data/documents/diagrams/map-from-work-object-to-database.dot +31 -0
- data/documents/diagrams/work-rendering.dot +53 -0
- data/documents/diagrams/work-structure.dot +32 -0
- data/documents/handling-work.md +224 -0
- data/documents/high-level-stories.md +105 -0
- data/documents/hydramata-components.md +82 -0
- data/documents/interface-between-work-and-permissions.md +131 -0
- data/documents/interface-between-work-and-workflow.md +6 -0
- data/documents/timeline.md +75 -0
- data/fs +3 -0
- data/gemfiles/rails4.1.gemfile +12 -0
- data/gemfiles/rails4.gemfile +13 -0
- data/hydramata-works.gemspec +43 -0
- data/lib/hydramata-works.rb +23 -0
- data/lib/hydramata/works/conversions.rb +21 -0
- data/lib/hydramata/works/conversions/exceptions.rb +18 -0
- data/lib/hydramata/works/conversions/predicate.rb +22 -0
- data/lib/hydramata/works/conversions/predicate_set.rb +28 -0
- data/lib/hydramata/works/conversions/presented_fieldsets.rb +28 -0
- data/lib/hydramata/works/conversions/presenter.rb +13 -0
- data/lib/hydramata/works/conversions/property.rb +31 -0
- data/lib/hydramata/works/conversions/property_set.rb +23 -0
- data/lib/hydramata/works/conversions/translation_key_fragment.rb +20 -0
- data/lib/hydramata/works/conversions/value.rb +20 -0
- data/lib/hydramata/works/conversions/work_type.rb +26 -0
- data/lib/hydramata/works/engine.rb +31 -0
- data/lib/hydramata/works/linters.rb +99 -0
- data/lib/hydramata/works/linters/implement_data_definition_interface_matcher.rb +17 -0
- data/lib/hydramata/works/linters/implement_entity_interface_matcher.rb +16 -0
- data/lib/hydramata/works/linters/implement_predicate_interface_matcher.rb +17 -0
- data/lib/hydramata/works/linters/implement_predicate_set_interface_matcher.rb +8 -0
- data/lib/hydramata/works/linters/implement_property_set_interface_matcher.rb +8 -0
- data/lib/hydramata/works/linters/implement_value_interface_matcher.rb +8 -0
- data/lib/hydramata/works/linters/implement_work_type_interface_matcher.rb +13 -0
- data/lib/hydramata/works/linters/interface_matcher_builder.rb +36 -0
- data/lib/hydramata/works/translator.rb +67 -0
- data/lib/hydramata/works/version.rb +5 -0
- data/lib/hydramata_works.rb +2 -0
- data/lib/tasks/hydramata_work_tasks.rake +4 -0
- data/run_each_spec_in_isolation +16 -0
- data/run_each_spec_in_isolation.txt +110 -0
- data/script/analyzer.rb +124 -0
- data/script/fast_specs +22 -0
- data/spec/features/fedora_to_in_memory_spec.rb +60 -0
- data/spec/features/format_and_view_path_overrides_spec.rb +72 -0
- data/spec/features/in_memory_to_output_buffer_spec.rb +109 -0
- data/spec/features/instantiate_entity_from_persisted_work_type_spec.rb +26 -0
- data/spec/features/new_user_input_to_in_memory_spec.rb +75 -0
- data/spec/features/translation_services_spec.rb +107 -0
- data/spec/features/validate_entity_based_on_work_type_structure_spec.rb +19 -0
- data/spec/fixtures/cassettes/fedora-object.yml +299 -0
- data/spec/fixtures/translations.yml +20 -0
- data/spec/forms/hydramata/works/entity_form_spec.rb +83 -0
- data/spec/forms/hydramata/works/validation_service_spec.rb +32 -0
- data/spec/lib/hydramata-work_spec.rb +14 -0
- data/spec/lib/hydramata/works/conversions/predicate_set_spec.rb +50 -0
- data/spec/lib/hydramata/works/conversions/predicate_spec.rb +43 -0
- data/spec/lib/hydramata/works/conversions/presented_fieldsets_spec.rb +52 -0
- data/spec/lib/hydramata/works/conversions/presenter_spec.rb +22 -0
- data/spec/lib/hydramata/works/conversions/property_set_spec.rb +42 -0
- data/spec/lib/hydramata/works/conversions/property_spec.rb +68 -0
- data/spec/lib/hydramata/works/conversions/translation_key_fragment_spec.rb +45 -0
- data/spec/lib/hydramata/works/conversions/value_spec.rb +36 -0
- data/spec/lib/hydramata/works/conversions/work_type_spec.rb +55 -0
- data/spec/lib/hydramata/works/translator_spec.rb +81 -0
- data/spec/models/hydramata/works/data_definition_spec.rb +53 -0
- data/spec/models/hydramata/works/entity_spec.rb +50 -0
- data/spec/models/hydramata/works/predicate_presentation_sequences/storage_spec.rb +15 -0
- data/spec/models/hydramata/works/predicate_set_spec.rb +63 -0
- data/spec/models/hydramata/works/predicate_sets/storage_spec.rb +37 -0
- data/spec/models/hydramata/works/predicate_spec.rb +16 -0
- data/spec/models/hydramata/works/predicates/storage_spec.rb +78 -0
- data/spec/models/hydramata/works/predicates_spec.rb +18 -0
- data/spec/models/hydramata/works/presentation_structure_spec.rb +27 -0
- data/spec/models/hydramata/works/property_set_spec.rb +135 -0
- data/spec/models/hydramata/works/property_spec.rb +74 -0
- data/spec/models/hydramata/works/value_spec.rb +61 -0
- data/spec/models/hydramata/works/work_type_spec.rb +45 -0
- data/spec/models/hydramata/works/work_types/storage_spec.rb +74 -0
- data/spec/models/hydramata/works/work_types_spec.rb +16 -0
- data/spec/parsers/hydramata/works/datastream_parser_spec.rb +29 -0
- data/spec/parsers/hydramata/works/datastream_parsers/rdf_ntriples_parser_spec.rb +65 -0
- data/spec/parsers/hydramata/works/datastream_parsers/simple_xml_parser_spec.rb +37 -0
- data/spec/parsers/hydramata/works/predicate_parser_spec.rb +30 -0
- data/spec/parsers/hydramata/works/predicate_parsers/simple_parser_spec.rb +20 -0
- data/spec/parsers/hydramata/works/validations_parser_spec.rb +31 -0
- data/spec/parsers/hydramata/works/value_parser_spec.rb +22 -0
- data/spec/parsers/hydramata/works/value_parsers/simple_parser_spec.rb +20 -0
- data/spec/parsers/hydramata/works/value_parsers_spec.rb +36 -0
- data/spec/presenters/hydramata/works/base_presenter_spec.rb +111 -0
- data/spec/presenters/hydramata/works/dom_attributes_builder_spec.rb +26 -0
- data/spec/presenters/hydramata/works/entity_presenter_spec.rb +51 -0
- data/spec/presenters/hydramata/works/fieldset_presenter_spec.rb +58 -0
- data/spec/presenters/hydramata/works/property_presenter_spec.rb +42 -0
- data/spec/presenters/hydramata/works/value_presenter_spec.rb +49 -0
- data/spec/renderers/hydramata/works/entity_renderer_spec.rb +25 -0
- data/spec/spec_active_record_helper.rb +30 -0
- data/spec/spec_fast_helper.rb +12 -0
- data/spec/spec_slow_helper.rb +56 -0
- data/spec/spec_view_helper.rb +14 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +21 -0
- data/spec/views/hydramata/works/fieldsets/_edit.html.erb_spec.rb +29 -0
- data/spec/views/hydramata/works/fieldsets/_show.html.erb_spec.rb +25 -0
- data/spec/views/hydramata/works/properties/_edit.html.erb_spec.rb +22 -0
- data/spec/views/hydramata/works/properties/_show.html.erb_spec.rb +22 -0
- data/spec/views/hydramata/works/works/_edit.html.erb_spec.rb +23 -0
- data/spec/views/hydramata/works/works/_new.html.erb_spec.rb +23 -0
- data/spec/views/hydramata/works/works/_show.html.erb_spec.rb +24 -0
- data/spec/wranglers/hydramata/works/fedora_wrangler_spec.rb +26 -0
- metadata +466 -0
data/db/seeds.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
article = Hydramata::Works::WorkTypes::Storage.create!(identity: 'article', name_for_application_usage: 'article')
|
2
|
+
predicate_set = Hydramata::Works::PredicateSets::Storage.create!(identity: 'required', work_type: article, presentation_sequence: 1, name_for_application_usage: 'required')
|
3
|
+
|
4
|
+
def within_predicate_set_create_predicate_by_term(predicate_set, term)
|
5
|
+
name = "dc_#{term.gsub('#', '_')}"
|
6
|
+
predicate = Hydramata::Works::Predicates::Storage.new(identity: "http://purl.org/dc/terms/#{term}", name_for_application_usage: name)
|
7
|
+
predicate.save!
|
8
|
+
counter = predicate_set.predicate_presentation_sequences.count + 1
|
9
|
+
predicate_set.predicate_presentation_sequences.create!(presentation_sequence: counter, predicate: predicate)
|
10
|
+
end
|
11
|
+
|
12
|
+
[
|
13
|
+
'title',
|
14
|
+
'alternative',
|
15
|
+
'creator#author',
|
16
|
+
'contributor#author',
|
17
|
+
'identifier#issn',
|
18
|
+
'identifier#doi',
|
19
|
+
'abstract',
|
20
|
+
'subject',
|
21
|
+
'source',
|
22
|
+
'publisher',
|
23
|
+
'created',
|
24
|
+
'format#mimeType',
|
25
|
+
'bibliographicCitation',
|
26
|
+
'contributor#repository',
|
27
|
+
'relation#ispartof',
|
28
|
+
'temporal',
|
29
|
+
'spatial',
|
30
|
+
'language',
|
31
|
+
'format#extent',
|
32
|
+
'contributor#institution',
|
33
|
+
'rights#permissions',
|
34
|
+
].each do |term|
|
35
|
+
within_predicate_set_create_predicate_by_term(predicate_set, term)
|
36
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# Hydramata::AdministrativeSet Strawperson
|
2
|
+
|
3
|
+
An Administrative Set is concerned with:
|
4
|
+
|
5
|
+
* Somewhat concerned about presentation (i.e. where is this found)
|
6
|
+
* Default values for ingest
|
7
|
+
* Might enable bulk editing
|
8
|
+
* What happens when something is deposited/ingested
|
9
|
+
|
10
|
+
* Enable some student to deposit into a specific collection
|
11
|
+
* Deposit requires review
|
12
|
+
|
13
|
+
* What can be added to the set
|
14
|
+
* Who can add to the set
|
15
|
+
* Who can modify objects in the set
|
16
|
+
* What happens when an object that is part of the set changes
|
17
|
+
* What happens when an object is created in the set
|
18
|
+
|
19
|
+
```gherkin
|
20
|
+
Background:
|
21
|
+
Given a User with groups:
|
22
|
+
| group |
|
23
|
+
| Professor of Mathematics |
|
24
|
+
| Faculty |
|
25
|
+
And the following GroupRoles:
|
26
|
+
| group | role |
|
27
|
+
| Professor of Mathematics | Math Holdings Manager |
|
28
|
+
| Faculty | Faculty Holdings Manager |
|
29
|
+
| Students | Self Deposit Submitter |
|
30
|
+
And the following AdministrativeSets:
|
31
|
+
| set |
|
32
|
+
| General Holdings |
|
33
|
+
| Self Deposit Holdings |
|
34
|
+
| Math Holdings |
|
35
|
+
And the following Permissions:
|
36
|
+
| role | permissions |
|
37
|
+
| General Holdings Manager | can :manage, "General Holdings item of type Article" |
|
38
|
+
| General Holdings Manager | can :manage, "General Holdings item of type Document" |
|
39
|
+
| Math Holdings Manager | can :manage, "General Holdings item of type Article" |
|
40
|
+
| Math Holdings Manager | can :manage, "General Holdings item of type Dataset" |
|
41
|
+
| Self Deposit Submitter | can :create, "Self Deposits item of type Document" |
|
42
|
+
|
43
|
+
Scenario:
|
44
|
+
Then they
|
45
|
+
```
|
@@ -0,0 +1,88 @@
|
|
1
|
+
digraph "G" {
|
2
|
+
label="Hydramata Refactor"
|
3
|
+
compound=true;
|
4
|
+
node[color="grey15" fillcolor=white style=filled shape=record penwidth=2 margin="0.15, 0.125"];
|
5
|
+
|
6
|
+
subgraph cluster_1 {
|
7
|
+
label="Hydramata Base Definitions"
|
8
|
+
fillcolor=olivedrab3
|
9
|
+
style=filled
|
10
|
+
define_works_public_interface[label="{ Work's Public Interface | 1 week }"]
|
11
|
+
define_plugin_architecture_spec[label="{ Plugin Architecture Spec | 1 week }"]
|
12
|
+
}
|
13
|
+
|
14
|
+
subgraph cluster_2 {
|
15
|
+
label="Hydramata::Works"
|
16
|
+
fillcolor=orange
|
17
|
+
style=filled
|
18
|
+
articulate_work_responsibility[label="{Articulate Work Responsibility | 1 week }"]
|
19
|
+
define_presentation_structure[label="{ Define Presentation Structure | 1 week }"]
|
20
|
+
splice_presentation_structure[label="{ Splice in Presentation Structure | 3 weeks | SWARM! }"]
|
21
|
+
define_predicate_interfaces[label="{ Define Predicates Interfaces | 3 weeks }"]
|
22
|
+
define_existing_predicates[label="{ Define Existing Predicates | 3 weeks | SWARM! }"]
|
23
|
+
splice_work_wrangler[label="{ Splice Work Wrangler for Fedora | 3 weeks }"]
|
24
|
+
splice_actor_shim[label="{ Splice Actor Shim for Hydramata::Works | 2 weeks | SWARM? }"]
|
25
|
+
}
|
26
|
+
|
27
|
+
subgraph cluster_3 {
|
28
|
+
label="Hydramata::Worksflow"
|
29
|
+
fillcolor=lightblue
|
30
|
+
style=filled
|
31
|
+
articulate_workflow_responsibility[label="{Articulate WorkFlow Responsibility | 1 week }"]
|
32
|
+
define_workflow_interface[label="{Define Workflow Interface | 2 week }"]
|
33
|
+
create_asynchronous_workflow[label="{ Create Asynchronous Workflow System | 6 weeks }"]
|
34
|
+
create_exsting_tasks[label="{ Create Single Focus Tasks | 3 weeks | SWARM! }"]
|
35
|
+
stand_up_workflow_app[label="{ Stand-up Workflow App | 1 week }"]
|
36
|
+
replace_existing_actors[label="{ Replace Actors with Workflow | 2 week }"]
|
37
|
+
}
|
38
|
+
|
39
|
+
subgraph cluster_4 {
|
40
|
+
label="Hydramata::Permissions"
|
41
|
+
fillcolor=firebrick2
|
42
|
+
style=filled
|
43
|
+
articulate_permission_responsibility[label="{ Articulate Permission Responsibility | 1 week }"]
|
44
|
+
define_permission_interface[label="{ Define Permission Interface | 2 weeks }"]
|
45
|
+
define_permission_management_system[label="{ Create Permission Management System | 8 weeks }"]
|
46
|
+
splice_in_hacl[label="{ Splice in Permission for Hydra::AccessControls | 3 weeks }"]
|
47
|
+
replace_repository_admin[label="{ Replace Repository Admin | 1 week }"]
|
48
|
+
replace_application_manager[label="{ Replace Application Manager | 1 week }"]
|
49
|
+
}
|
50
|
+
|
51
|
+
subgraph cluster_5 {
|
52
|
+
label="Hydramata::AdministrativeContext"
|
53
|
+
fillcolor=orchid3
|
54
|
+
style=filled
|
55
|
+
articulate_administrative_context_responsibility[label="{ Articulate AdministrativeContext Responsibility | 3 weeks }"]
|
56
|
+
define_impact_on_work[label="{ Define Impact on Work Datastructure | 1 weeks }"]
|
57
|
+
define_impact_on_permissions[label="{ Define Impact on Permissions | 1 weeks }"]
|
58
|
+
define_impact_on_workflow[label="{ Define Impact on Workflow | 1 weeks }"]
|
59
|
+
make_it_so[label="{ Make it So | ??? weeks }"]
|
60
|
+
}
|
61
|
+
|
62
|
+
define_works_public_interface -> define_plugin_architecture_spec
|
63
|
+
define_plugin_architecture_spec -> articulate_work_responsibility -> define_presentation_structure
|
64
|
+
define_plugin_architecture_spec -> articulate_permission_responsibility -> define_permission_interface
|
65
|
+
define_plugin_architecture_spec -> articulate_workflow_responsibility -> define_workflow_interface -> create_asynchronous_workflow
|
66
|
+
|
67
|
+
define_presentation_structure -> articulate_administrative_context_responsibility
|
68
|
+
define_permission_interface -> articulate_administrative_context_responsibility
|
69
|
+
define_workflow_interface -> articulate_administrative_context_responsibility
|
70
|
+
articulate_administrative_context_responsibility -> define_impact_on_work -> make_it_so
|
71
|
+
articulate_administrative_context_responsibility -> define_impact_on_workflow -> make_it_so
|
72
|
+
articulate_administrative_context_responsibility -> define_impact_on_permissions -> make_it_so
|
73
|
+
|
74
|
+
define_permission_interface -> define_permission_management_system
|
75
|
+
define_permission_management_system -> replace_repository_admin
|
76
|
+
replace_repository_admin -> replace_application_manager
|
77
|
+
define_permission_management_system -> splice_in_hacl
|
78
|
+
define_presentation_structure -> splice_presentation_structure
|
79
|
+
define_presentation_structure -> define_predicate_interfaces
|
80
|
+
define_predicate_interfaces -> define_existing_predicates
|
81
|
+
splice_presentation_structure -> splice_work_wrangler
|
82
|
+
define_existing_predicates -> splice_work_wrangler
|
83
|
+
splice_work_wrangler -> splice_actor_shim
|
84
|
+
create_asynchronous_workflow -> create_exsting_tasks
|
85
|
+
create_asynchronous_workflow -> stand_up_workflow_app
|
86
|
+
stand_up_workflow_app -> replace_existing_actors
|
87
|
+
create_exsting_tasks -> replace_existing_actors
|
88
|
+
}
|
@@ -0,0 +1,88 @@
|
|
1
|
+
digraph "G" {
|
2
|
+
label="Hydramata SIP / DIP / AIP"
|
3
|
+
compound=true;
|
4
|
+
node[color="grey15" shape=record penwidth=2 margin="0.15, 0.125"];
|
5
|
+
|
6
|
+
subgraph cluster_0 {
|
7
|
+
label="Operations via Interface";
|
8
|
+
color="olivedrab3";
|
9
|
+
node[color="grey" style=filled fillcolor=olivedrab3];
|
10
|
+
|
11
|
+
user_submission [label="{User Submission Interface | rendered HTML form }"];
|
12
|
+
batch_submission [label="{Batch Submission Interface | machine readable file }"];
|
13
|
+
sip_request [label="{GET SIP by PID}"]
|
14
|
+
aip_request [label="{GET AIP by PID}"]
|
15
|
+
dip_request [label="{GET DIP by PID}"]
|
16
|
+
search_interface [label="{GET SEARCH}"]
|
17
|
+
work_viewer [label="{Representation of Work | by content type (i.e. HTML, JSON)}"]
|
18
|
+
search_response [label="{Representation of Search | by content type (i.e. HTML, JSON)}"]
|
19
|
+
}
|
20
|
+
|
21
|
+
subgraph 1 {
|
22
|
+
label="Data Negotiation"
|
23
|
+
color="lightskyblue3";
|
24
|
+
node[color="grey" style=filled fillcolor=lightskyblue3]
|
25
|
+
|
26
|
+
submission_handler [label="{Submission Input Handler | validate input | mint PID | persist input | enqueue submission}"];
|
27
|
+
work_wrangler [label="{Work Wrangler | retrieve data from persistence | retrieval sequence (for :edit, :show, etc.)}"]
|
28
|
+
|
29
|
+
blacklight [label="{Blacklight}"]
|
30
|
+
work_wrangler_aip [label="{ActiveFedora}"]
|
31
|
+
work_wrangler_sip [label="{ActiveRecord}"]
|
32
|
+
rubydora [label="{Rubydora}"]
|
33
|
+
solrizer [label="{Solrizer}"]
|
34
|
+
work_renderer [label="{Work Renderer}"]
|
35
|
+
}
|
36
|
+
|
37
|
+
subgraph cluster_2 {
|
38
|
+
label="Queing System"
|
39
|
+
color="pink"
|
40
|
+
style="filled"
|
41
|
+
hydramata_queue_handler [fillcolor=pink label="{Hydramata Workflow}"]
|
42
|
+
hydramata_queue_handler ->
|
43
|
+
send_user_notifications ->
|
44
|
+
run_anti_virus ->
|
45
|
+
characterize_files ->
|
46
|
+
generate_derivatives ->
|
47
|
+
apply_rights_metadata ->
|
48
|
+
etc ->
|
49
|
+
ingest_sip
|
50
|
+
send_user_notifications
|
51
|
+
}
|
52
|
+
|
53
|
+
subgraph 3 {
|
54
|
+
label="Data Storage and Persistence"
|
55
|
+
node[color="grey"style=filled fillcolor=grey];
|
56
|
+
sip_data_storage [label="{ Database }"];
|
57
|
+
sip_file_storage [label="{ File System Workspace }"];
|
58
|
+
aip_data_storage [label="{ Fedora }"];
|
59
|
+
index_data_storage [label="{ SOLR }"];
|
60
|
+
}
|
61
|
+
|
62
|
+
submission_handler -> sip_data_storage [label="Persist SIP"]
|
63
|
+
sip_request -> work_wrangler
|
64
|
+
dip_request -> work_wrangler
|
65
|
+
aip_request -> work_wrangler
|
66
|
+
|
67
|
+
work_wrangler -> work_wrangler_sip [arrowhead="none" label="Exists in Database?"]
|
68
|
+
work_wrangler_sip -> sip_data_storage [arrowhead="both"]
|
69
|
+
work_wrangler -> work_wrangler_aip [arrowhead="none" label="Exists in Fedora or SOLR?"]
|
70
|
+
work_wrangler -> work_renderer [label="Well-formed Work object"]
|
71
|
+
work_renderer -> work_viewer [label="Negotiated content type (i.e. JSON, HTML, XML)"]
|
72
|
+
|
73
|
+
work_wrangler_aip -> rubydora [arrowhead="both"]
|
74
|
+
work_wrangler_aip -> solrizer [arrowhead="both"]
|
75
|
+
search_interface -> blacklight
|
76
|
+
blacklight -> index_data_storage
|
77
|
+
blacklight -> search_response
|
78
|
+
user_submission -> submission_handler [label="User submits a form"];
|
79
|
+
batch_submission -> submission_handler [label="Batch file ready to process"];
|
80
|
+
submission_handler -> sip_request [label="Response from Submission Input Handler"];
|
81
|
+
submission_handler -> hydramata_queue_handler [label="Enqueue PID and workflow ID"];
|
82
|
+
hydramata_queue_handler -> sip_data_storage [label="Update SIP data"]
|
83
|
+
sip_data_storage -> hydramata_queue_handler [label="Load SIP data"]
|
84
|
+
hydramata_queue_handler -> rubydora [label="Ingest (SIP -> AIP)"]
|
85
|
+
hydramata_queue_handler -> solrizer [label="Index (SIP -> AIP)"]
|
86
|
+
rubydora -> aip_data_storage
|
87
|
+
solrizer -> index_data_storage
|
88
|
+
}
|
@@ -0,0 +1,129 @@
|
|
1
|
+
digraph "G" {
|
2
|
+
label="Hydramata::Works Architecture"
|
3
|
+
compound=true;
|
4
|
+
node[color="grey15" style=filled fillcolor=white shape=oval penwidth=2 margin="0.15, 0.15"];
|
5
|
+
|
6
|
+
subgraph cluster_0 {
|
7
|
+
label="Datastores"
|
8
|
+
color="olivedrab3"
|
9
|
+
style="filled"
|
10
|
+
node[shape=record]
|
11
|
+
fedora3[fillcolor=orchid4]
|
12
|
+
database
|
13
|
+
fedora4[fillcolor=orchid2]
|
14
|
+
solr
|
15
|
+
}
|
16
|
+
|
17
|
+
subgraph cluster_1 {
|
18
|
+
label="Wranglers"
|
19
|
+
color="orange"
|
20
|
+
style="filled"
|
21
|
+
work_resolver
|
22
|
+
fedora3_wrangler[fillcolor=orchid4]
|
23
|
+
fedora4_wrangler[fillcolor=orchid2]
|
24
|
+
database_wrangler[label="database_wrangler*"]
|
25
|
+
solr_wrangler
|
26
|
+
fedora_work_type_finder
|
27
|
+
fedora_work_type_finder
|
28
|
+
solr_work_type_finder
|
29
|
+
database_work_type_finder
|
30
|
+
}
|
31
|
+
|
32
|
+
subgraph cluster_8 {
|
33
|
+
label="Parsers"
|
34
|
+
color="orange"
|
35
|
+
style="filled"
|
36
|
+
|
37
|
+
datastream_parsers
|
38
|
+
database_serialization_parsers[label="database_serialization_parsers*"]
|
39
|
+
solr_document_parsers
|
40
|
+
predicate_parsers
|
41
|
+
value_parsers
|
42
|
+
presentation_structure_builder
|
43
|
+
}
|
44
|
+
|
45
|
+
subgraph cluster_2 {
|
46
|
+
label="Data Structure Definition"
|
47
|
+
color="olivedrab3"
|
48
|
+
style="filled"
|
49
|
+
node[shape=record]
|
50
|
+
|
51
|
+
work_type -> predicate_set -> predicate
|
52
|
+
}
|
53
|
+
|
54
|
+
|
55
|
+
subgraph cluster_3 {
|
56
|
+
label="Datastore Persister"
|
57
|
+
color="orange"
|
58
|
+
style="filled"
|
59
|
+
fedora3_persister
|
60
|
+
fedora4_persister[fillcolor=orchid2]
|
61
|
+
database_persister[label="database_persister*"]
|
62
|
+
solr_persister
|
63
|
+
work_persister
|
64
|
+
}
|
65
|
+
|
66
|
+
subgraph cluster_4 {
|
67
|
+
label="In Memory"
|
68
|
+
color="lightblue"
|
69
|
+
style="filled"
|
70
|
+
node[shape=record]
|
71
|
+
work
|
72
|
+
property_set
|
73
|
+
property
|
74
|
+
value
|
75
|
+
}
|
76
|
+
|
77
|
+
subgraph cluster_5 {
|
78
|
+
label="Buffer Map"
|
79
|
+
color="orange"
|
80
|
+
style="filled"
|
81
|
+
}
|
82
|
+
|
83
|
+
subgraph cluster_6 {
|
84
|
+
label="Output Buffer"
|
85
|
+
color="firebrick2"
|
86
|
+
style="filled"
|
87
|
+
}
|
88
|
+
|
89
|
+
presentation_structure_builder -> property_set
|
90
|
+
database -> database_wrangler
|
91
|
+
database_persister -> database
|
92
|
+
database_serialization_parsers -> predicate_parsers
|
93
|
+
database_wrangler -> database_serialization_parsers
|
94
|
+
database_wrangler -> database_work_type_finder
|
95
|
+
datastream_parsers -> predicate_parsers
|
96
|
+
fedora3 -> fedora3_wrangler
|
97
|
+
fedora3_persister -> fedora3
|
98
|
+
fedora3_wrangler -> datastream_parsers
|
99
|
+
fedora3_wrangler -> fedora_work_type_finder
|
100
|
+
fedora_work_type_finder
|
101
|
+
fedora4 -> fedora4_wrangler
|
102
|
+
fedora4_persister -> fedora4
|
103
|
+
fedora4_wrangler -> datastream_parsers
|
104
|
+
fedora4_wrangler -> fedora_work_type_finder
|
105
|
+
predicate -> presentation_structure_builder
|
106
|
+
predicate_parsers -> property
|
107
|
+
predicate_parsers -> value_parsers
|
108
|
+
predicate_set -> presentation_structure_builder
|
109
|
+
property -> value
|
110
|
+
property_set -> property
|
111
|
+
solr -> solr_wrangler
|
112
|
+
solr_document_parsers -> predicate_parsers
|
113
|
+
solr_persister -> solr
|
114
|
+
solr_wrangler -> solr_document_parsers
|
115
|
+
solr_wrangler -> solr_work_type_finder
|
116
|
+
value_parsers -> value
|
117
|
+
work -> property_set
|
118
|
+
work -> work_persister
|
119
|
+
work_persister -> database_persister
|
120
|
+
work_persister -> fedora3_persister
|
121
|
+
work_persister -> fedora4_persister
|
122
|
+
work_persister -> solr_persister
|
123
|
+
work_resolver -> presentation_structure_builder
|
124
|
+
work_resolver -> database_wrangler
|
125
|
+
work_resolver -> fedora3_wrangler
|
126
|
+
work_resolver -> fedora4_wrangler
|
127
|
+
work_resolver -> solr_wrangler
|
128
|
+
work_resolver -> work
|
129
|
+
}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
digraph "G" {
|
2
|
+
label="Hydramata Refactor"
|
3
|
+
compound=true;
|
4
|
+
node[color="grey15" fillcolor=white style=filled shape=record penwidth=2 margin="0.15, 0.125"];
|
5
|
+
|
6
|
+
subgraph cluster_1 {
|
7
|
+
label="Hydramata Base Definitions"
|
8
|
+
fillcolor=olivedrab3
|
9
|
+
style=filled
|
10
|
+
}
|
11
|
+
|
12
|
+
subgraph cluster_2 {
|
13
|
+
label="Hydramata::Works"
|
14
|
+
fillcolor=orange
|
15
|
+
style=filled
|
16
|
+
}
|
17
|
+
|
18
|
+
subgraph cluster_3 {
|
19
|
+
label="Hydramata::Worksflow"
|
20
|
+
fillcolor=lightblue
|
21
|
+
style=filled
|
22
|
+
}
|
23
|
+
|
24
|
+
subgraph cluster_4 {
|
25
|
+
label="Hydramata::Permissions"
|
26
|
+
fillcolor=firebrick2
|
27
|
+
style=filled
|
28
|
+
}
|
29
|
+
|
30
|
+
subgraph cluster_5 {
|
31
|
+
label="Hydramata::AdministrativeContext"
|
32
|
+
fillcolor=orchid3
|
33
|
+
style=filled
|
34
|
+
}
|
35
|
+
|
36
|
+
}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
digraph "G" {
|
2
|
+
label="Map from Database to Work Object"
|
3
|
+
compound=true;
|
4
|
+
node[color="grey15" shape=record penwidth=2 margin="0.15, 0.125"];
|
5
|
+
|
6
|
+
subgraph 1 {
|
7
|
+
label="Records"
|
8
|
+
node[color="grey" style=filled fillcolor=olivedrab3];
|
9
|
+
database[label="Database"]
|
10
|
+
work[label="{ <f0> Work (in memory) | <f1> #pid | <f2> #work_type | <f3> #property_set }"]
|
11
|
+
}
|
12
|
+
|
13
|
+
subgraph cluster_0 {
|
14
|
+
label="Sequence for Transforming\nDatabase object to a Work"
|
15
|
+
color="orange"
|
16
|
+
style="filled"
|
17
|
+
node[style=filled fillcolor=white]
|
18
|
+
database_request_pid[label="Request PID"]
|
19
|
+
database_retrieve_object[label="Retrieve Object"]
|
20
|
+
database_instantiate_work[label="Instantiate Work"]
|
21
|
+
database_assign_work_type[label="Assign Work Type"]
|
22
|
+
database_parse_datastream[label="Parse Serialized data"]
|
23
|
+
database_for_each_property[label="For each Property"]
|
24
|
+
database_loop_for_each_property[label="More Properties" shape="diamond"]
|
25
|
+
database_push_property_to_work_property_set[label="Push Property to Work Property Set"]
|
26
|
+
return_work[label="Return Work object"]
|
27
|
+
|
28
|
+
database_request_pid -> database_retrieve_object
|
29
|
+
database_retrieve_object -> database_instantiate_work ->
|
30
|
+
database_instantiate_work -> database_assign_work_type
|
31
|
+
database_assign_work_type -> database_parse_datastream
|
32
|
+
database_parse_datastream -> database_for_each_property
|
33
|
+
database_for_each_property -> database_push_property_to_work_property_set
|
34
|
+
database_push_property_to_work_property_set -> database_loop_for_each_property
|
35
|
+
database_loop_for_each_property -> database_for_each_property [label="NEXT"]
|
36
|
+
database_loop_for_each_property -> return_work [label="NO"]
|
37
|
+
}
|
38
|
+
|
39
|
+
database_instantiate_work -> work[dir=both]
|
40
|
+
database_assign_work_type -> work:f2
|
41
|
+
database_retrieve_object -> database[dir=both]
|
42
|
+
database_push_property_to_work_property_set -> work:f3
|
43
|
+
work -> return_work
|
44
|
+
}
|