Activiti6.0工作流引擎深度解析

166 阅读2分钟

download: Activiti6.0工作流引擎深度解析

本课程将系统且深入源码讲解Activiti6.0工作流引擎的使用、配置、核心api以及BPMN2.0规范、数据库设计及模型映射,Spring Boot2.0集成,工作流平台搭建、部署与运维等,带你切实学会Activiti6.0。

适合人群

1~2年工作经验,至少有一个Java服务端项目开发经验

想提高业务建模能力,技术架构能力,流程梳理能力,开源库研究能力

开发效率,进而想进阶为Java中高级工程师

技术储备要求

熟练掌握Spring \ MyBatis \ Mysql \ Maven

添加依賴  
      org.testng
      testng
      6.8.8
      test
  
運用DataProvider提供數據有兩種方式:把測試代码和測試數據放在同一個類中;把一切的數據提供都單獨寫在一個類里面,當測試數據比擬多時,這種辦法利於維護。用法1. 常規用法import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class ParamTestWithDataProvider1 {
    @DataProvider(name = "test1")
    public static Object[][] primeNumbers() {
        return new Object[][] { { 2, true ,"hi"}, { 6, false ,"test"}, { 19, true ,"good"},
                { 22, false ,"aha"}, { 23, true ,"loo"} };
    }
    //參數必需要分歧
    @Test(dataProvider = "test1")
    public void testPrimeNumberChecker(Integer inputNumber,
                                       Boolean expectedResult, String test) {
        System.out.println(inputNumber + " " + expectedResult+" "+test);
    }
}
2.Method參數的DataProvider假如希望DataProvider對不同的Test辦法運用不同的dataprovider,那麼在DataProvider中能夠運用Method參數import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.lang.reflect.Method;
public class ParamTestWithDataProvider2 {
    @Test(dataProvider = "provider")
    public void getFirst(String name, int age) {
        System.out.println("第一組"+name);
    }
    @Test(dataProvider = "provider")
    public void getSecond(String name, int age) {
        System.out.println("第二組 " + name);
    }
    @DataProvider(name = "provider")
    public Object[][] provider(Method method) {
        Object[][] objects;
        if (method.getName().equals("getFirst")) {              //假如調用該DataProvider的函數是getFirst,那麼就返回這個數組
            objects = new Object[][] { { "cq1", 20 }, { "cq2", 22 } };
        } else if (method.getName().equals("getSecond")) {//假如調用該DataProvider的函數是getSecond,那麼就返回這個數組
            objects = new Object[][] { { "cq3", 20 }, { "cq4", 22 } };
        } else {                                                                    //假如調用該DataProvider的函數不是getFirst也不是getSecond,那麼就返回這個數組
            objects = new Object[][] { {"cq5",33}, {"cq6",34} };
        }
        return objects;
    }
}
3. 經過DataProviderClass 把測試數據文件引過來import org.testng.annotations.DataProvider;
public class DataProviderMethod {
    //無指定數據稱號,默許運用辦法名
    @DataProvider
    public static Object[][] NoNameMethod(){
        return new Object[][]{
                {"DataWithNoName1"},
                {"DataWithNoName2"},
                {"DataWithNoName3"}
        };
    }
    //指定稱號1
    @DataProvider(name="dataprovider1")
    public static Object[][] dataProvider1(){
        return new Object[][]{
                {"dataprovider1-1"},
                {"dataprovider1-2"}
        };
    }
    //指定稱號2
    @DataProvider(name="dataprovider2")
    public static Object[][] dataProvider2(){
        return new Object[][]{
                {"dataprovider2-1"},
                {"dataprovider2-2"}
        };
    }
}
import org.testng.annotations.Test;
public class ParamTestWithDataProvider3 {
    @Test(dataProvider="NoNameMethod",dataProviderClass=DataProviderMethod.class)
    public void doTestNG(String testdatas) {
        System.out.println("未指定稱號,數據源名爲辦法名NoNameMethod:"+testdatas);
    }
    @
Test(dataProvider="dataprovider1",dataProviderClass=DataProviderMethod.class)
    public void doTestNG1(String testdatas){
        System.out.println("指定稱號,數據源稱號選择了dataprovider1:"+testdatas);
    }
    @Test(dataProvider="dataprovider2",dataProviderClass=DataProviderMethod.class)
    public void doTestNG2(String testdatas){
        System.out.println("指定稱號,數據源稱號選择了dataprovider2:"+testdatas);
    }
}