View Javadoc

1   /**
2    * Copyright 2005-2014 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.rice.krms.api.repository;
17  
18  import org.kuali.rice.core.api.criteria.QueryByCriteria;
19  import org.kuali.rice.core.api.exception.RiceIllegalArgumentException;
20  import org.kuali.rice.krms.api.KrmsConstants;
21  import org.kuali.rice.krms.api.repository.agenda.AgendaDefinition;
22  import org.kuali.rice.krms.api.repository.agenda.AgendaItemDefinition;
23  import org.kuali.rice.krms.api.repository.language.NaturalLanguageUsage;
24  import org.kuali.rice.krms.api.repository.proposition.PropositionDefinition;
25  import org.kuali.rice.krms.api.repository.reference.ReferenceObjectBinding;
26  import org.kuali.rice.krms.api.repository.rule.RuleDefinition;
27  import org.springframework.cache.annotation.Cacheable;
28  
29  import javax.jws.WebMethod;
30  import javax.jws.WebParam;
31  import javax.jws.WebResult;
32  import javax.jws.WebService;
33  import javax.jws.soap.SOAPBinding;
34  import javax.xml.bind.annotation.XmlElement;
35  import javax.xml.bind.annotation.XmlElementWrapper;
36  import java.util.List;
37  import java.util.Set;
38  
39  /**
40   * The rule maintenance service operations facilitate management of rules and
41   * associated information.
42   *
43   * @author Kuali Rice Team (rice.collab@kuali.org)
44   */
45  @WebService(name = "ruleManagementService", targetNamespace = KrmsConstants.Namespaces.KRMS_NAMESPACE_2_0)
46  @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL,
47          parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
48  public interface RuleManagementService extends RuleRepositoryService {
49  
50      /**
51       * Create RefObject-KRMS object binding
52       *
53       * @param referenceObjectDefinition  data for the new ReferenceObjectBinding to be created
54       * @return newly created ReferenceObjectBinding
55       * @throws RiceIllegalArgumentException if the given referenceObjectDefinition
56       *                                      is null or invalid
57       */
58      @WebMethod(operationName = "createReferenceObjectBinding")
59      @WebResult(name = "referenceObjectBinding")
60      public ReferenceObjectBinding createReferenceObjectBinding(@WebParam(
61              name = "referenceObjectDefinition") ReferenceObjectBinding referenceObjectDefinition) throws RiceIllegalArgumentException;
62  
63      /**
64       * Retrieve referenceObjectBinding  given a specific id
65       *
66       * @param id identifier of the ReferenceObjectBinding to be retrieved
67       * @return a ReferenceObjectBinding with the given id value
68       * @throws RiceIllegalArgumentException if the given  id is blank or
69       *                                      invalid
70       */
71      @WebMethod(operationName = "getReferenceObjectBinding")
72      @WebResult(name = "referenceObjectBinding")
73      public ReferenceObjectBinding getReferenceObjectBinding(@WebParam(
74              name = "id") String id) throws RiceIllegalArgumentException;
75  
76      /**
77       * Retrieve list of ReferenceObjectBinding objects given ids
78       *
79       * @param ids identifiers of the ReferenceObjectBinding to be retrieved
80       * @return list of ReferenceObjectBinding objects for the given ids
81       * @throws RiceIllegalArgumentException if one or more ids in the give list
82       *                                      is blank or invalid
83       */
84      @WebMethod(operationName = "getReferenceObjectBindings")
85      @XmlElementWrapper(name = "referenceObjectBindings", required = true)
86      @XmlElement(name = "referenceObjectBinding", required = false)
87      @WebResult(name = "referenceObjectBindings")
88      List<ReferenceObjectBinding> getReferenceObjectBindings(@WebParam(
89              name = "ids") List<String> ids) throws RiceIllegalArgumentException;
90  
91      /**
92       * Retrieves list of ReferenceObjectBinding objects for the given ref obj
93       * discriminator type
94       *
95       * @param referenceObjectReferenceDiscriminatorType  reference object type
96       * @return list of ReferenceObjectBinding objects for the given discriminator
97       *         type
98       * @throws RiceIllegalArgumentException if the given  referenceObjectReferenceDiscriminatorType is
99       *                                      blank or invalid
100      */
101     @WebMethod(operationName = "findReferenceObjectBindingsByReferenceDiscriminatorType")
102     @XmlElementWrapper(name = "referenceObjectBindings", required = true)
103     @XmlElement(name = "referenceObjectBinding", required = false)
104     @WebResult(name = "referenceObjectBindings")
105     public List<ReferenceObjectBinding> findReferenceObjectBindingsByReferenceDiscriminatorType(
106             @WebParam(name = "referenceObjectReferenceDiscriminatorType") String referenceObjectReferenceDiscriminatorType) throws RiceIllegalArgumentException;
107 
108     /**
109      * Retrieves list of ReferenceObjectBinding objects for the given krms obj
110      * discriminator type
111      *
112      * @param referenceObjectKrmsDiscriminatorType  reference object type
113      * @return list of ReferenceObjectBinding objects for the given discriminator
114      *         type
115      * @throws RiceIllegalArgumentException if the given  referenceObjectKrmsDiscriminatorType is
116      *                                      blank or invalid
117      */
118     @WebMethod(operationName = "findReferenceObjectBindingsByKrmsDiscriminatorType")
119     @XmlElementWrapper(name = "referenceObjectBindings", required = true)
120     @XmlElement(name = "referenceObjectBinding", required = false)
121     @WebResult(name = "referenceObjectBindings")
122     public List<ReferenceObjectBinding> findReferenceObjectBindingsByKrmsDiscriminatorType(
123             @WebParam(name = "referenceObjectKrmsDiscriminatorType") String referenceObjectKrmsDiscriminatorType) throws RiceIllegalArgumentException;
124 
125 
126     /**
127      * Retrieves list of ReferenceObjectBinding objects for the given KRMS obj
128      * id.
129      *
130      * @param krmsObjectId identifier of the KRMS obj
131      * @return list of ReferenceObjectBinding objects for the given KRMS obj
132      * @throws RiceIllegalArgumentException if the given krmsObjectId is blank or
133      *                                      invalid
134      */
135     @WebMethod(operationName = "findReferenceObjectBindingsByKrmsObjectId")
136     @XmlElementWrapper(name = "referenceObjectBindings", required = true)
137     @XmlElement(name = "referenceObjectBinding", required = false)
138     @WebResult(name = "referenceObjectBindings")
139     public List<ReferenceObjectBinding> findReferenceObjectBindingsByKrmsObject(
140             @WebParam(name = "krmsObjectId") String krmsObjectId) throws RiceIllegalArgumentException;
141 
142     /**
143      * Update the ReferenceObjectBinding object specified by the identifier in the
144      * given DTO
145      *
146      * @param referenceObjectBindingDefinition DTO with updated info and id of the object to be updated
147      * @throws RiceIllegalArgumentException if the given  referenceObjectBindingDefinition
148      *                                      is null or invalid
149      */
150     @WebMethod(operationName = "updateReferenceObjectBinding")
151     public void updateReferenceObjectBinding(ReferenceObjectBinding referenceObjectBindingDefinition) throws RiceIllegalArgumentException;
152 
153     /**
154      * Delete the specified ReferenceObjectBinding object
155      *
156      * @param id identifier of the object to be deleted
157      * @throws RiceIllegalArgumentException if the given  id is null or invalid
158      */
159     @WebMethod(operationName = "deleteReferenceObjectBinding")
160     public void deleteReferenceObjectBinding(@WebParam(name = "id") String id) throws RiceIllegalArgumentException;
161 
162 
163     /**
164      * Query for ReferenceObjectBinding ids based on the given search criteria
165      * which is a Map of ReferenceObjectBinding field names to values. <p/> <p>
166      * This method returns it's results as a List of ReferenceObjectBinding ids
167      * that match the given search criteria. </p>
168      *
169      * @param queryByCriteria the criteria.  Cannot be null.
170      * @return a list of ids matching the given criteria properties.  An empty
171      *         list is returned if an invalid or non-existent criteria is
172      *         supplied.
173      * @throws RiceIllegalArgumentException if the queryByCriteria is null
174      */
175     @WebMethod(operationName = "findReferenceObjectBindingIds")
176     @XmlElementWrapper(name = "referenceObjectBindingIds", required = true)
177     @XmlElement(name = "referenceObjectBindingId", required = false)
178     @WebResult(name = "referenceObjectBindingIds")
179     List<String> findReferenceObjectBindingIds(@WebParam(name = "query") QueryByCriteria queryByCriteria) throws RiceIllegalArgumentException;
180 
181     /**
182      * Create Agenda
183      *
184      * @param agendaDefinition data for the new Agenda to be created
185      * @return newly created Agenda
186      * @throws RiceIllegalArgumentException if the given agendaDefinition is
187      *                                      null or invalid
188      */
189     @WebMethod(operationName = "createAgenda")
190     @WebResult(name = "agenda")
191     public AgendaDefinition createAgenda(@WebParam(name = "AgendaDefinition") AgendaDefinition agendaDefinition) throws RiceIllegalArgumentException;
192 
193     /**
194      * Retrieve Agenda for the specified id
195      *
196      * @param id identifier for the Agenda
197      * @return specified Agenda
198      * @throws RiceIllegalArgumentException if the given id is null or invalid
199      */
200     @WebMethod(operationName = "getAgenda")
201     @WebResult(name = "agenda")
202     public AgendaDefinition getAgenda(@WebParam(name = "id") String id) throws RiceIllegalArgumentException;
203 
204     /**
205      * Retrieve Agendas of the specified type
206      *
207      * @param typeId type of the Agenda
208      * @return list of Agendas of the specified type
209      * @throws RiceIllegalArgumentException if the given typeId is null or
210      *                                      invalid
211      */
212     @WebMethod(operationName = "getAgendasByType")
213     @XmlElementWrapper(name = "agendas", required = true)
214     @XmlElement(name = "agenda", required = false)
215     @WebResult(name = "agendas")
216     public List<AgendaDefinition> getAgendasByType(@WebParam(name = "typeId") String typeId) throws RiceIllegalArgumentException;
217 
218     /**
219      * Retrieve Agendas associated with the specified context
220      *
221      * @param contextId  context of interest
222      * @return list of Agendas associated with the context
223      * @throws RiceIllegalArgumentException if the given contextId is null or
224      *                                      invalid
225      */
226     @WebMethod(operationName = "getAgendasByContext")
227     @XmlElementWrapper(name = "agendas", required = true)
228     @XmlElement(name = "agenda", required = false)
229     @WebResult(name = "agendas")
230     public List<AgendaDefinition> getAgendasByContext(@WebParam(name = "contextId") String contextId) throws RiceIllegalArgumentException;
231 
232     /**
233      * Retrieve Agendas of the specified type and context
234      *
235      * @param typeId  type of the Agenda
236      * @param contextId  context of interest
237      * @return list of Agendas associated with the specified type and context
238      * @throws RiceIllegalArgumentException if the given typeId or contextId
239      *                                      null or invalid
240      */
241     @WebMethod(operationName = "getAgendasByTypeAndContext")
242     @XmlElementWrapper(name = "agendas", required = true)
243     @XmlElement(name = "agenda", required = false)
244     @WebResult(name = "agendas")
245     public List<AgendaDefinition> getAgendasByTypeAndContext(@WebParam(name = "typeId") String typeId,
246             @WebParam(name = "contextId") String contextId) throws RiceIllegalArgumentException;
247 
248     /**
249      * Update the Agenda specified by the identifier in the input DTO
250      *
251      * @param agendaDefinition DTO with updated info and identifier of the object to be updated
252      * @throws RiceIllegalArgumentException if the given agendaDefinition is
253      *                                      null or invalid
254      */
255     @WebMethod(operationName = "updateAgenda")
256     public void updateAgenda(@WebParam(name = "agendaDefinition") AgendaDefinition agendaDefinition) throws RiceIllegalArgumentException;
257 
258     /**
259      * Delete the specified Agenda
260      *
261      * @param id identifier of the object to be deleted
262      * @throws RiceIllegalArgumentException if the given id is null or invalid
263      */
264     @WebMethod(operationName = "deleteAgenda")
265     public void deleteAgenda(@WebParam(name = "id") String id) throws RiceIllegalArgumentException;
266 
267     /**
268      * Create AgendaItem
269      *
270      * @param agendaItemDefinition  data for the new AgendaItem to be created
271      * @return newly created AgendaItem
272      * @throws RiceIllegalArgumentException if the given agendaItemDefinition is
273      *                                      null or invalid
274      */
275     @WebMethod(operationName = "createAgendaItem")
276     @WebResult(name = "agendaItem")
277     public AgendaItemDefinition createAgendaItem(@WebParam(name = "AgendaItemDefinition") AgendaItemDefinition agendaItemDefinition) throws RiceIllegalArgumentException;
278 
279     /**
280      * Retrieve AgendaItem by the specified identifier
281      *
282      * @param id identifier of the AgendaItem
283      * @return AgendaItem specified by the identifier
284      * @throws RiceIllegalArgumentException if the given id is null or invalid
285      */
286     @WebMethod(operationName = "getAgendaItem")
287     @WebResult(name = "agendaItem")
288     public AgendaItemDefinition getAgendaItem(@WebParam(name = "id") String id) throws RiceIllegalArgumentException;
289 
290     /**
291      * Retrieve AgendaItems by specified type
292      *
293      * @param typeId type of the AgendaItems
294      * @return list of AgendaItems of the specified type
295      * @throws RiceIllegalArgumentException if the given typeId is null or
296      *                                      invalid
297      */
298     @WebMethod(operationName = "getAgendaItemsByType")
299     @XmlElementWrapper(name = "agendaItems", required = true)
300     @XmlElement(name = "agendaItem", required = false)
301     @WebResult(name = "agendaItems")
302     public List<AgendaItemDefinition> getAgendaItemsByType(@WebParam(name = "typeId") String typeId) throws RiceIllegalArgumentException;
303 
304     /**
305      * Retrieve AgendaItems associated with a context
306      *
307      * @param contextId context identifier
308      * @return list of AgendaItems associated with a context
309      * @throws RiceIllegalArgumentException if the given  contextId is null or
310      *                                      invalid
311      */
312     @WebMethod(operationName = "getAgendaItemsByContext")
313     @XmlElementWrapper(name = "agendaItems", required = true)
314     @XmlElement(name = "agendaItem", required = false)
315     @WebResult(name = "agendaItems")
316     public List<AgendaItemDefinition> getAgendaItemsByContext(@WebParam(name = "contextId") String contextId) throws RiceIllegalArgumentException;
317 
318     /**
319      * Retrieve AgendaItems by type and context
320      *
321      * @param typeId type of the Agendas
322      * @param contextId context with which the Agendas are associated
323      * @return list of AgendaItems of the specified type and context
324      * @throws RiceIllegalArgumentException if the given  typeId or contextId
325      *                                      null or invalid
326      */
327     @WebMethod(operationName = "getAgendaItemsByTypeAndContext")
328     @XmlElementWrapper(name = "agendaItems", required = true)
329     @XmlElement(name = "agendaItem", required = false)
330     @WebResult(name = "agendaItems")
331     public List<AgendaItemDefinition> getAgendaItemsByTypeAndContext(@WebParam(name = "typeId") String typeId,
332             @WebParam(name = "contextId") String contextId) throws RiceIllegalArgumentException;
333 
334     /**
335      * Update an AgendaItem
336      *
337      * @param agendaItemDefinition  updated data for the AgendaItem, with id of the object to be updated
338      * @throws RiceIllegalArgumentException if the given  agendaItemDefinition
339      *                                      is null or invalid
340      */
341     @WebMethod(operationName = "updateAgendaItem")
342     public void updateAgendaItem(@WebParam(name = "agendaItemDefinition") AgendaItemDefinition agendaItemDefinition) throws RiceIllegalArgumentException;
343 
344     /**
345      * Delete the specified AgendaItem
346      *
347      * @param id identifier of the AgendaItem to be deleted
348      * @throws RiceIllegalArgumentException if the given id is null or invalid
349      */
350     @WebMethod(operationName = "deleteAgendaItem")
351     public void deleteAgendaItem(@WebParam(name = "id") String id) throws RiceIllegalArgumentException;
352 
353 
354     /**
355      * Create Rule
356      *
357      * @param ruleDefinition data for the new Rule to be created
358      * @return newly created Rule
359      * @throws RiceIllegalArgumentException if the given ruleDefinition is null
360      *                                      or invalid
361      */
362     @WebMethod(operationName = "createRule")
363     @WebResult(name = "rule")
364     public RuleDefinition createRule(@WebParam(name = "ruleDefinition") RuleDefinition ruleDefinition) throws RiceIllegalArgumentException;
365 
366     /**
367      * Retrieves the rule for the given ruleId.  The rule includes the
368      * propositions which define the condition that is to be evaluated on the
369      * rule.  It also defines a collection of actions which will be invoked if
370      * the rule succeeds.
371      *
372      * @param ruleId the id of the rule to retrieve
373      * @return the rule definition, or null if no rule could be located for the
374      *         given ruleId
375      * @throws IllegalArgumentException if the given ruleId is null
376      */
377     @WebMethod(operationName = "getRule")
378     @WebResult(name = "rule")
379     @Cacheable(value = RuleDefinition.Cache.NAME, key = "'ruleId=' + #p0")
380     public RuleDefinition getRule(@WebParam(name = "ruleId") String ruleId);
381 
382     /**
383      * Retrieves all of the rules for the given list of ruleIds.  The rule
384      * includes the propositions which define the condition that is to be
385      * evaluated on the rule.  It also defines a collection of actions which
386      * will be invoked if the rule succeeds.
387      * <p/>
388      * <p>The list which is returned from this operation may not be the same
389      * size as the list which is passed to this method.  If a rule doesn't exist
390      * for a given rule id then no result for that id will be returned in the
391      * list.  As a result of this, the returned list can be empty, but it will
392      * never be null.
393      *
394      * @param ruleIds the list of rule ids for which to retrieve the rules
395      * @return the list of rules for the given ids, this list will only contain
396      *         rules for the ids that were resolved successfully, it will never
397      *         return null but could return an empty list if no rules could be
398      *         loaded for the given set of ids
399      * @throws IllegalArgumentException if the given list of ruleIds is null
400      */
401     @WebMethod(operationName = "getRules")
402     @XmlElementWrapper(name = "rules", required = true)
403     @XmlElement(name = "rule", required = false)
404     @WebResult(name = "rules")
405     public List<RuleDefinition> getRules(@WebParam(name = "ruleIds") List<String> ruleIds);
406 
407     /**
408      * Update the Rule specified by the identifier in the DTO
409      *
410      * @param ruleDefinition updated Rule information, object specified by the id
411      * @throws RiceIllegalArgumentException if the given ruleDefinition is null
412      *                                      or invalid
413      */
414     @WebMethod(operationName = "updateRule")
415     public void updateRule(@WebParam(name = "ruleDefinition") RuleDefinition ruleDefinition) throws RiceIllegalArgumentException;
416 
417     /**
418      * Delete the specified Rule
419      *
420      * @param id identifier of the Rule to be deleted
421      * @throws RiceIllegalArgumentException if the given id is null or invalid
422      */
423     @WebMethod(operationName = "deleteRule")
424     public void deleteRule(@WebParam(name = "id") String id) throws RiceIllegalArgumentException;
425 
426     /**
427      * Create a Proposition
428      *
429      * @param propositionDefinition data for the new Proposition to be created
430      * @return newly created Proposition
431      * @throws RiceIllegalArgumentException if the given propositionDefinition
432      *                                      is null or invalid
433      */
434     @WebMethod(operationName = "createProposition")
435     @WebResult(name = "proposition")
436     public PropositionDefinition createProposition(@WebParam(name = "propositionDefinition") PropositionDefinition propositionDefinition) throws RiceIllegalArgumentException;
437 
438     /**
439      * Retrieve Proposition specified by the identifier
440      *
441      * @param id identifier of the Proposition to be retrieved
442      * @return specified Proposition
443      * @throws RiceIllegalArgumentException if the given id is null or invalid
444      */
445     @WebMethod(operationName = "getProposition")
446     @WebResult(name = "proposition")
447     public PropositionDefinition getProposition(@WebParam(name = "id") String id) throws RiceIllegalArgumentException;
448 
449     /**
450      * Retrieve Propositions of the specified type
451      *
452      * @param typeId type of the Propositions to be retrieved
453      * @return list of Propositions of the specified type
454      * @throws RiceIllegalArgumentException if the given typeId is null or
455      *                                      invalid
456      */
457     @WebMethod(operationName = "getPropositionsByType")
458     @XmlElementWrapper(name = "propositions", required = true)
459     @XmlElement(name = "proposition", required = false)
460     @WebResult(name = "propositions")
461     public Set<PropositionDefinition> getPropositionsByType(@WebParam(name = "typeId") String typeId) throws RiceIllegalArgumentException;
462 
463     /**
464      * Retrieve Propositions associated with the specified Rule
465      *
466      * @param ruleId identifier of the Rule to which the Propositions are associated with
467      * @return list of Propositions associated with the Rule
468      * @throws RiceIllegalArgumentException if the given ruleId is null or
469      *                                      invalid
470      */
471     @WebMethod(operationName = "getPropositionsByRule")
472     @XmlElementWrapper(name = "propositions", required = true)
473     @XmlElement(name = "proposition", required = false)
474     @WebResult(name = "propositions")
475     public Set<PropositionDefinition> getPropositionsByRule(@WebParam(name = "ruleId") String ruleId) throws RiceIllegalArgumentException;
476 
477     /**
478      * Update the Proposition
479      *
480      * @param propositionDefinition updated data for the Proposition, id specifies the object to be updated
481      * @throws RiceIllegalArgumentException if the given propositionDefinition
482      *                                      is null or invalid
483      */
484     @WebMethod(operationName = "updateProposition")
485     public void updateProposition(
486             @WebParam(name = "propositionDefinition") PropositionDefinition propositionDefinition) throws RiceIllegalArgumentException;
487 
488     /**
489      * Delete the Proposition
490      *
491      * @param id identifier of the Proposition to be deleted
492      * @throws RiceIllegalArgumentException if the given id is null or invalid
493      */
494     @WebMethod(operationName = "deleteProposition")
495     public void deleteProposition(@WebParam(name = "id") String id) throws RiceIllegalArgumentException;
496 
497     /**
498      * Create NaturalLanguageUsage
499      *
500      * @param naturalLanguageUsage data for the new NaturalLanguageUsage to be created
501      * @return newly created NaturalLanguageUsage
502      * @throws RiceIllegalArgumentException if the given naturalLanguageUsage is
503      *                                      null or invalid
504      */
505     @WebMethod(operationName = "createNaturalLanguageUsage")
506     @WebResult(name = "naturalLanguageUsage")
507     public NaturalLanguageUsage createNaturalLanguageUsage(@WebParam(name = "naturalLanguageUsage") NaturalLanguageUsage naturalLanguageUsage) throws RiceIllegalArgumentException;
508 
509     /**
510      * Retrieve NaturalLanguageUsage specified by the identifier
511      *
512      * @param id identifier of the NaturalLanguageUsage to be retrieved
513      * @return NaturalLanguageUsage specified by the identifier
514      * @throws RiceIllegalArgumentException if the given id is null or invalid
515      */
516     @WebMethod(operationName = "getNaturalLanguageUsage")
517     @WebResult(name = "naturalLanguageUsage")
518     public NaturalLanguageUsage getNaturalLanguageUsage(@WebParam(name = "id") String id) throws RiceIllegalArgumentException;
519 
520     /**
521      * Update NaturalLanguageUsage
522      *
523      * @param naturalLanguageUsage updated data for the NaturalLanguageUsage object specified by the id
524      * @throws RiceIllegalArgumentException if the given naturalLanguageUsage is
525      *                                      null or invalid
526      */
527     @WebMethod(operationName = "updateNaturalLanguageUsage")
528     public void updateNaturalLanguageUsage(@WebParam(name = "naturalLanguageUsage") NaturalLanguageUsage naturalLanguageUsage) throws RiceIllegalArgumentException;
529 
530     /**
531      * Delete NaturalLanguageUsage
532      *
533      * @param naturalLanguageUsageId  identifier of the NaturalLanguageUsage to be deleted
534      * @throws RiceIllegalArgumentException  if the given naturalLanguageUsageId is null or invalid
535      */
536     @WebMethod(operationName = "deleteNaturalLanguageUsageType")
537     public void deleteNaturalLanguageUsageType(@WebParam(name = "naturalLanguageUsageId") String naturalLanguageUsageId) throws RiceIllegalArgumentException;
538 
539     /**
540      * Translates and retrieves a NaturalLanguage for a given KRMS object (e.g, proposition
541      * or agenda), NaturalLanguage usage type (context) and language into natural language
542      * TODO: Add appropriate caching annotation
543      *
544      * @param naturalLanguageUsageId Natural language usage information
545      * @param typeId    KRMS object type id (for example, could refer to agenda
546      *                  or proposition)
547      * @param krmsObjectId KRMS object identifier
548      * @param languageCode  desired
549      * @return natural language corresponding to the NaturalLanguage usage, KRMS object id, KRMS object type and desired language
550      * @throws RiceIllegalArgumentException if the given naturalLanguageUsageId, typeId,
551      *                                      krmsObjectId or language is null or
552      *                                      invalid
553      */
554     @WebMethod(operationName = "getNaturalLanguageForType")
555     @WebResult(name = "naturalLanguage")
556     public String getNaturalLanguageForType(@WebParam(name = "naturalLanguageUsageId") String naturalLanguageUsageId, @WebParam(name = "typeId") String typeId, @WebParam(name = "krmsObjectId") String krmsObjectId,
557             @WebParam(name = "languageCode") String languageCode) throws RiceIllegalArgumentException;
558 
559     /**
560      * Retrieve all the NaturalLanguageUsages
561      *
562      * @return list of NaturalLanguageUsages
563      */
564     @WebMethod(operationName = "getNaturalLanguageUsages")
565     @XmlElementWrapper(name = "naturalLanguageUsages", required = true)
566     @XmlElement(name = "naturalLanguageUsage", required = false)
567     @WebResult(name = "naturalLanguageUsages")
568     public Set<NaturalLanguageUsage> getNaturalLanguageUsages();
569 }