Wstęp
Przydatne klasy:
- ProcessService
- ActivityService
- ProcessFinder
- ActivityFinder
Operacje
Utworzenie procesu
ProcessService processService = ServiceFactory.getProcessService(); ProcessBuilderDefinition definition = new ProcessBuilderDefinition(); definition.setPackageId( "suncode" ); definition.setCreator( "admin" ); definition.setCreatorPassword( "enhydra" ); definition.setProcessDefId( "proces1" ); Map<String, Object> variables = new HashMap<String, Object>(); variables.put( "zmienna1", "abc" ); definition.setVariables( variables ); String processId = processService.createProcess( definition );
Pobranie otwartych zadań z procesu
ActivityFinder activityFinder=FinderFactory.getActivityFinder(); List<Activity> activities=activityFinder.findOpenedActivities( processId ); for ( Activity activity : activities ) { String activityId=activity.getActivityId(); }
Zmiana wartości zmiennych zadania
ActivityService activityService = ServiceFactory.getActivityService(); Map<String,Object> activityContext=activityService.getActivityContext( processId, activityId ); activityContext.put( "zmienna", "wartość" ); activityService.setActivityContext( processId, activityId, activityContext );
Powyższy kod zmienia mapę zmiennych zadania. Jeżeli w aktualnym wątku mamy otwartą transakcję, np. jesteśmy w zadaniu automatycznym to metody getActivityContext i setActivityContext automatycznie podłączą się do aktywnej transakcji. Jeżeli chcemy zmienić wartości zmiennych procesu, lecz nie chcemy zaakceptować zadania to należy ustawić ActivityContext, oraz ProcessContext:
Zmiana wartości zmiennych procesu
ActivityService activityService = ServiceFactory.getActivityService(); ProcessService processService = ServiceFactory.getProcessService(); Map<String, Object> activityContext = activityService.getActivityContext( processId, activityId ); activityContext.put( "zmienna", "wartość" ); activityService.setActivityContext( processId, activityId, activityContext ); Map<String, Object> processContext = processService.getProcessContext( processId ); processContext.put( "zmienna", "wartość" ); processService.setProcessContext( processId, processContext );
TODO Opisać możliwość utworzenie ręczenie transakcji SharkTransaction która będzie kompatybilna z serviceami API.