Index: openacs-4/packages/acs-service-contract/tcl/contract-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-service-contract/tcl/contract-procs.tcl,v diff -u -N -r1.2.2.1 -r1.2.2.2 --- openacs-4/packages/acs-service-contract/tcl/contract-procs.tcl 5 Mar 2003 14:52:43 -0000 1.2.2.1 +++ openacs-4/packages/acs-service-contract/tcl/contract-procs.tcl 13 May 2003 12:14:37 -0000 1.2.2.2 @@ -39,8 +39,80 @@ ad_proc -public acs_sc::contract::new_from_spec { {-spec:required} } { - Takes a complete notification spec and parses the - name, description and operations + Takes a complete service contract specification and creates the new service contract. + +
+ + The spec looks like this: + +
+ + Here's the detailed explanation: + ++ set spec { + name "Action_SideEffect" + description "Get the name of the side effect to create action" + operations { + GetObjectTypes { + description "Get the object types for which this implementation is valid." + output { object_types:string,multiple } + iscachable_p "t" + } + GetPrettyName { + description "Get the pretty name of this implementation." + output { pretty_name:string } + iscachable_p "t" + } + DoSideEffect { + description "Do the side effect" + input { + case_id:integer + object_id:integer + action_id:integer + entry_id:integer + } + } + } + } + + acs_sc::contract::new_from_spec -spec $spec +
+ + The spec should be an array-list with 3 entries: + +
+ + The format of the 'input' and 'output' specs is a Tcl list of parameter specs, + each of which consist of name, colon (:), + datatype plus an optional comma (,) and the flag 'multiple'. + + + @param spec The service contract specification as described above. + + @return The contract_id of the newly created service contract. + + @see util_memoize + @see acs_sc::invoke + } { # Default values Index: openacs-4/packages/acs-service-contract/tcl/implementation-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-service-contract/tcl/implementation-procs.tcl,v diff -u -N -r1.2.2.1 -r1.2.2.2 --- openacs-4/packages/acs-service-contract/tcl/implementation-procs.tcl 5 Mar 2003 14:52:43 -0000 1.2.2.1 +++ openacs-4/packages/acs-service-contract/tcl/implementation-procs.tcl 13 May 2003 12:14:37 -0000 1.2.2.2 @@ -46,9 +46,47 @@ ad_proc -public acs_sc::impl::new_from_spec { {-spec:required} } { - Add new service contract implementation from an array-list style implementation. + Add new service contract implementation from an array-list style implementation, + and binds it to the specified contract. - @return the ID of the new implementation +
+ + The specification takes the following form: + +
+ + And here's the explanation: + ++ set spec { + contract_name "Action_SideEffect" + owner "bug-tracker" + name "CaptureResolutionCode" + aliases { + GetObjectType bug_tracker::bug::object_type + GetPrettyName bug_tracker::bug::capture_resolution_code::pretty_name + DoSideEffect bug_tracker::bug::capture_resolution_code::do_side_effect + } + } + acs_sc::impl::new_from_spec -spec $spec +
+ + The spec is an array-list with the following entries: + +