Create getProductionOrder RESTful Consumer

Create getProductionOrder RESTful Consumer

Note that:

  • getProductionOrders is a RESTful Provider in the Providers → RESTful Endpoints → InstructorTools folder.

  • getProductionOrder is a RESTful Consumer in the Consumers → RESTful Configurations → Tutorial folder.



getProductionOrders RESTful Provider Endpoint

This is already built for you, but the code is provided below, for review.


RESTful Provider Response Message script

Python
req_path = request['path']
	req_query = request['query']
	req_headers = request['headers']
	req_metadata = request['remote']
	req_body = request['body']
	res_headers = {}
	
	eqPath =  str(request['query']['path'])
	line = eqPath.split('\')[3:][0]
	
	opsList =  system.mes.getAvailableOperations(eqPath, '', False, False)
	if opsList.size() == 0:
		res_code = 400
		res_content = {'error': "No Operations Configured on Line"}
		return {'code': res_code, 'headers': res_headers, 'content': res_content}
	
	matList = []
	for item in opsList:
		matList.append(item.getName().split('-')[0])
		
	import random
	
	firstStart = system.date.addHours(system.date.now(), 4)
	firstEnd = system.date.addHours(firstStart, 1)
	secondStart = system.date.addMinutes(firstEnd, 5)
	secondEnd = system.date.addHours(secondStart, 2)
	
	
	
	#generating some wo numbers
	firstId = system.date.toMillis(system.date.now())
	secondId = firstId + 1
	
	res_content = {"Data": 
	  {  
	    "lines": [
	      {
	        "line": line,
	              "scheduled_items": [
	                {
	                  "duration": 2.1171843383,
	                  "end_dtm": firstEnd,
	                  "id": system.date.toMillis(firstStart),
	                  "item_type": "WORK_ORDER",
	                  "newDuration": 0.0,
	                  "overflow": False,
	                  "related_data": [{
	                    "ct_units": 0,
	                    "id": firstId,
	                    "item_code": random.choice(matList),
	                    "item_desc1": "Product Description",
	                    "item_desc2": "",
	                    "item_net_weight": 0.0,
	                    "item_size": random.random(),
	                    "order_qty": 1200.0,
	                    "remarks": "",
	                    "routing_code": "Y901C721F8",
	                    "site": "11",
	                    "status_code": "C",
	                    "type_code": "S"
	                  }],
	                  "sequence": 2,
	                  "start_dtm": firstStart
	                },
	                {
	                  "duration": 2.1171843383,
	                  "end_dtm": secondEnd,
	                  "id": system.date.toMillis(secondStart),
	                  "item_type": "WORK_ORDER",
	                  "newDuration": 0.0,
	                  "overflow": False,
	                  "related_data": [{
	                    "ct_units": 0,
	                    "id": secondId,
	                    "item_code": random.choice(matList),
	                    "item_desc1": "Great Product",
	                    "item_desc2": "",
	                    "item_net_weight": 0.0,
	                    "item_size": 0.0,
	                    "order_qty": 3600,
	                    "remarks": "",
	                    "routing_code": "Y901C721F8",
	                    "site": "11",
	                    "status_code": "C",
	                    "type_code": "S"
	                  }],
	                  "sequence": 2,
	                  "start_dtm": secondStart
	                }
	              ]
	       }
	    ]
	  }
	}
	
	res_code = 200
	
	
	
	
	return {'code': res_code, 'headers': res_headers, 'content': res_content}

Configure getProductionOrder RESTful Consumer

  • Paste in the Endpoint URL:
    http://localhost:8088/system/ws/rest/InstructorTools/getProductionOrders

  • Create one URL Query String element named path as Data type = simple, Simple type = String. Set to the string value below:
    New Enterprise\Site 1\Packaging Area\Packaging Line 1

  • Create the Response Message by pressing  to populate the fields automatically.