HAP_工作流后臺操作

  • 新建用戶(CEO)


    image.png
  • 分配崗位CEO


    image.png
  • 新建表: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;
  • 導入工作流文件
    把老師的工號替換成你的工號
    image.png

    image.png

    啟動:
    image.png

生成代碼:


image.png

復制代碼:

復制到
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:


image.png
  • 前方高能(下面繼續(xù)代碼更改)

IOra20796DemoVacationService.java接口

image.png

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接口實現類
注意點:

image.png

image.png

image.png

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
    image.png

    對應vacation_list.html
    image.png
  • 更改2
    image.png

    對應vacation_list.html
    image.png
  • 更改3


    image.png

對應vacation_view.html

image.png

@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
添加到功能管理:


image.png

查看:


image.png

bug收集器:

  • 問題1


    image.png

解決:
去到DTO


image.png
  • 問題2:


    image.png

    看不到數據或详??郭计?


    image.png

    image.png
  • 問題3


    image.png

可能原因:1. 你的xml沒有改

  1. 你的


    image.png

    沒改

  • 問題3


    image.png
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) 

解決:


image.png

問題4


image.png

解決:換瀏覽器霸琴,非IE內核,或者其他瀏覽器(但不要用兼容模式)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末昭伸,一起剝皮案震驚了整個濱河市梧乘,隨后出現的幾起案子,更是在濱河造成了極大的恐慌庐杨,老刑警劉巖选调,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異灵份,居然都是意外死亡仁堪,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門填渠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弦聂,“玉大人,你說我怎么就攤上這事氛什≥汉” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵枪眉,是天一觀的道長捺檬。 經常有香客問我心赶,道長娩梨,這世上最難降的妖魔是什么剥啤? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任罩阵,我火速辦了婚禮蒸健,結果婚禮上淮韭,老公的妹妹穿的比我還像新娘窗慎。我一直安慰自己铺坞,他們只是感情好渤早,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布职车。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悴灵。 梳的紋絲不亂的頭發(fā)上扛芽,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機與錄音积瞒,去河邊找鬼川尖。 笑死,一個胖子當著我的面吹牛茫孔,可吹牛的內容都是我干的叮喳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼缰贝,長吁一口氣:“原來是場噩夢啊……” “哼馍悟!你這毒婦竟也來了?” 一聲冷哼從身側響起剩晴,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤锣咒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后赞弥,有當地人在樹林里發(fā)現了一具尸體毅整,經...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年绽左,在試婚紗的時候發(fā)現自己被綠了悼嫉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡拼窥,死狀恐怖承粤,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情闯团,我是刑警寧澤辛臊,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站房交,受9級特大地震影響彻舰,放射性物質發(fā)生泄漏。R本人自食惡果不足惜候味,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一刃唤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧白群,春花似錦尚胞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唯卖。三九已至,卻和暖如春躬柬,著一層夾襖步出監(jiān)牢的瞬間拜轨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工允青, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留橄碾,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓颠锉,卻偏偏與公主長得像法牲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子琼掠,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內容