[ Index ] |
|
Code source de eGroupWare 1.2.106-2 |
1 2 3 Proposal for a Common Groupware Interface Standard 4 5 (C) 2001-2004 Miles Lott <milos@groupwhere.org> 6 7 September 13, 2001 and December 29, 2003 8 9 Table of Contents 10 11 1 Scope 12 2 The Services 13 2.1 Overview 14 2.2 Detail 15 2.2.1 Contacts 16 2.2.2 Schedule 17 2.2.3 Notes 18 2.2.4 Todo 19 2.3 Examples in XML-RPC 20 3 Conclusion 21 3.1 Contacts: 22 3.2 Schedule: 23 3.3 Notes: 24 3.4 Todo: 25 26 27 28 1 Scope 29 30 As many different opensource and freesoftware groupware systems 31 are being developed, the full realization of the dream of 32 a connected world should be prefaced by an agreement to 33 interoperate. There are limited ways in which cooperation 34 with these and commercial groupware systems may be achecived, 35 the majority if not all of which were derived via the establishment 36 of open standards. These might include email (POP3/IMAP), 37 contacts(LDAP,vcard), or scheduling(ical/vcal). It is felt 38 that while these have proven themselves to be very useful, 39 they are insufficient to satisfy the real needs of a typical 40 business environment. 41 42 This document hopes to provide a reasonable, if limited, 43 recommendation for a set of standardized methods to be used 44 for groupware services interaction. More specifically, it 45 hopes to address the need for such a standard as well as 46 to spur discussion about the common service names and methods 47 themselves. 48 49 Examples will be given for implementations in XML-RPC, since 50 this standard is relatively fixed and open. 51 52 This document does not provide recommendations for the underlying 53 access control system which would allow or deny a particular 54 action. 55 56 Also not discussed here is login and authorization to be 57 used for initial access to a service provider. 58 59 2 The Services 60 61 2.1 Overview 62 63 There are a few common services types that will be needed 64 for minimum useability of a groupware server or application. 65 They are: 66 67 * Contacts 68 69 * Schedule 70 71 * Notes 72 73 * Todo 74 75 These services are represented already in places such as 76 existing groupware client-server applications and also in 77 the PalmOS basic-4 buttons and applications. Different systems 78 may have different names for these services internally, 79 e.g. Contacts - addresses, addressbook, people, Schedule 80 - calendar, agenda, meetings. 81 82 Within each of these services are some common methods that 83 would be called to store, retreive, or update data: 84 85 * read_list 86 87 * read 88 89 * save 90 91 * delete 92 93 2.2 Detail 94 95 2.2.1 Contacts 96 97 The concept of contacts may encompass local addressbooks, 98 LDAP, and lists stored in other media. The purpose of the 99 contacts service is not to duplicate or attempt to replace 100 these. In some respects, it might do just that. But its 101 goal is more so to provide a common and shareable way for 102 the other core services to create, edit, and read a common 103 user and address list. All of the other services may use 104 the contact service to obtain record owner information to 105 be used in access control. They would also use them when 106 it is required to share this data, as with a meeting where 107 other local and non-local users will be invited to attend. 108 109 Contacts may include the local installed user base, users 110 on other cooperative servers, or email addresses used for 111 limited cooperation with other groupware services that are 112 not compliant with this service scheme or implementations 113 thereof. It could also include individuals using web-based 114 or local ISP email services. The scope of this document, 115 however, is to define the service with regard to the common 116 methods to be used for server-server and client-server communications: 117 118 * read_list 119 120 This method is used to list contacts, with or without limits, 121 filters, or search criteria. In this way it can be used 122 for simple lists or to search for contact records and their 123 identifiers. The optional search criteria includes: 124 125 1. start - Start at this identifier (integer: default 0) 126 127 2. limit - Limit to this number of records returned(integer: 128 unlimited by default) 129 130 3. fieldlist - limit to showing only these fields (array: 131 default to identifier, owner identifier, possibly firstname 132 and lastname) 133 134 4. filter - Show records that are public or private only, 135 or other system-specific filters, e.g group or company(string: 136 default '') 137 138 5. query - Search internal fieldlist for a value (string: 139 default '') 140 141 The return for this method includes: 142 143 1. count of number of records returned(integer) 144 145 2. array consisting of: array: identifier => (array: fieldlist 146 key => value pairs) 147 148 * read 149 150 Once the identifier for a single contact record is known, 151 the contact may be read for more detail using this method. 152 This takes two parameters: 153 154 1. identifier - (integer: no default) 155 156 2. fieldlist - limit to showing only these fields (array: 157 default to identifier, owner identifier, possibly firstname 158 and lastname) 159 160 And returns: 161 162 1. array consisting of: array: identifier => (array: fieldlist 163 key => value pairs) 164 165 * save 166 167 This is a method used to save an existing record or create 168 a new one. If the identifier for an existing record is not 169 passed, a new entry will be created. 170 171 * delete 172 173 This will allow deletion of a record by passing its identifier. 174 175 2.2.2 Schedule 176 177 2.2.3 Notes 178 179 2.2.4 Todo 180 181 2.3 Examples in XML-RPC 182 183 Query the contacts service for read_list, using only start 184 and limit to grab the first 5 records, starting with identifier 185 1. Additionally, return only the firstname and lastname 186 fields n_given and n_family (firstname and lastname in pseudo 187 vcard format): 188 189 <methodCall> 190 191 <methodName>service.contacts.read_list</methodName> 192 193 <params> 194 195 <param> 196 197 <value><struct> 198 199 <member><name>start</name> 200 201 <value><string>1</string></value> 202 203 </member> 204 205 <member><name>limit</name> 206 207 <value><string>5</string></value> 208 209 </member> 210 211 <member><name>fields</name> 212 213 <value><struct> 214 215 <member><name>n_given</name> 216 217 <value><string>n_given</string></value> 218 219 </member> 220 221 <member><name>n_family</name> 222 223 <value><string>n_family</string></value> 224 225 </member> 226 227 </struct></value> 228 229 </member> 230 231 <member><name>query</name> 232 233 <value><string></string></value> 234 235 </member> 236 237 <member><name>filter</name> 238 239 <value><string></string></value> 240 241 </member> 242 243 </struct></value> 244 245 </param> 246 247 </params> 248 249 </methodCall> 250 251 3 Conclusion 252 253 This document outlined the following services and methods: 254 255 3.1 Contacts: 256 257 * service.contacts.read_list([search criteria]) 258 259 * service.contacts.read(identifier,[fieldlist]) 260 261 * service.contacts.save(fields) 262 263 * service.contacts.delete(identifier) 264 265 3.2 Schedule: 266 267 * service.schedule.read_list([search criteria]) 268 269 * service.schedule.read(identifier,[fieldlist]) 270 271 * service.schedule.save(fields) 272 273 * service.schedule.delete(identifier) 274 275 3.3 Notes: 276 277 * service.notes.read_list([search criteria]) 278 279 * service.notes.read(identifier,[fieldlist]) 280 281 * service.notes.save(fields) 282 283 * service.notes.delete(identifier) 284 285 3.4 Todo: 286 287 * service.todo.read_list(search criteria) 288 289 * service.todo.read(identifer,[fieldlist]) 290 291 * service.todo.save(fields) 292 293 * service.todo.delete(identifier)
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 17:20:01 2007 | par Balluche grâce à PHPXref 0.7 |