22import json
33import os
44import urllib
5+ import uuid
56
67from .abstracts .workflow import Workflow
78from .exceptions import InvalidArgumentError
@@ -24,6 +25,7 @@ class Client(metaclass=Singleton):
2425 APP_ID = 'app_id' # Parameter name for the application ID
2526 API_TOKEN = 'api_token' # Parameter name for the API token
2627
28+ ATTR_INTENT_ID = 'intent_id' # Parameter name for intent_id
2729 ATTR_ID = 'custom_id' # Parameter name for custom ids
2830 ATTR_NAME = 'name' # Parameter name for workflow names
2931 ATTR_CANONICAL = 'canonical_name' # Parameter name for version name
@@ -92,6 +94,7 @@ def start_workflow(self, flow):
9294 return self .http .post (
9395 self .instance_worker_url (),
9496 data = json .dumps ({
97+ self .ATTR_INTENT_ID : self .uuid (),
9598 self .ATTR_PROG : self .PROG ,
9699 self .ATTR_CANONICAL : self .canonical_name (flow ),
97100 self .ATTR_NAME : self .class_name (flow ),
@@ -104,6 +107,7 @@ def start_task(self, task):
104107 return self .http .post (
105108 self .worker_url ('tasks' ),
106109 data = json .dumps ({
110+ self .ATTR_INTENT_ID : self .uuid (),
107111 self .ATTR_PROG : self .PROG ,
108112 self .ATTR_NAME : self .class_name (task ),
109113 self .ATTR_DATA : self .serializer .encode (self .properties .from_ (task )),
@@ -114,6 +118,7 @@ def update_instance(self, workflow, custom_id, mode):
114118 params = '{}={}' .format (self .ATTR_ID , custom_id )
115119 url = self .instance_worker_url (params )
116120 options = json .dumps ({
121+ self .ATTR_INTENT_ID : self .uuid (),
117122 self .ATTR_PROG : self .PROG ,
118123 self .ATTR_NAME : workflow .__name__ ,
119124 self .ATTR_MODE : mode
@@ -130,6 +135,7 @@ def update_instance(self, workflow, custom_id, mode):
130135 """
131136 def send_event (self , workflow_name , custom_id , event ):
132137 body = json .dumps ({
138+ self .ATTR_INTENT_ID : self .uuid (),
133139 self .ATTR_PROG : self .PROG ,
134140 self .ATTR_NAME : workflow_name ,
135141 self .ATTR_ID : custom_id ,
@@ -235,3 +241,7 @@ def _connect_to_agent(self):
235241 raise ConnectionError (
236242 'Could not connect to Zenaton agent at "{}:{}", make sure it is running and '
237243 'listening.' .format (url , port ))
244+
245+ def uuid (self ):
246+ """Generate a uuidv4"""
247+ return str (uuid .uuid4 ())
0 commit comments