Jakarta ee activiviti业务流程引擎:扩展restapi

Jakarta ee activiviti业务流程引擎:扩展restapi,jakarta-ee,activiti,Jakarta Ee,Activiti,我想创建一些新的REST资源。例如,列出工作流上所有下一个可能的任务 我想创建我自己的战争,可以部署在Glassfish 4中。(帕亚拉) 我需要什么部门?如何创建新的端点URL Activiti REST应用程序是使用Spring MVC编写的。默认情况下,对org.activiti.rest.service.api进行组件扫描(请参阅) 因此,如果在同一个包中放置一个具有适当Spring MVC注释的自定义类,那么就有了一个自定义端点,可以在其中实现所需的内容 无需为此更改war文件,只需确

我想创建一些新的REST资源。例如,列出工作流上所有下一个可能的任务

我想创建我自己的战争,可以部署在Glassfish 4中。(帕亚拉)


我需要什么部门?如何创建新的端点URL

Activiti REST应用程序是使用Spring MVC编写的。默认情况下,对org.activiti.rest.service.api进行组件扫描(请参阅)

因此,如果在同一个包中放置一个具有适当Spring MVC注释的自定义类,那么就有了一个自定义端点,可以在其中实现所需的内容


无需为此更改war文件,只需确保新类位于应用程序的类路径上。

Activiti REST应用程序是使用Spring MVC编写的。默认情况下,对org.activiti.rest.service.api进行组件扫描(请参阅)

因此,如果在同一个包中放置一个具有适当Spring MVC注释的自定义类,那么就有了一个自定义端点,可以在其中实现所需的内容


没有必要为此更改war文件,您只需确保新类位于应用程序的类路径上。

Activiti只是一个jar,社区提供了许多API来解决它。但是,您可以使用Spring编写自己关于activiti的逻辑。基本上,它使用DB来处理/传输任何其他工作流都会执行的状态。因此,首先提供一个数据库,并在其中填充必要的模式/表。接下来选择您的UI(我强烈建议AngularJS成为当今最常用的框架之一)。将您的架构定义为您的UI将如何与Activiti交互。注意,这需要花费大量的时间。Activiti只是一个罐子,社区已经提供了很多API来解决这个问题。但是,您可以使用Spring编写自己关于activiti的逻辑。基本上,它使用DB来处理/传输任何其他工作流都会执行的状态。因此,首先提供一个数据库,并在其中填充必要的模式/表。接下来选择您的UI(我强烈建议AngularJS成为当今最常用的框架之一)。将您的架构定义为您的UI将如何与Activiti交互。小心,这要花很多时间

下面是一个示例Rest端点

package com.bp3.tupac.rest;

import com.bp3.tupac.service.ServiceException;
import com.bp3.tupac.service.InfoService;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value = "/tupac")
public class VersionRestController {

    /**
     * @return Some stuff
     * @throws ServiceException
     */
    @RequestMapping(value = "/info",
        produces = MediaType.APPLICATION_JSON_VALUE,
        method = RequestMethod.GET
    )
    public InfoService.Info getTupacInfo() throws ServiceException {
        try {
            return new InfoService().getTupacInfo();
        } catch (Exception e) {
            throw new ServiceException("Failure getting Tupac info....dog", e);
        }
    }
}
现在,您需要确保应用程序配置已设置为在组件扫描中包含此包。 为此,请将包添加到DispatcherServletConfiguration类中的component scan指令中

@Configuration
@ComponentScan(existing packages, "com.bp3.tupac.rest"})
之后,您应该能够调用路径:

找出是谁杀了图帕克

希望这有帮助。 格雷格

兰加洛

下面是一个示例Rest端点

package com.bp3.tupac.rest;

import com.bp3.tupac.service.ServiceException;
import com.bp3.tupac.service.InfoService;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value = "/tupac")
public class VersionRestController {

    /**
     * @return Some stuff
     * @throws ServiceException
     */
    @RequestMapping(value = "/info",
        produces = MediaType.APPLICATION_JSON_VALUE,
        method = RequestMethod.GET
    )
    public InfoService.Info getTupacInfo() throws ServiceException {
        try {
            return new InfoService().getTupacInfo();
        } catch (Exception e) {
            throw new ServiceException("Failure getting Tupac info....dog", e);
        }
    }
}
现在,您需要确保应用程序配置已设置为在组件扫描中包含此包。 为此,请将包添加到DispatcherServletConfiguration类中的component scan指令中

@Configuration
@ComponentScan(existing packages, "com.bp3.tupac.rest"})
之后,您应该能够调用路径:

找出是谁杀了图帕克

希望这有帮助。
Greg

这意味着我可以创建一个jar包,其中一个类与activitii source位于同一个包下,并将其放入rest war中进行部署。我的资源是否也会像普通activiti资源一样受到保护?您的rest端点受SecurityConfiguration类中配置的保护。您可以从此配置类管理任何Rest端点的保护级别。所谓保护,我指的是默认的activiti角色和权限。我不想为我的资源再次实现它。如果您使用相同的url模式/service/xxx,那么是的。否则,您需要添加一些配置,如Greg提到的。这意味着我可以创建一个jar包,其中一个类与activitii source位于同一个包下,并将其放入rest war中并进行部署。我的资源是否也会像一般activiti资源一样受到保护?您的rest端点受SecurityConfiguration类。您可以从此配置类管理任何Rest端点的保护级别。所谓保护,我指的是默认的activiti角色和权限。我不想为我的资源再次实现它。如果您使用相同的url模式/service/xxx,那么是的。否则,您需要添加一些配置,如Greg提到的。