亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jbpm-websale.apt

?? anewssystem新聞發布系統集成使用了spring hibernate freemarker EXTJS等開源框架 可以作為學習參考
?? APT
字號:
 ---
 jbpm-webapp的websale
 ---
 Lingo
 ---
 2007-04-30

下面記錄的是jbpm-webapp演示的websale工作流的流程與實現

 實際上整個演示包含三個部分:home基本流程操作,administration未實現,monitor狀態監視器。這里我們僅僅實現home基本流程操作,對于monitor狀態監視器不做考慮。

*home基本流程操作的步驟

 *index.jsp直接轉向到login.jsp,在進行任何操作之前必須選擇一個角色進入。

 *login.jsp中只有一個form,form中使用select顯示角色列表,選擇一個角色既可以登錄進行操作。

  login.jsp:

+--
<table>
  <tr>
    <td>
      <fieldset>
        <legend>Log In</legend>
        <label>
          <form id="login">
            <br />
            Select User:
            <select id="username">
              <option value="">${user.name}</option>
            </select>
            <br />
            <center><input type="submit" value="Log In" /></center>
          </form>
        </label>
      </fieldset>
    </td>
  </tr>
</table>
+--

  對應的類中,通過session獲得用戶列表:

+--
import org.hibernate.Session;
import org.jbpm.JbpmContext;
import org.jbpm.identity.User;
import org.jbpm.identity.hibernate.IdentitySession;

Session session = JbpmContext.getCurrentJbpmContext().getSession();
IdentitySession identitySession = new IdentitySession(session);
List list = identitySession.getUsers();
// user.getName();
+--

  登錄時設置當前的角色名:

+--
JbpmContext.getCurrentJbpmContext().setActorId(userName);
+--

  登錄后跳轉到home.jsp。

 *home.jsp中,顯示taskInstances任務列表,latestProcessDefinitions最新工作流列表。

  初始化jbpmContext, graphSession, taskMgmtSession

+--
this.jbpmContext = JbpmContext.getCurrentJbpmContext();
this.graphSession = jbpmContext.getGraphSession();
this.taskMgmtSession = jbpmContext.getTaskMgmtSession();
+--

  *taskIntances任務列表包括三列:任務名,工作流名,版本號

+--
<table>
  <tr>
    <td>task form link</td>
    <td>process</td>
    <td>version</td>
  </tr>
  <tr>
    <td>taskInstance.name</td>
    <td>taskInstance.taskMgmtInstance.taskMgmtDefinition.processDefinition.name</td>
    <td>taskInstance.taskMgmtInstance.taskMgmtDefinition.processDefinition.version</td>
  </tr>
</table>
+--

  獲得任務列表

+--
taskMgmtSession.findTaskInstances(username);
+--

  選擇任務

+--
TaskInstance taskInstance = taskMgmtSession.loadTaskInstance(taskInstanceId);
+--

  獲得任務后,轉向task.jsp

  *latestProcessDefinitions最新工作流列表

+--
<table>
  <tr>
    <td>Start Process Link</td>
    <td>process</td>
    <td>version</td>
  </tr>
  <tr>
    <td>processDefinition.taskMgmtDefinition.startTask.name</td>
    <td>processDefinition.name</td>
    <td>processDefinition.version</td>
  </tr>
</table>
+--

  獲得最新工作流列表

+--
graphSession.findLatestProcessDefinitions();
+--

  選擇工作流,創建startTask開始任務,保存processInstance

+--
ProcessDefinition processDefinition = graphSession.loadProcessDefinition(processDefinitionId);
ProcessInstance processInstance = new ProcessInstance(processDefinition);
TaskInstance taskInstance = processInstance.getTaskMgmtInstance().createStartTaskInstance();
jbpmContext.save(processInstance);
+--

  保存后,轉向task.jsp

 *task.jsp顯示任務form,顯示了任務名,任務里的變量,可以選擇的transition,同時顯示流程圖

+--
<%@ taglib uri="/WEB-INF/jbpm.tld" prefix="jbpm" %>
<table>
  <tr>
    <td>
      <form id="taskform">
        <input type="hidden" id="taskInstanceId" value="${taskInstanceId}" />
        <h2>${taskInstance.name}</h2>
        <hr />
        <table>
          <tr>
            <td>${label}</td>
            <td>${description}</td>
            <td><input type="text" value="${value}" readonly="${readonly}"/></td>
          </tr>
        </table>
        <hr />
        <#if availableTransitions>
          <#list availableTransitions as tran>
            <input id="transitionButton" name="${saveAndClose}" value="${tran.name}"/>
          </#list>
        <#else>
          <input id="transitionButton" name="${saveAndClose}" value="Save and Close Task"/>
        </#if>
        <hr />
        <input type="button" name="${save}" value="Save"/>
        <input type="button" name="home" value="Cancel"/>
      </form>
    </td>
    <td><jbpm:processimage task="${taskInstanceId}"/> </td>
  </tr>
</table>
+--

  初始化任務的變量列表,獲得列表的細節

+--
this.taskInstanceId = taskInstance.getId();

// set the parameters
this.taskFormParameters = new ArrayList();
TaskController taskController = taskInstance.getTask().getTaskController();
if (taskController!=null) {
  List variableAccesses = taskController.getVariableAccesses();
  Iterator iter = variableAccesses.iterator();
  while (iter.hasNext()) {
    VariableAccess variableAccess = (VariableAccess) iter.next();
    String mappedName = variableAccess.getMappedName();
    Object value = taskInstance.getVariable(mappedName);
  }
}
+--

  獲得有效的transition列表

+--
availableTransitions = taskInstance.getAvailableTransitions();
if ((availableTransitions != null) && (availableTransitions.size() <= 1)) {
  availableTransitions = null;
  availableTransitionItems = null;
} else {
  availableTransitionItems = new ArrayList();
  Iterator iter = availableTransitions.iterator();
  while (iter.hasNext()) {
    Transition transition = (Transition) iter.next();
    SelectItem transitionItem = new SelectItem();
    transitionItem.setValue(transition.getName());
    transitionItem.setLabel(transition.getName());
    transitionItem.setDisabled(false);
    availableTransitionItems.add(transitionItem);
  }
}
+--

  保存變量

+--
TaskInstance taskInstance = taskMgmtSession.loadTaskInstance(taskInstanceId);
Iterator iter = taskFormParameters.iterator();
while (iter.hasNext()) {
  TaskFormParameter taskFormParameter = (TaskFormParameter) iter.next();
  if ((taskFormParameter.isWritable()) && (taskFormParameter.getValue() != null)) {
    taskInstance.setVariable(taskFormParameter.getLabel(), taskFormParameter.getValue());
  } else {
    log.debug("ignoring unwritable [" + taskFormParameter.getLabel() + "]");
  }
}
jbpmContext.save(taskInstance);
+--

  保存變量后轉回home.jsp

  保存變量,根據transition關閉任務

+--
    save();

    String transitionButton = JsfHelper.getParameter("taskform:transitionButton");
    TaskInstance taskInstance = taskMgmtSession.loadTaskInstance(taskInstanceId);
    if ("Save and Close Task".equals(transitionButton)) {
      taskInstance.end();
    } else {
      taskInstance.end(transitionButton);
    }

    ProcessInstance processInstance = taskInstance.getTaskMgmtInstance().getProcessInstance();
    if (processInstance.hasEnded()) {
      JsfHelper.addMessage("The process has finished.");
    }

    LoggingInstance loggingInstance = processInstance.getLoggingInstance();
    List assignmentLogs = loggingInstance.getLogs(TaskAssignLog.class);

    log.debug("assignmentlogs: " + assignmentLogs);

    if (assignmentLogs.size() == 1) {
      TaskAssignLog taskAssignLog = (TaskAssignLog) assignmentLogs.get(0);
      JsfHelper.addMessage("A new task has been assigned to '" + taskAssignLog.getTaskNewActorId() + "'");

    } else if (assignmentLogs.size() > 1) {
      String msg = "New tasks have been assigned to: ";
      Iterator iter = assignmentLogs.iterator();
      while (iter.hasNext()) {
        TaskAssignLog taskAssignLog = (TaskAssignLog) iter.next();
        msg += taskAssignLog.getActorId();
        if (iter.hasNext())
          msg += ", ";
      }
      msg += ".";
      JsfHelper.addMessage(msg);
    }
    jbpmContext.save(taskInstance);
+--

  保存后轉回home.jsp

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜精品一区二区三区他趣| 亚洲福利一区二区三区| 国产日韩欧美在线一区| 91精品欧美久久久久久动漫| 精品日本一线二线三线不卡| 亚洲欧美色图小说| 免费看日韩a级影片| 99vv1com这只有精品| 色诱亚洲精品久久久久久| 欧美一级日韩免费不卡| 欧美激情一区二区在线| 三级在线观看一区二区| 成人综合婷婷国产精品久久 | 国产成人aaa| 在线观看免费成人| 26uuu精品一区二区| 一区二区三区电影在线播| 久久99精品国产麻豆婷婷| 色综合久久六月婷婷中文字幕| 日韩欧美一级二级三级| 一区二区三区国产精华| 成人夜色视频网站在线观看| 欧美疯狂做受xxxx富婆| 亚洲精品久久嫩草网站秘色| 狠狠色丁香婷综合久久| 欧美亚洲一区三区| 国产精品美女久久久久久久久久久| 日韩精品电影在线观看| 91欧美一区二区| 欧美高清在线精品一区| 国产在线精品一区二区不卡了| 欧美日韩精品欧美日韩精品 | 91麻豆精品国产91久久久更新时间 | 日韩一区二区高清| 亚洲精品成人少妇| 亚洲人成7777| 大美女一区二区三区| 国产精品亲子伦对白| 波多野结衣中文字幕一区| 国产精品久久久久久久久免费相片| 国产成人a级片| 亚洲欧美另类小说视频| 在线中文字幕一区二区| 午夜激情久久久| 日韩欧美成人一区二区| 韩国中文字幕2020精品| 欧美极品少妇xxxxⅹ高跟鞋 | 懂色av一区二区三区免费看| 中文字幕av一区二区三区| 久久毛片高清国产| 国产在线一区二区| 一色屋精品亚洲香蕉网站| 91官网在线观看| 日本午夜精品一区二区三区电影| 精品国产亚洲在线| 成人精品视频一区二区三区| 亚洲精品国产视频| 日韩欧美电影一区| 丁香五精品蜜臀久久久久99网站| 夜夜精品视频一区二区 | 色综合 综合色| 美女一区二区三区| 中文字幕一区二区三中文字幕| 欧美性色黄大片手机版| 狠狠色综合色综合网络| 亚洲另类在线制服丝袜| 精品女同一区二区| 99精品桃花视频在线观看| 日本91福利区| 国产精品视频一二三区| 制服.丝袜.亚洲.中文.综合| 国产精品一级在线| 午夜电影网一区| 国产精品进线69影院| 欧美二区三区的天堂| 成人丝袜视频网| 欧美96一区二区免费视频| 国产精品国产精品国产专区不片| 69精品人人人人| 色综合久久综合| 国产69精品久久777的优势| 亚洲www啪成人一区二区麻豆| 国产欧美精品一区| 欧美一区二区三区白人| 91美女视频网站| 国产91精品一区二区麻豆亚洲| 日本中文一区二区三区| 樱花草国产18久久久久| 欧美国产1区2区| 久久久久久久综合日本| 欧美日韩精品欧美日韩精品| 91免费小视频| 成人黄色777网| 国产成人精品三级| 久久国产尿小便嘘嘘尿| 五月婷婷激情综合| 亚洲一区av在线| 亚洲免费在线播放| 国产精品传媒在线| 欧美激情中文字幕一区二区| 久久免费的精品国产v∧| 8x8x8国产精品| 欧美三级视频在线| 色先锋资源久久综合| 91视频国产资源| 99久久夜色精品国产网站| 懂色av中文字幕一区二区三区| 国产精品中文字幕一区二区三区| 麻豆精品久久精品色综合| 免费看精品久久片| 欧美午夜寂寞影院| 91福利视频在线| 色欧美88888久久久久久影院| aaa亚洲精品| 99久久伊人久久99| www.激情成人| 93久久精品日日躁夜夜躁欧美| 成人av在线一区二区三区| www.欧美日韩国产在线| 91浏览器在线视频| 色琪琪一区二区三区亚洲区| 欧美午夜精品电影| 欧美一区二区三区喷汁尤物| 精品毛片乱码1区2区3区 | 国产成人精品www牛牛影视| 国产成人精品午夜视频免费| 成人免费高清在线观看| 99这里只有久久精品视频| 色综合久久久网| 欧美日韩精品一区二区在线播放| 欧美精品久久久久久久多人混战 | 99久久777色| 欧美优质美女网站| 欧美一卡二卡在线| 久久一日本道色综合| 国产精品美女久久久久久久久久久 | 精品在线亚洲视频| 国产成人aaa| 欧亚洲嫩模精品一区三区| 678五月天丁香亚洲综合网| 精品国产99国产精品| 国产精品理伦片| 亚洲综合一区在线| 久久成人免费日本黄色| 9i在线看片成人免费| 欧美日韩精品系列| 国产日韩综合av| 亚洲一区影音先锋| 国产精品一区专区| 欧美午夜精品一区| 久久精品水蜜桃av综合天堂| 亚洲黄色性网站| 国内精品国产成人国产三级粉色 | 亚洲.国产.中文慕字在线| 韩国中文字幕2020精品| 在线观看区一区二| 久久精品视频在线看| 亚洲a一区二区| 东方aⅴ免费观看久久av| 欧美女孩性生活视频| 国产精品 日产精品 欧美精品| 欧美亚洲日本国产| 国产欧美精品国产国产专区| 无码av免费一区二区三区试看 | 欧美日韩亚洲综合| 中文字幕精品综合| 日本aⅴ精品一区二区三区| 色综合久久久久综合99| 久久久久久久久99精品| 日韩激情一区二区| 91成人免费在线视频| 中文字幕乱码亚洲精品一区| 人禽交欧美网站| 欧美三级视频在线观看| 亚洲欧洲www| 高潮精品一区videoshd| 欧美精品一区男女天堂| 天天影视涩香欲综合网 | 成人av电影免费在线播放| 日韩你懂的电影在线观看| 亚洲第一av色| 91极品视觉盛宴| 中文字幕亚洲不卡| 国产99久久精品| 久久男人中文字幕资源站| 麻豆一区二区99久久久久| 欧美精品一二三四| 亚洲大型综合色站| 欧美图区在线视频| 亚洲国产成人porn| 色国产综合视频| 亚洲精品水蜜桃| 色屁屁一区二区| 亚洲资源在线观看| 欧美午夜在线观看| 午夜国产精品一区| 3d动漫精品啪啪| 婷婷综合在线观看| 91精品国产综合久久久久久久 | 免费一级片91|