class routingSubflowTestCase(unittest.TestCase): def setUp(self): # Create an OpenFlow folder self.of = CMFOpenflowTool('of') # Create a Process Definition with a subflow activity. self.of.addProcess(id='main', BeginEnd=1) self.main_pd = getattr(self.of, 'main') self.main_pd.addActivity('sub', kind='subflow', subflow='test_subflow') self.main_pd.addTransition(id='Begin_sub', From='Begin', To='sub') self.main_pd.addTransition(id='sub_End', From='sub', To='End') begin = getattr(self.main_pd, 'Begin') begin.edit(start_mode=1, finish_mode=1) # Create a Process Definition "subflow" that will act as a subflow. self.of.addProcess(id='test_subflow', BeginEnd=1) self.sub_pd = getattr(self.of, 'test_subflow') self.sub_pd.addTransition(id='Begin_End', From='Begin', To='End') getattr(self.sub_pd, 'Begin').edit(kind='standard') getattr(self.sub_pd, 'End').edit(kind='standard') # Create a Process Instance of "main" pid = self.of.addInstance('main', 'test', 'testComment', 'TestTitle', 1) self.pi = getattr(self.of, pid) def checkSubflowWorkitemsCreation(self): """ Check the subflow workitems creation """ assert getattr(self.pi, '1'), 'workitem 1 not created' assert getattr(self.pi, '2').activity_id == 'Begin' , 'workitem 2 activity not correct' assert getattr(self.pi, '2').process_id == 'test_subflow' , 'workitem 2 process not correct' self.w = getattr(self.pi, '2') self.of.activateWorkitem(self.pi.id, self.w.id) self.of.completeWorkitem(self.pi.id, self.w.id) self.of.forwardWorkitem(self.pi.id, self.w.id) assert getattr(self.pi, '3').activity_id == 'End' , 'workitem 3 activity not correct' assert getattr(self.pi, '3').process_id == 'test_subflow' , 'workitem 3 process not correct' def checkCompleteSubflow(self): """ Check the subflow completion """ self.w = getattr(self.pi, '2') self.of.activateWorkitem(self.pi.id, self.w.id) self.of.completeWorkitem(self.pi.id, self.w.id) self.of.forwardWorkitem(self.pi.id, self.w.id) assert getattr(self.pi, '3'), 'workitem 3 not created' assert self.of.getSubflowWorkitem(self.pi.id, '3',getattr(self.pi, '3').process_id) == '1', 'subflow workitem not correct' self.of.activateWorkitem(self.pi.id, '3') self.of.completeWorkitem(self.pi.id, '3') assert getattr(self.pi, '1').status == 'complete', 'subflow workitem status not correct' assert getattr(self.pi, '4'), 'workitem 4 not created'