
# 在已有项目中部署流程引擎流程SDK
流程引擎不仅支持以独立服务的方式部署流程引擎流程SDK，还支持以依赖引入的方式嵌入用户已存在的项目中，进行定制化二次开发，提供可直接调用的base内置Service方法，减少网络IO。
如下操作以Windows 11操作系统的本地服务器为例。
#### 准备事项
在部署流程引擎流程SDK之前，需要提前准备如下事项。
- 从[Oracle官网](https://www.oracle.com/technetwork/java/archive-139210.html)下载和安装推荐使用的JDK版本。
  推荐使用的JDK版本：JDK 17 以上版本。
  
- 根据开发需要，下载并安装开发工具，例如Eclipse IDE、IntelliJ IDEA等。 本文以IntelliJ IDEA开发工具为例。
  
- 获取SDK包和License文件。 如何获取SDK请参见[获取数据建模引擎SDK](https://support.huaweicloud.com/sdkreference-idme/idme_sdkreference_0009.html)。
  
 
#### 操作步骤
1. 解压缩已获取的SDK包。
2. 将解压缩后"design"和"runtime"文件夹下"lib"文件夹中的所有文件引入到已有的Maven工程中。 
   1. 在"resources"目录下，单击"File \> Project Structure"。
   
   2. 在弹出的窗口中，选择"Modules \> Dependencies"，单击"+ \> JARs or Directories..."。
   
   3. 全选"lib"文件夹下的所有文件，单击"OK"。
   
   4. 单击"Apply"。
   
   
   
   
3. 将已获取的License文件复制到已有的Maven工程中，例如"D:\\workspace\\sdk-test\\src\\main\\resources\\lic\\license.dat"。 
   ![](https://support.huaweicloud.com/sdkreference-idme/public_sys-resources/note_3.0-zh-cn.png)
   如果您当前暂未申请License，且获取的SDK包处于宽限使用期，可跳过此配置。
   
   
4. 在启动类上方添加如下注解。 
   ```
   @SpringBootApplication
   @EnableSffRedisHttpSession
   ```
   
   
5. 在启动类中添加System.setProperty()方法，设置系统属性。 
   ```
   // 流程编排服务
   System.setProperty("hwenvironment", "uat");
   SpringApplication.run(WfDefinitionDemoApplication.class, args);
   //流程运行服务
   System.setProperty("hwenvironment", "uat");
   SpringApplication.run(WorkflowRuntimeApplication.class, args);
   ```
   - 流程编排服务完整的示例代码如下：
     ```
     package com.sdk;
     import com.huawei.it.plm.definitiondemo.WfDefinitionDemoApplication;
     import com.huawei.org.springframework.session.data.redis.config.annotation.web.http.EnableSffRedisHttpSession;
     import org.springframework.boot.SpringApplication;
     import org.springframework.boot.autoconfigure.SpringBootApplication;
     @SpringBootApplication
     @EnableSffRedisHttpSession
     public class SdkDesignApplication {
         public static void main(String[] args) {
             System.setProperty("hwenvironment", "uat");
             SpringApplication.run(WfDefinitionDemoApplication.class, args);
         }
     }
     ```
     
   
   - 流程运行服务完整的示例代码如下：
     ```
     package com.sdk;
     import com.huawei.it.workflowdemo.WorkflowRuntimeApplication;
     import com.huawei.org.springframework.session.data.redis.config.annotation.web.http.EnableSffRedisHttpSession;
     import org.springframework.boot.SpringApplication;
     import org.springframework.boot.autoconfigure.SpringBootApplication;
     @SpringBootApplication
     @EnableSffRedisHttpSession
     public class SdkRuntimeApplication {
         public static void main(String[] args) {
             System.setProperty("hwenvironment", "uat");
             SpringApplication.run(WorkflowRuntimeApplication.class, args);
         }
     }
     ```
     
   
   
   
   
6. 在已有的Maven工程中，添加SDK启动配置。 
   1. 单击"SdkApplication \> Edit Configurations..."。
   
   2. 在弹出的窗口中，单击"Environment variables"。
   
   3. 在弹出的窗口中，单击![](https://support.huaweicloud.com/sdkreference-idme/figure/zh-cn_image_0000002137195441.png)，依次添加对应资源的配置信息。
      请根据实际的[流程引擎流程SDK资源规划](https://support.huaweicloud.com/sdkreference-idme/idme_sdkreference_0008.html#ZH-CN_TOPIC_0000002101358320__section14635191220121)，按需添加。
      图1添加环境变量   
      ![](https://support.huaweicloud.com/sdkreference-idme/figure/zh-cn_image_0000002101716458.png "点击放大") 
   
   4. 单击"OK"。
   
   
   
   
7. 在已有的Maven工程中，单击![](https://support.huaweicloud.com/sdkreference-idme/figure/zh-cn_image_0000002137035813.png)，启动项目。
8. 完成部署后，流程引擎支持如下几种验证方式。您可以根据实际情况选择验证。 
   - **方式一：查看服务日志**
     执行如下命令，查看服务日志。
     ```
     tail -f service.log
     ```
     显示结果为类似如下信息，则说明启动成功。
     - 流程编排服务
       ```
       INFO  WfDefinitionDemoApplication:61 - Started WfDefinitionDemoApplication in xxx seconds
       ```
       
     
     - 流程运行服务
       ```
       INFO  WorkflowRuntimeApplication:61 - Started WorkflowRuntimeApplication in xxx seconds
       ```
       
      
   
   - **方式二：调用指定接口**
     启动"startDesign.bash"和"startRuntime.bash"脚本文件后，约等待2分钟，调用如下健康检查接口，查询服务是否正常启动。
     ```
     http://{部署服务器的IP地址}:{部署服务器的端口号}${流程编排服务文根/流程运行服务文根}/health/check
     ```
     如果返回如下信息，则说明启动成功。
     ```
     true
     ```
     
   
   - **方式三：访问可视化页面**
     如果您已在[流程引擎流程SDK资源规划](https://support.huaweicloud.com/sdkreference-idme/idme_sdkreference_0008.html#ZH-CN_TOPIC_0000002101358320__section14635191220121)中规划了单点登录的相关资源/云服务，并在部署时配置了单点登录信息，可以选择此方式进行验证。
     在浏览器中访问如下地址，查看服务是否启动成功。
     - 流程编排服务
       ```
       http://{承载流程编排服务的服务器域名或IP地址}:{流程编排服务的端口号}/{流程编排服务文根}/index.html#/processApplicationForm?tenantId=-1&applicationId={应用ID}
       ```
       
     
     - 流程运行服务
       ```
       http://{承载流程运行服务的服务器域名或IP地址}:{流程运行服务的端口号}/{流程运行服务文根}/wfAdminIndex.html#/process-tasks?tenantId=-1&applicationId={应用ID}
       ```
       
     
     
     转入流程引擎登录页面，输入登录账号和登录密码，成功登录并进入流程引擎页面，即表示启动成功。
     
   
   
   
   
 
#### 异常处理
引入SDK包下的文件到Maven工程时，可能会存在引入失败的情况。如下图所示：
图2引入失败的JAR包   
![](https://support.huaweicloud.com/sdkreference-idme/figure/zh-cn_image_0000002101556430.png "点击放大")
您可以参考如下操作进行修复。
1. 右键单击引入失败的JAR包，选择"Add as Library"。
2. 在弹出的窗口中，选择"Classes"，单击"OK"。
3. 在弹出的窗口中，将"Level"设置为"Module Library"，单击"OK"。
   图3添加Library   
   ![](https://support.huaweicloud.com/sdkreference-idme/figure/zh-cn_image_0000002137035609.png "点击放大") 
 
