-
新建用戶(CEO)
-
分配崗位CEO
- 新建表:wht_ora_20796_demo_vacation
CREATE TABLE `wht_ora_20796_demo_vacation` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT,
`USER_CODE` varchar(225) NOT NULL COMMENT '用戶編碼',
`START_DATE` datetime NOT NULL,
`NEED_DAYS` decimal(4,1) NOT NULL COMMENT '請假天數',
`LEAVE_REASON` varchar(255) DEFAULT NULL COMMENT '請假理由',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- 導入工作流文件
把老師的工號替換成你的工號
啟動:
生成代碼:
復制代碼:
從 | 復制到 |
---|---|
target/core/WEB-INF/view/activiti/demo/vacation_list.html | src/main/webapp/WEB-INF/view/ ora20796 /vacation_list.html |
target/core/WEB-INF/view/activiti/demo/vacation_view.html | src/main/webapp/WEB-INF/view/ ora20796 /vacation_view.html |
兩個頁面都也更改html:
-
前方高能(下面繼續(xù)代碼更改)
IOra20796DemoVacationService.java
接口
package wht.ora20796.service;
import com.hand.hap.core.IRequest;
import com.hand.hap.core.ProxySelf;
import com.hand.hap.system.service.IBaseService;
import wht.ora20796.dto.Ora20796DemoVacation;
import java.util.List;
public interface IOra20796DemoVacationService extends IBaseService<Ora20796DemoVacation>, ProxySelf<IOra20796DemoVacationService>{
public void createVacationInstance(IRequest iRequest, Ora20796DemoVacation ora20796DemoVacation);
public List<Ora20796DemoVacation> selectVacationHistory(IRequest iRequest);
}
Ora20796DemoVacationServiceImpl.java
接口實現類
注意點:
package wht.ora20796.service.impl;
import com.hand.hap.activiti.service.IActivitiService;
import com.hand.hap.core.IRequest;
import com.hand.hap.system.service.impl.BaseServiceImpl;
import org.activiti.rest.service.api.engine.variable.RestVariable;
import org.activiti.rest.service.api.runtime.process.ProcessInstanceCreateRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import wht.ora20796.dto.Ora20796DemoVacation;
import wht.ora20796.mapper.Ora20796DemoVacationMapper;
import wht.ora20796.service.IOra20796DemoVacationService;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@Service
@Transactional(rollbackFor = Exception.class)
public class Ora20796DemoVacationServiceImpl extends BaseServiceImpl<Ora20796DemoVacation> implements IOra20796DemoVacationService {
@Autowired
private IActivitiService activitiService; //工作流相關Service
@Autowired
private Ora20796DemoVacationMapper demoVacationMapper;
private final String processDefinitionKey = "ORA_20796_VACATION_REQUEST"; //流程標識,通過其啟動流程
// @Autowired
// private IDemoVacationService vacationService;
/*
* 創(chuàng)建請假流程 將業(yè)務表單存放在act_demo_vacation 表將此表單通過businessKey與流程相關绩衷。啟動此流程
* DemoVacation為業(yè)務表單數據共虑。可根據流程需要將表單數據加入流程變量中忍坷,如我們在請假流程審批過程中我們可能
* 需要請假時間參數對流程邏輯做出相關處理涯呻,則可以把其放入流程變量中狼讨。
* */
@Override
public void createVacationInstance(IRequest iRequest, Ora20796DemoVacation demoVacation) {
demoVacation.setUserCode(iRequest.getEmployeeCode());
Ora20796DemoVacation demo = this.insertSelective(iRequest, demoVacation);
ProcessInstanceCreateRequest instanceCreateRequest = new ProcessInstanceCreateRequest();
instanceCreateRequest.setBusinessKey(String.valueOf(demo.getId()));
instanceCreateRequest.setProcessDefinitionKey(processDefinitionKey);
//添加流程變量
List<RestVariable> variables = new ArrayList<>();
RestVariable variable = new RestVariable();
variable.setName("needDays");
variable.setType("long");
variable.setValue(demo.getNeedDays());
variables.add(variable);
instanceCreateRequest.setVariables(variables);
activitiService.startProcess(iRequest, instanceCreateRequest);
}
/*
* 查看歷史請假記錄(查詢單據表)
* c*/
@Override
public List<Ora20796DemoVacation> selectVacationHistory(IRequest iRequest) {
Ora20796DemoVacation demoVacation = new Ora20796DemoVacation();
demoVacation.setUserCode(iRequest.getEmployeeCode());
List<Ora20796DemoVacation> demoVacations = demoVacationMapper.select(demoVacation);
return demoVacations;
}
}
Ora20796DemoVacationController.java
控制類
注意點:
- 更改1
對應vacation_list.html
- 更改2
對應vacation_list.html
-
更改3
對應vacation_view.html
@Autowired
private IOra20796DemoVacationService service;
@Autowired
private IOra20796DemoVacationService vacationService;
/*
* 請假流程demo
* */
@RequestMapping(value = "/wht/ora/20796/demo/runtime/process-instances/vacation", method = RequestMethod.POST, produces = "application/json")
//@RequestMapping(value = "/wfl/runtime/process-instances/vacation", method = RequestMethod.POST, produces = "application/json")
@ResponseBody
public ResponseData createVacationProcessInstance(@RequestBody Ora20796DemoVacation demoVacation,
HttpServletRequest httpRequest, HttpServletResponse response) {
IRequest iRequest = createRequestContext(httpRequest);
vacationService.createVacationInstance(iRequest, demoVacation);
return new ResponseData();
}
/*
請假流程通過businessKey獲取流程表單
* */
@RequestMapping("/wht/ora/20796/demo/history/form/details/vacation/{businessKey}")
// @RequestMapping("/wfl/history/form/details/vacation/{businessKey}")
@ResponseBody
public Ora20796DemoVacation getProcessFrom(HttpServletRequest request, @PathVariable String businessKey) {
Ora20796DemoVacation demoVacation = new Ora20796DemoVacation();
demoVacation.setId(Long.parseLong(businessKey));
Ora20796DemoVacation demo = vacationService.selectByPrimaryKey(createRequestContext(request), demoVacation);
return demo;
}
/*
* 獲取當前用戶歷史請假記錄
* */
@ResponseBody
@RequestMapping("/wht/ora/20796/demo/vacation/work/query")
// @RequestMapping("/wfl/vacation/query")
public ResponseData getVacationHistory(HttpServletRequest request, HttpServletResponse response, Ora20796DemoVacation demoVacation, @RequestParam(defaultValue = DEFAULT_PAGE) int page,
@RequestParam(defaultValue = DEFAULT_PAGE_SIZE) int pagesize) {
IRequest iRequest = createRequestContext(request);
List<Ora20796DemoVacation> lists = vacationService.selectVacationHistory(iRequest);
return new ResponseData(lists);
}
重新打包啟動tomcat
添加到功能管理:
查看:
bug收集器:
-
問題1
解決:
去到DTO
-
問題2:
看不到數據或详??郭计?
-
問題3
可能原因:1. 你的xml沒有改
-
你的
沒改
-
問題3
Errors while parsing: [Validation set: 'activiti-executable-process' | Problem: 'activiti-exclusive-gateway-condition-on-seq-flow'] : Default sequenceflow has a condition, which is not allowed - [Extra info : processDefinitionId = ORA_20796_VACATION_REQUEST | processDefinitionName = 請假申請 | | id = requestApprovedDecision | | activityName = Request approved? | ] ( line: 27, column: 5)
解決:
問題4
解決:換瀏覽器霸琴,非IE內核,或者其他瀏覽器(但不要用兼容模式)