当我们往数据库迁移数据时,如果对有些数据有特定的生成规则要求我们可以先写webservice再用kettle调用webservice去生成相应的数据。
首先我们需要一个表输入控件和一个webservice控件。如下图:
表输入里面配好数据库,我们根据自己的要求写sql查出对应的数据。如下图
然后写 webservice(这边我们是java cxf的webservice)例子如下:
import com.founder.fasf.util.ObjectUtil;
import com.founder.rhip.ehr.entity.basic.PersonInfo;
import com.founder.rhip.ehr.service.personal.IPlatformService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.jws.WebParam;
import javax.jws.WebService;
import java.math.BigDecimal;
import java.util.Date;
@Service("createPersonWebService")
@WebService(serviceName="createPersonWebService")
public class CreatePersonWebService implements ICreatePersonWebService{
private static String folder;
@Resource(name = "platformService")
private IPlatformService personService;
public void caretePerson(@WebParam(name = "idcard") String idcard, @WebParam(name = "idcardFarm") String idcardFarm,
@WebParam(name = "name") String name, @WebParam(name = "birthday") Date birthday
{
PersonInfo personInfo = new PersonInfo();
if(ObjectUtil.isNotEmpty(idcard)){personInfo.setIdcard(idcard);}
if(ObjectUtil.isNotEmpty(idcardFarm)){personInfo.setIdcardFarm(idcardFarm);}
if(ObjectUtil.isNotEmpty(name)){personInfo.setName(name);}
if(ObjectUtil.isNotEmpty(birthday)){personInfo.setBirthday(birthday);}
String id1 = personService.createPerson(personInfo, "personId", false);
}
}
写好webservice然后再配置kettle里的webservice。url:方法地址,操作和下面的是方法名称,如下图
配置webservice的in 名称是表输入里查询的字段名, WS名称是webservice里的接受参数名 WS类型是数据类型