2009-08-30 7 views
0

J'ai été les services Web RESTful d'O'Reilly ce week-end et je n'arrive pas à trouver une explication du moment où un client souhaiterait lancer un processus métier sur un serveur. Par exemple, je veux démarrer des tâches administratives sur un hôte donné dans une entreprise, alors quel verbe dans HTTP tomberait-il sous cette catégorie? Je pense que ce serait un POST (p) (POST surchargé) où je construis une requête XML dans le corps de la requête HTTP qui dit "Exécuter le travail X pour le système Y avec le paramètre Z.". Est-ce que quelqu'un peut confirmer que cela est toujours conforme à REST?Exécution de processus métier avec REST

Merci, Martin

+0

En y réfléchissant un peu plus, mon idée là-bas sent la fuite de RPC. Je pense qu'il serait mieux d'envisager une ressource supplémentaire sur le service, quelque chose comme un planificateur, que je POST une requête de démarrage de travail, qui le place peut-être dans une usine de planification de travail dans le service qui détermine quand/comment démarrer le travail (détails d'exemple là). N'importe qui? –

Répondre

1

Tant que vous traitez la demande d'emploi en tant que ressource, le résultat peut être complètement RESTful. Par POSTing à une collection de demandes de travail, vous pouvez créer une ressource de demande de travail en tant qu'enfant de cette collection. Vous devez affecter une forme d'identification à la demande de travail afin de pouvoir renvoyer une URL dans l'en-tête Location de la réponse POST. En faisant un GET sur cette URL, vous pouvez voir l'état actuel de la demande de travail. Lorsque le travail est terminé, vous pouvez ajouter un lien vers la demande de travail à suivre pour voir les résultats du travail.

+0

Merci Darrel :), je ne pensais pas tenir la demande d'emploi pour des raisons d'adressabilité, c'est toujours une bonne chose. –

+0

Comment pouvons-nous le faire de manière RESTful si nous voulons convertir une ressource à l'autre, le traiter comme le même processus d'affaires. – JPReddy

+0

@JReddy Si je comprends votre question, essayez de faire quelque chose comme 'POST/FooResources? Source =/BarResource/25' qui crée un FooResource en utilisant une BarResource comme entrée. Vous pouvez également POSTER une représentation d'une BarResource en tant que corps de la requête. –

Questions connexes