# # This script is automatically generated by X Workflow Composer 0.7.9. # import sys, thread from java.lang import Throwable from java.util import Properties from java.io import FileInputStream from edu.indiana.extreme.xwf.engine.jython import InvokerWithNotification from edu.indiana.extreme.xwf.engine.jython import OutputNotificationConsumer from edu.indiana.extreme.xwf.engine.jython import NotificationSender properties = Properties() # Set up defaut parameter values. properties.setProperty( 'brokerURL', 'rainier.extreme.indiana.edu:12346') properties.setProperty( 'topic', 'test') properties.setProperty( 'x', '2') properties.setProperty( 'y', '3') properties.setProperty( 'x_2', '4') properties.setProperty( 'y_2', '5') # Set up default WSDL URLs. properties.setProperty( 'Adder_wsdl', '') properties.setProperty( 'Adder_2_wsdl', '') properties.setProperty( 'Multiplier_wsdl', '') def usage(): print ''' Options: -f properties_file -brokerURL value -topic value -x value -y value -x_2 value -y_2 value -Adder_wsdl value -Adder_2_wsdl value -Multiplier_wsdl value ''' sys.exit(0) # Process command-line arguments. if sys.argv[0][0] != '-': sys.argv = sys.argv[1:] while sys.argv: if sys.argv[0] == '-f': # Read parameters from a file. propertyFilename = sys.argv[1] inputStream = FileInputStream(propertyFilename) properties.load(inputStream) elif sys.argv[0] == '-brokerURL': properties.put('brokerURL', sys.argv[1]) elif sys.argv[0] == '-topic': properties.put('topic', sys.argv[1]) elif sys.argv[0] == '-x': properties.put('x', sys.argv[1]) elif sys.argv[0] == '-y': properties.put('y', sys.argv[1]) elif sys.argv[0] == '-x_2': properties.put('x_2', sys.argv[1]) elif sys.argv[0] == '-y_2': properties.put('y_2', sys.argv[1]) elif sys.argv[0] == '-Adder_wsdl': properties.put('Adder_wsdl', sys.argv[1]) elif sys.argv[0] == '-Adder_2_wsdl': properties.put('Adder_2_wsdl', sys.argv[1]) elif sys.argv[0] == '-Multiplier_wsdl': properties.put('Multiplier_wsdl', sys.argv[1]) else: usage() sys.argv = sys.argv[2:] topic = properties.getProperty('topic') brokerURL = properties.getProperty('brokerURL') notifier = NotificationSender(brokerURL, topic) notifier.workflowStarted() try: consumer = OutputNotificationConsumer(topic, brokerURL) consumer.subscribe() # Invoke Adder. Adder_wsdl = properties.getProperty('Adder_wsdl') Adder_invoker = InvokerWithNotification(Adder_wsdl, 'Adder', consumer) def invokeAdder(): Adder_invoker.setOperationName('Run') x_value = properties.getProperty('x') Adder_invoker.setInputParameter('x', x_value) y_value = properties.getProperty('y') Adder_invoker.setInputParameter('y', y_value) print 'Invoking Adder.' Adder_invoker.invoke() thread.start_new_thread(invokeAdder, ()) # Invoke Adder_2. Adder_2_wsdl = properties.getProperty('Adder_2_wsdl') Adder_2_invoker = InvokerWithNotification(Adder_2_wsdl, 'Adder_2', consumer) def invokeAdder_2(): Adder_2_invoker.setOperationName('Run') x_value = properties.getProperty('x_2') Adder_2_invoker.setInputParameter('x', x_value) y_value = properties.getProperty('y_2') Adder_2_invoker.setInputParameter('y', y_value) print 'Invoking Adder_2.' Adder_2_invoker.invoke() thread.start_new_thread(invokeAdder_2, ()) # Invoke Multiplier. Multiplier_wsdl = properties.getProperty('Multiplier_wsdl') Multiplier_invoker = InvokerWithNotification(Multiplier_wsdl, 'Multiplier', consumer) def invokeMultiplier(): Multiplier_invoker.setOperationName('Run') x_value = Adder_invoker.getOutput('z') Multiplier_invoker.setInputParameter('x', x_value) y_value = Adder_2_invoker.getOutput('z') Multiplier_invoker.setInputParameter('y', y_value) print 'Invoking Multiplier.' Multiplier_invoker.invoke() invokeMultiplier() # Wait output z z_value = Multiplier_invoker.getOutput('z') print 'z = ', z_value # Wait all executing services. notifier.workflowCompleted() consumer.unsubscribe() print 'Everything is done successfully.' except Throwable, e: print 'Error: ', e notifier.workflowIncompleted(e) consumer.unsubscribe()