View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.syncope.core.logic;
20  
21  import org.apache.syncope.core.flowable.api.BpmnProcessManager;
22  import org.apache.syncope.core.flowable.api.UserRequestHandler;
23  import org.apache.syncope.core.flowable.api.WorkflowTaskManager;
24  import org.apache.syncope.core.flowable.support.DomainProcessEngine;
25  import org.apache.syncope.core.logic.init.FlowableLoader;
26  import org.apache.syncope.core.persistence.api.dao.UserDAO;
27  import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
28  import org.apache.syncope.core.provisioning.api.propagation.PropagationManager;
29  import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
30  import org.springframework.beans.factory.annotation.Qualifier;
31  import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
32  import org.springframework.context.annotation.Bean;
33  import org.springframework.context.annotation.Configuration;
34  import org.springframework.core.io.Resource;
35  
36  @Configuration(proxyBeanMethods = false)
37  public class FlowableLogicContext {
38  
39      @ConditionalOnMissingBean
40      @Bean
41      public FlowableLoader flowableLoader(
42              final DomainProcessEngine engine,
43              @Qualifier("userWorkflowDef")
44              final Resource userWorkflowDef) {
45  
46          return new FlowableLoader(userWorkflowDef, engine);
47      }
48  
49      @ConditionalOnMissingBean
50      @Bean
51      public BpmnProcessLogic bpmnProcessLogic(final BpmnProcessManager bpmnProcessManager) {
52          return new BpmnProcessLogic(bpmnProcessManager);
53      }
54  
55      @ConditionalOnMissingBean
56      @Bean
57      public UserRequestLogic userRequestLogic(
58              final UserRequestHandler userRequestHandler,
59              final UserDataBinder binder,
60              final BpmnProcessManager bpmnProcessManager,
61              final PropagationTaskExecutor taskExecutor,
62              final UserDAO userDAO,
63              final PropagationManager propagationManager) {
64  
65          return new UserRequestLogic(
66                  bpmnProcessManager,
67                  userRequestHandler,
68                  propagationManager,
69                  taskExecutor,
70                  binder,
71                  userDAO);
72      }
73  
74      @ConditionalOnMissingBean
75      @Bean
76      public UserWorkflowTaskLogic userWorkflowTaskLogic(
77              final WorkflowTaskManager wfTaskManager,
78              final UserDataBinder binder,
79              final UserDAO userDAO,
80              final PropagationTaskExecutor taskExecutor,
81              final PropagationManager propagationManager) {
82  
83          return new UserWorkflowTaskLogic(wfTaskManager, propagationManager, taskExecutor, binder, userDAO);
84      }
85  }