21xrx.com
2024-09-17 03:37:32 Tuesday
登录
文章检索 我的文章 写文章
题解:泛微Java笔试题解析及代码案例
2023-06-15 18:57:58 深夜i     --     --
泛微OA Java 二次开发 工作流 代码案例 解析

近年来,泛微成为了企业移动办公自动化领域的先锋,泛微OA也在国内取得了很好的市场认可度。对于Java工程师来说,掌握泛微OA技术会增加职业竞争力,因此泛微成为了不少Java工程师的学习方向。本篇文章将对泛微Java笔试题进行解析,并提供一些泛微OA开发的代码案例。

Java工程师深耕泛微OA,首先要掌握泛微OA平台的架构和基本概念,下面是几个重要的概念:

1.流程(process):流程是业务逻辑的载体,用于描述业务的处理流程。

2.表单(form):表单是对业务数据进行录入、修改的一个界面。

3.视图(view):视图是语义完整的数据呈现方式,它可以呈现查询的结果,也可以呈现自定义的展示逻辑。

4.服务(service):服务是抽象和封装了一组逻辑操作的功能模块,主要完成业务逻辑封装,以便提供成熟可用的业务功能。

在掌握了泛微OA的重要概念后,接下来是 Java 开发框架的使用。泛微的 OA 平台可以使用Java EE 技术进行二次开发,目前官方支持的技术有 Struts2 和 Spring,这里我们使用 Spring技术进行二次开发操作。

下面是一个简单的案例,实现工作流的开发:

1.创建流转路线的流程模版文件workflows.xml

该文件在resources目录下,代码示例如下:


  

    

  

  

    

    

  

  

    

    

    

  

  

  

2.编写流程处理类ProcessService

流程处理类是核心部分,分别代表流程的启动,提交,退回的处理代码。


public class ProcessService {

  public static void startProcess(String key) {

    Context ctx = WfUtil.getContext();

    ProcessInstance processInstance = (ProcessInstance) ctx.newInstance(ProcessInstance.class.getName(), null);

    processInstance.start(key);//根据定义的key启动进程

    WfUtil.commit();

  }

  public static void submit(String taskId, String nodeName, HttpContext context) {

    TaskInstance taskInstance = (TaskInstance) context.newInstance(TaskInstance.class.getName(), null);

    taskInstance.setId(taskId);

    taskInstance.signal(nodeName);//环节名称

    WfUtil.commit();

  }

  public static void turnBack(String taskId, String nodeName, HttpContext context) {

    TaskInstance taskInstance = (TaskInstance) context.newInstance(TaskInstance.class.getName(), null);

    taskInstance.setId(taskId);

    taskInstance.retirePrevious(nodeName);

    WfUtil.commit();

  }

  public static HttpServletRequest getWorkflowInstanceUrl(ProcessInstance processInstance) {

    StringBuffer url = new StringBuffer();

    url.append(WfUtil.getCrmServerUrl());

    url.append(processInstance.getWorkflowInstanceURL());

    url.append(processInstance.getWorkflowInstanceId());

    url.append("&processtoken=").append(processInstance.getTokenId());

    return WorkflowWebUtil.getInstance(url.toString());

  }

}

3.编写流程的Action类


public class ProcessAction extends ForwardAction {

  private String taskId;

  private String nodeName;

  public String start() {

    ProcessService.startProcess("xxx");

    return SUCCESS;

  }

  public String submit() {

    ProcessService.submit(taskId, nodeName, this.getContext());

    return SUCCESS;

  }

  public String turnback() {

    ProcessService.turnBack(taskId, nodeName, this.getContext());

    return SUCCESS;

  }

  public String getWorkflowInstanceUrl() {

    ProcessInstance processInstance = WorkflowInstanceQuery.getInstance()

      .findByWhere("STATUSID = '1' AND OWNERID = '" + getUser().getId() + "'");

    HttpServletRequest request = ProcessService.getWorkflowInstanceUrl(processInstance);

    this.getContext().getResponse().sendRedirect(request.getRequestURI());

    return null;

  }

  //getter/setter方法

}

以上是有关泛微Java笔试题的解析及代码案例,对于想要深入掌握泛微OA的Java工程师,可以进行深入学习。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复