/
WikiWorkbenchContrib.txt
166 lines (131 loc) · 7.99 KB
/
WikiWorkbenchContrib.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
%META:TOPICINFO{author="ProjectContributor" comment="reprev" date="1340979831" format="1.1" reprev="2" version="2"}%
---+!! %TOPIC%
%SHORTDESCRIPTION%
%TOC%
---++ Introduction
The !WikiWorkbench standardizes writing, deploying and using wiki applications
on Foswiki. It builds on the core concepts of standard Foswiki and establishes
a unified terminology to leverage concepts and key benefits known from
conventional programming towards wiki applications. These are:
* separation of programming code from net data: clearly distinguish the roles of wiki application programmers and wiki authors
* reusability: bundle functions into libraries to be used in multiple places
* abstraction: establish a multi-level architecture of wiki applications, one built upon the other
* standardize model, view and control: share common concepts defining !DataForms, view and edit templates
* typed content: establish a hierarchy of !TopicTypes to let topics participate in specific wiki applications
* documentation: auto-generate complete documentation for a wiki application ready to be printed out
While these concepts are nothing new for a normal programmer, they do have a
clear equivalent using Foswiki as an application framework. Wiki applications
still are written in TML using your browser on your Foswiki site. However, all
bits are managed in a clean way to guarantee that you will still find them
years later. People trained to write wiki applications the !WikiWorkbench way
will immediately know where to look and fix applications written by others, as
they all share the same concepts. So by establishing a clear teminology and
best practice, you will be able to maintain even large wiki apps consisting of
hundrets of different components working together long term.
!WikiWorkbench has been developed over the last 5 years working together with a
series of companies in need of large scale wiki applications, custom tailored to their
business needs, covering fields like
* human resource management
* skills management
* project management
* tour planning
* book reviewing
* public relations management
* employee training
* knowledge management
* vacation planning
* corporate blogging
* enterprise search applications
Wiki applications can then be packaged and reused on different deployments like
ordinary Foswiki plugins that extend your site. The main difference is that wiki applications
are fully developed, documented and maintained using the browser. All
parts of an application are a wiki page, so working on an application
is done by interacting with the wiki directly.
---++ Getting started
This chapter gives you a quick overview on how to start a new wiki application.
We will create a first custom !TopicType and deploy it into a user web.
Finally we will create a new topic of that type by using the standard topic factory.
The new wiki application is a web that serves as the container and library for things that you are planning to build
and which belong together as one. You might either consider creating one
singular wiki application located in one subweb of its own, or separate it into
several wiki applications that can be used individually without one another, or
which other wiki applications build on top.
When installing the !WikiWorkbenchContrib, you will get two new webs:
* Applications: the core of the !WikiWorkbench
* _WikiApplicationTemplate: an application template to bootstrap a new wiki app
You won't need to change these as they make up the infrastructure. Take care not to mix
up your own stuff with wiki applications coming from third parties. Instead, build up
a separate wiki application that won't be harmed when you have to upgrade third party applications
later.
---+++ Creating a new wiki application
The [[Applications.WebHome][Applications web]] is the starting point accessing and creating
all wiki applications. There's a button to create a new wiki application. And that's where we start.
1 Click on the button "New !WikiApplication".
1 Enter the name of your new wiki application, e.g. !MyCompanyApp (this must be a valid web name for Foswiki)
1 Enter a short description what this application is about.
1 Click "Submit".
This will create a new subweb under the Applications web, that is !Applications.MyCompanyApp in our example.
This newly created web is the container for all components part of this application. No part of the application
is located outside of this web.
In this sense a "wiki application" is the sum of all components stored in the
Applications subweb (!Applications.MyCompanyApp). You will be able to write and
maintain the wiki application by going to this web now.
When finishing or installing a wiki application, the additional features are made available in other
areas of your wiki site by a dedicated deployment step. The !WikiWorkbench infrastructure helps you
in doing so. For example, each !TopicType that you will create will have an Install button that
lets you establish a link between the area where you'd like to deploy the feature back to the
application itself.
---+++ Creating a new !TopicType
---+++ Deploying a !TopicType into a user web
---++ The !WikiWorkbench type hierarchy
The concept of "typed content" isn't new to Foswiki as a content management system. Many other
CMSes out there have a concrete notion of different document types depending on the
material that the site is going to host. If you are a programmer then types shouldn't be new
to you. They most commonly come as a class hierarchy or set of structured data definitions.
As we are dealing with topics, it is called <em>Topic</em>Types in Foswiki.
!TopicTypes make up a hierarchy with a kind of "IS A" relation between parent and child types.
So any child type inherits all structural properties of its parents. Parent topics can either
be abstract only to let your write wiki applications for sub types not yet in existence but
will inherit from this abstract parent topic some time later.
For example: given there's a !ContactsApp to model contact data for persons and organizations.
There are !TopicTypes "PersonTopic" and "OrganizationTopic". Both inherit from a "PartyTopic"
as a common root in your application. So both - persons and organizations - are a "party" with regards to the
rest of the wiki application.
<div class="jqTreeview foswikiRight" style="border:1px solid #bbb;padding:1em;margin:0 0 1em 1em;">
*Fragment of the type hierarchy:*
* !WikiTopic
* !TaggedTopic, !CategorizedTopic
* !ClassifiedTopic
* !PartyTopic
* !PersonTopic
* !OrganizationTopic
</div>
%JQREQUIRE{"treeview"}%
Furthermore, all !PartyTopics should be tagged and categorized, a feature being implemented in
a separate wiki application that comes with a !ClassifiedTopic type. The !ClassifiedTopic type
itself is implementing two features: that of !TaggedTopics and !CategorizedTopics. (footnote: these
!TopicTypes are part of the [[Foswiki:Extensions/ClassificationPlugin][ClassificationPlugin]])
All topic types finally are some kind of a !WikiTopic, which finally is the root of all content types
as definied in the !WikiWorkbench.
In Foswiki a !TopicType establishes a label for a specific kind of !DataForm to be used by
one or more wiki applications.
A wiki application is made up of different components that are used when deploying it to one or more
target webs...
---++ Installation Instructions
%$INSTALL_INSTRUCTIONS%
<!--
* Set SHORTDESCRIPTION = Framework for <nop>WikiApplications
-->
| Authors: | Foswiki:Main.MichaelDaum |
| Copyright ©: | 2007-2012 Michael Daum http://michaeldaumconsulting.com |
| License: | GPL ([[http://www.gnu.org/copyleft/gpl.html][GNU General Public License]]) |
| Version: | %$VERSION% |
| Release: | %$RELEASE% |
| Change History: | |
| 01 Mar 2012 | first public release |
| 30 Oct 2007 | first version in svn |
| 30 Apr 2007 | initial version |
| Dependencies: | %$DEPENDENCIES% |
| Perl Version: | - |
| Home: | Foswiki:Extensions/%TOPIC% |
| Support: | Foswiki:Support/%TOPIC% |