📄 gw_interface.lyx
字号:
#LyX 1.1 created this file. For more info see http://www.lyx.org/\lyxformat 218\textclass docbook\language english\inputencoding auto\fontscheme default\graphics default\paperfontsize default\spacing single \papersize Default\paperpackage a4\use_geometry 0\use_amsmath 0\paperorientation portrait\secnumdepth 3\tocdepth 3\paragraph_separation indent\defskip medskip\quotes_language english\quotes_times 2\papercolumns 1\papersides 1\paperpagestyle default\layout TitleProposal for a Common Groupware Interface Standard\layout Author(C) 2001-2004 Miles Lott <milos@groupwhere.org>\layout DateSeptember 13, 2001 and December 29, 2003\layout Standard\begin_inset LatexCommand \tableofcontents{}\end_inset \layout SectionScope\layout StandardAs many different opensource and freesoftware groupware systems are being developed, the full realization of the dream of a connected world should be prefaced by an agreement to interoperate. There are limited ways in which cooperation with these and commercial groupware systems may be achecived, the majority if not all of which were derived via the establishment of open standards. These might include email (POP3/IMAP), contacts(LDAP,vcard), or scheduling(ical/vcal). It is felt that while these have proven themselves to be very useful, they are insufficient to satisfy the real needs of a typical business environment.\layout StandardThis document hopes to provide a reasonable, if limited, recommendation for a set of standardized methods to be used for groupware services interaction. More specifically, it hopes to address the need for such a standard as well as to spur discussion about the common service names and methods themselves.\layout StandardExamples will be given for implementations in XML-RPC, since this standard is relatively fixed and open.\layout StandardThis document does not provide recommendations for the underlying access control system which would allow or deny a particular action.\layout StandardAlso not discussed here is login and authorization to be used for initial access to a service provider.\layout SectionThe Services\layout SubsectionOverview\layout StandardThere are a few common services types that will be needed for minimum useability of a groupware server or application. They are:\layout ItemizeContacts\layout ItemizeSchedule\layout ItemizeNotes\layout ItemizeTodo\layout StandardThese services are represented already in places such as existing groupware client-server applications and also in the PalmOS basic-4 buttons and applications. Different systems may have different names for these services internally, e.g. Contacts - addresses, addressbook, people, Schedule - calendar, agenda, meetings.\layout StandardWithin each of these services are some common methods that would be called to store, retreive, or update data:\layout Itemizeread_list\layout Itemizeread\layout Itemizesave\layout Itemizedelete\layout SubsectionDetail\layout SubsubsectionContacts\layout StandardThe concept of contacts may encompass local addressbooks, LDAP, and lists stored in other media. The purpose of the contacts service is not to duplicate or attempt to replace these. In some respects, it might do just that. But its goal is more so to provide a common and shareable way for the other core services to create, edit, and read a common user and address list. All of the other services may use the contact service to obtain record owner information to be used in access control. They would also use them when it is required to share this data, as with a meeting where other local and non-local users will be invited to attend.\layout StandardContacts may include the local installed user base, users on other cooperative servers, or email addresses used for limited cooperation with other groupware services that are not compliant with this service scheme or implementations thereof. It could also include individuals using web-based or local ISP email services. The scope of this document, however, is to define the service with regard to the common methods to be used for server-server and client-server communications:\layout Itemizeread_list\layout StandardThis method is used to list contacts, with or without limits, filters, or search criteria. In this way it can be used for simple lists or to search for contact records and their identifiers. The optional search criteria includes:\layout Enumeratestart - Start at this identifier (integer: default 0)\layout Enumeratelimit - Limit to this number of records returned(integer: unlimited by default)\layout Enumeratefieldlist - limit to showing only these fields (array: default to identifier, owner identifier, possibly firstname and lastname)\layout Enumeratefilter - Show records that are public or private only, or other system-specific filters, e.g group or company(string: default '')\layout Enumeratequery - Search internal fieldlist for a value (string: default '')\layout StandardThe return for this method includes:\layout Enumeratecount of number of records returned(integer)\layout Enumeratearray consisting of: array: identifier => (array: fieldlist key => value pairs)\layout Itemizeread\layout StandardOnce the identifier for a single contact record is known, the contact may be read for more detail using this method. This takes two parameters:\layout Enumerateidentifier - (integer: no default)\layout Enumeratefieldlist - limit to showing only these fields (array: default to identifier, owner identifier, possibly firstname and lastname)\layout StandardAnd returns:\layout Enumeratearray consisting of: array: identifier => (array: fieldlist key => value pairs)\layout Itemizesave\layout StandardThis is a method used to save an existing record or create a new one. If the identifier for an existing record is not passed, a new entry will be created.\layout Itemizedelete\layout StandardThis will allow deletion of a record by passing its identifier.\layout SubsubsectionSchedule\layout SubsubsectionNotes\layout SubsubsectionTodo\layout SubsectionExamples in XML-RPC\layout StandardQuery the contacts service for read_list, using only start and limit to grab the first 5 records, starting with identifier 1. Additionally, return only the firstname and lastname fields n_given and n_family (firstname and lastname in pseudo vcard format):\layout Code<methodCall>\layout Code<methodName>service.contacts.read_list</methodName>\layout Code<params>\layout Code<param>\layout Code<value><struct>\layout Code<member><name>start</name>\layout Code<value><string>1</string></value>\layout Code</member>\layout Code<member><name>limit</name>\layout Code<value><string>5</string></value>\layout Code</member>\layout Code<member><name>fields</name>\layout Code<value><struct>\layout Code<member><name>n_given</name>\layout Code<value><string>n_given</string></value>\layout Code</member>\layout Code<member><name>n_family</name>\layout Code<value><string>n_family</string></value>\layout Code</member>\layout Code</struct></value>\layout Code</member>\layout Code<member><name>query</name>\layout Code<value><string></string></value>\layout Code</member>\layout Code<member><name>filter</name>\layout Code<value><string></string></value>\layout Code</member>\layout Code</struct></value>\layout Code</param>\layout Code</params>\layout Code</methodCall>\layout SectionConclusion\layout StandardThis document outlined the following services and methods:\layout SubsectionContacts:\layout Itemizeservice.contacts.read_list([search criteria])\layout Itemizeservice.contacts.read(identifier,[fieldlist])\layout Itemizeservice.contacts.save(fields)\layout Itemizeservice.contacts.delete(identifier)\layout SubsectionSchedule:\layout Itemizeservice.schedule.read_list([search criteria])\layout Itemizeservice.schedule.read(identifier,[fieldlist])\layout Itemizeservice.schedule.save(fields)\layout Itemizeservice.schedule.delete(identifier)\layout SubsectionNotes:\layout Itemizeservice.notes.read_list([search criteria])\layout Itemizeservice.notes.read(identifier,[fieldlist])\layout Itemizeservice.notes.save(fields)\layout Itemizeservice.notes.delete(identifier)\layout SubsectionTodo:\layout Itemizeservice.todo.read_list(search criteria)\layout Itemizeservice.todo.read(identifer,[fieldlist])\layout Itemizeservice.todo.save(fields)\layout Itemizeservice.todo.delete(identifier)\the_end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -