{"id":38,"date":"2026-05-27T17:52:13","date_gmt":"2026-05-27T09:52:13","guid":{"rendered":"https:\/\/blog.risun.wang\/?p=38"},"modified":"2026-05-27T17:52:17","modified_gmt":"2026-05-27T09:52:17","slug":"activiti-%e5%b8%b8%e7%94%a8%e7%b1%bb%e3%80%81api-%e4%b8%8e%e6%95%b0%e6%8d%ae%e5%ba%93%e8%a1%a8%e7%ac%94%e8%ae%b0","status":"publish","type":"post","link":"https:\/\/blog.risun.wang\/?p=38","title":{"rendered":"Activiti \u5e38\u7528\u7c7b\u3001API \u4e0e\u6570\u636e\u5e93\u8868\u7b14\u8bb0"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e00\u3001\u6838\u5fc3\u5f15\u64ce\u4e0e\u670d\u52a1<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u7c7b\/\u63a5\u53e3<\/th><th>\u8bf4\u660e<\/th><th>\u83b7\u53d6\u65b9\u5f0f<\/th><\/tr><\/thead><tbody><tr><td><code>ProcessEngine<\/code><\/td><td>\u6d41\u7a0b\u5f15\u64ce\u7684\u5165\u53e3\uff0c\u6240\u6709\u670d\u52a1\u90fd\u4ece\u5b83\u83b7\u53d6<\/td><td><code>ProcessEngines.getDefaultProcessEngine()<\/code><\/td><\/tr><tr><td><code>RepositoryService<\/code><\/td><td>\u7ba1\u7406\u6d41\u7a0b\u5b9a\u4e49\uff08\u90e8\u7f72\u3001\u67e5\u8be2\u3001\u5220\u9664\uff09<\/td><td><code>processEngine.getRepositoryService()<\/code><\/td><\/tr><tr><td><code>RuntimeService<\/code><\/td><td>\u7ba1\u7406\u6d41\u7a0b\u5b9e\u4f8b\uff08\u542f\u52a8\u3001\u63a8\u8fdb\u3001\u53d8\u91cf\uff09<\/td><td><code>processEngine.getRuntimeService()<\/code><\/td><\/tr><tr><td><code>TaskService<\/code><\/td><td>\u7ba1\u7406\u7528\u6237\u4efb\u52a1\uff08\u67e5\u8be2\u3001\u529e\u7406\u3001\u8ba4\u9886\u3001\u59d4\u6d3e\uff09<\/td><td><code>processEngine.getTaskService()<\/code><\/td><\/tr><tr><td><code>HistoryService<\/code><\/td><td>\u67e5\u8be2\u5386\u53f2\u6570\u636e\uff08\u5b9e\u4f8b\u3001\u6d3b\u52a8\u3001\u4efb\u52a1\uff09<\/td><td><code>processEngine.getHistoryService()<\/code><\/td><\/tr><tr><td><code>ManagementService<\/code><\/td><td>\u5f15\u64ce\u7ba1\u7406\u4e0e\u7ef4\u62a4\uff08\u4f5c\u4e1a\u3001\u6570\u636e\u5e93\u64cd\u4f5c\uff09<\/td><td><code>processEngine.getManagementService()<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e8c\u3001\u6d41\u7a0b\u5b9a\u4e49\u76f8\u5173\uff08Repository\uff09<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u7c7b\/\u63a5\u53e3<\/th><th>\u6982\u5ff5<\/th><th>\u5bf9\u5e94\u8868<\/th><\/tr><\/thead><tbody><tr><td><code>Deployment<\/code><\/td><td>\u90e8\u7f72\u5355\u5143\uff0c\u5c06BPMN\/XML\u8d44\u6e90\u52a0\u8f7d\u5230\u5f15\u64ce<\/td><td><code>ACT_RE_DEPLOYMENT<\/code><\/td><\/tr><tr><td><code>ProcessDefinition<\/code><\/td><td>\u6d41\u7a0b\u5b9a\u4e49\uff08\u62bd\u8c61\u63a5\u53e3\uff09<\/td><td><code>ACT_RE_PROCDEF<\/code><\/td><\/tr><tr><td><code>ProcessDefinitionEntity<\/code><\/td><td>\u6d41\u7a0b\u5b9a\u4e49\u7684\u5b9e\u4f53\u5b9e\u73b0\uff0c\u5305\u542bBPMN\u89e3\u6790\u540e\u7684\u5b8c\u6574\u7ed3\u6784<\/td><td><code>ACT_RE_PROCDEF<\/code><\/td><\/tr><tr><td><code>TaskDefinition<\/code><\/td><td>\u4efb\u52a1\u5b9a\u4e49\uff08BPMN\u4e2d\u7684\u5143\u6570\u636e\uff09\uff0c\u4e0d\u662f\u6570\u636e\u5e93\u8868\uff0c\u800c\u662f\u8fd0\u884c\u65f6\u89e3\u6790\u7684\u7ed3\u6784\uff0c\u5b58\u50a8\u4e8e<code>ProcessDefinitionEntity<\/code>\u4e2d<\/td><td>\u65e0\u72ec\u7acb\u8868\uff0c\u4fe1\u606f\u5728<code>ACT_RE_PROCDEF<\/code>\u7684\u5b57\u8282\u7801\u8d44\u6e90\u4e2d<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e09\u3001\u6d41\u7a0b\u5b9e\u4f8b\u4e0e\u6267\u884c\u76f8\u5173\uff08Runtime\uff09<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u7c7b\/\u63a5\u53e3<\/th><th>\u6982\u5ff5<\/th><th>\u5bf9\u5e94\u8868<\/th><\/tr><\/thead><tbody><tr><td><code>ProcessInstance<\/code><\/td><td>\u6d41\u7a0b\u5b9e\u4f8b\uff08\u4e00\u6b21\u5177\u4f53\u4e1a\u52a1\u8bf7\u6c42\uff09<\/td><td><code>ACT_RU_EXECUTION<\/code>\uff08\u6839\u6267\u884c\u5bf9\u8c61\uff09<\/td><\/tr><tr><td><code>Execution<\/code><\/td><td>\u6267\u884c\u5bf9\u8c61\uff0c\u6d41\u7a0b\u5b9e\u4f8b\u7684\u539f\u5b50\u5206\u652f<\/td><td><code>ACT_RU_EXECUTION<\/code><\/td><\/tr><tr><td><code>Variable<\/code><\/td><td>\u6d41\u7a0b\u53d8\u91cf\uff0c\u4e0a\u4e0b\u6587\u6570\u636e<\/td><td><code>ACT_RU_VARIABLE<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u56db\u3001\u4efb\u52a1\u76f8\u5173\uff08Runtime + History\uff09<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u7c7b\/\u63a5\u53e3<\/th><th>\u6982\u5ff5<\/th><th>\u5bf9\u5e94\u8868<\/th><\/tr><\/thead><tbody><tr><td><code>Task<\/code><\/td><td>\u7528\u6237\u4efb\u52a1\u63a5\u53e3\uff08\u6807\u51c6API\uff09<\/td><td><code>ACT_RU_TASK<\/code>\uff08\u8fd0\u884c\u65f6\uff09<br><code>ACT_HI_TASKINST<\/code>\uff08\u5386\u53f2\uff09<\/td><\/tr><tr><td><code>TaskEntity<\/code><\/td><td><code>Task<\/code>\u63a5\u53e3\u7684\u5b9e\u4f53\u5b9e\u73b0\u7c7b\uff0c\u5305\u542b\u6301\u4e45\u5316\u5b57\u6bb5<\/td><td><code>ACT_RU_TASK<\/code><\/td><\/tr><tr><td><code>TaskDefinition<\/code><\/td><td>\u4efb\u52a1\u5b9a\u4e49\uff08\u5982\u4efb\u52a1\u540d\u79f0\u3001\u5019\u9009\u7ec4\u3001\u8868\u5355key\uff09\uff0c\u4e0e\u5b9e\u4f8b\u65e0\u5173<\/td><td>\u65e0\u72ec\u7acb\u8868\uff08\u5b58\u50a8\u5728<code>ProcessDefinitionEntity<\/code>\u4e2d\uff09<\/td><\/tr><tr><td><code>IdentityLink<\/code><\/td><td>\u4efb\u52a1\u4e0e\u7528\u6237\/\u7ec4\u7684\u5173\u8054\uff08\u5019\u9009\u4eba\/\u8ba4\u9886\u4eba\uff09<\/td><td><code>ACT_RU_IDENTITYLINK<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e94\u3001\u5e38\u7528API\u793a\u4f8b\uff08Java\uff09<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. \u90e8\u7f72\u6d41\u7a0b<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>ProcessEngine pe = ProcessEngines.getDefaultProcessEngine();\nRepositoryService rs = pe.getRepositoryService();\nDeployment dep = rs.createDeployment()\n    .addClasspathResource(\"process.bpmn\")\n    .deploy();<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u542f\u52a8\u6d41\u7a0b\u5b9e\u4f8b<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>RuntimeService rs = pe.getRuntimeService();\nProcessInstance pi = rs.startProcessInstanceByKey(\"myProcessKey\");<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. \u67e5\u8be2\u5e76\u529e\u7406\u4efb\u52a1<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>TaskService ts = pe.getTaskService();\nList&lt;Task&gt; tasks = ts.createTaskQuery()\n    .taskAssignee(\"\u5f20\u4e09\")\n    .list();\nfor (Task t : tasks) {\n    ts.complete(t.getId());\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4. \u83b7\u53d6\u6d41\u7a0b\u5b9a\u4e49\u5b9e\u4f53<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>ProcessDefinition def = rs.createProcessDefinitionQuery()\n    .processDefinitionKey(\"myKey\")\n    .latestVersion()\n    .singleResult();\n\/\/ \u82e5\u9700\u8981 ProcessDefinitionEntity\uff08\u901a\u5e38\u65e0\u9700\u663e\u5f0f\u4f7f\u7528\uff09\n\/\/ \u53ef\u76f4\u63a5\u5f3a\u8f6c\u6216\u901a\u8fc7\u5185\u90e8\u670d\u52a1\u83b7\u53d6<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u516d\u3001\u6838\u5fc3\u6570\u636e\u5e93\u8868\u6e05\u5355<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u5206\u7c7b<\/th><th>\u8868\u540d<\/th><th>\u8bf4\u660e<\/th><\/tr><\/thead><tbody><tr><td><strong>\u901a\u7528<\/strong><\/td><td><code>ACT_GE_BYTEARRAY<\/code><\/td><td>\u5b58\u50a8BPMN\u3001\u56fe\u7247\u7b49\u4e8c\u8fdb\u5236\u8d44\u6e90<\/td><\/tr><tr><td><\/td><td><code>ACT_GE_PROPERTY<\/code><\/td><td>\u5f15\u64ce\u5c5e\u6027\u8868\uff08\u7248\u672c\u3001schema\u7b49\uff09<\/td><\/tr><tr><td><strong>\u6d41\u7a0b\u4ed3\u5e93<\/strong><\/td><td><code>ACT_RE_DEPLOYMENT<\/code><\/td><td>\u90e8\u7f72\u8bb0\u5f55<\/td><\/tr><tr><td><\/td><td><code>ACT_RE_PROCDEF<\/code><\/td><td>\u6d41\u7a0b\u5b9a\u4e49\uff08\u542b<code>ProcessDefinitionEntity<\/code>\u6570\u636e\uff09<\/td><\/tr><tr><td><strong>\u8fd0\u884c\u65f6<\/strong><\/td><td><code>ACT_RU_EXECUTION<\/code><\/td><td>\u6267\u884c\u5bf9\u8c61\uff08\u6d41\u7a0b\u5b9e\u4f8b\u3001\u5206\u652f\uff09<\/td><\/tr><tr><td><\/td><td><code>ACT_RU_TASK<\/code><\/td><td>\u8fd0\u884c\u4e2d\u7684\u4efb\u52a1\uff08\u5bf9\u5e94<code>TaskEntity<\/code>\uff09<\/td><\/tr><tr><td><\/td><td><code>ACT_RU_VARIABLE<\/code><\/td><td>\u8fd0\u884c\u65f6\u53d8\u91cf<\/td><\/tr><tr><td><\/td><td><code>ACT_RU_IDENTITYLINK<\/code><\/td><td>\u4efb\u52a1\u53c2\u4e0e\u8005\u5173\u7cfb<\/td><\/tr><tr><td><\/td><td><code>ACT_RU_JOB<\/code><\/td><td>\u5b9a\u65f6\/\u5f02\u6b65\u4f5c\u4e1a<\/td><\/tr><tr><td><strong>\u5386\u53f2<\/strong><\/td><td><code>ACT_HI_PROCINST<\/code><\/td><td>\u5386\u53f2\u6d41\u7a0b\u5b9e\u4f8b<\/td><\/tr><tr><td><\/td><td><code>ACT_HI_TASKINST<\/code><\/td><td>\u5386\u53f2\u4efb\u52a1\u5b9e\u4f8b<\/td><\/tr><tr><td><\/td><td><code>ACT_HI_ACTINST<\/code><\/td><td>\u5386\u53f2\u6d3b\u52a8\u5b9e\u4f8b\uff08\u6bcf\u4e2a\u8282\u70b9\uff09<\/td><\/tr><tr><td><\/td><td><code>ACT_HI_VARINST<\/code><\/td><td>\u5386\u53f2\u53d8\u91cf<\/td><\/tr><tr><td><strong>\u8eab\u4efd<\/strong><\/td><td><code>ACT_ID_USER<\/code> \/ <code>ACT_ID_GROUP<\/code><\/td><td>\u7528\u6237\/\u7ec4\uff08\u53ef\u9009\uff0c\u5e38\u4e0e\u5916\u90e8\u7cfb\u7edf\u96c6\u6210\uff09<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e03\u3001\u5bf9\u8c61\u5173\u7cfb\u56fe\u89e3<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>ProcessDefinitionEntity (1) \u2500\u2500\u25ba \u5305\u542b\u591a\u4e2a \u2500\u2500\u25ba TaskDefinition (N)\n        \u2502\n        \u2502 \u5b9e\u4f8b\u5316\n        \u25bc\nProcessInstance \u2500\u2500\u25ba \u5f53\u524d\u8282\u70b9 \u2500\u2500\u25ba TaskEntity (\u5f15\u7528TaskDefinition)\n        \u2502                               \u2502\n        \u2502                               \u2514\u2500 \u5bf9\u5e94 ACT_RU_TASK\n        \u25bc\nExecution (\u5b50\u5206\u652f)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u516b\u3001\u6ce8\u610f\u4e8b\u9879<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>TaskDefinition<\/strong> \u662f<strong>\u9759\u6001\u5b9a\u4e49<\/strong>\uff0c\u63cf\u8ff0\u4e86\u4efb\u52a1\u5e94\u8be5\u201c\u957f\u4ec0\u4e48\u6837\u201d\uff1b<strong>TaskEntity<\/strong> \u662f<strong>\u8fd0\u884c\u65f6\u5b9e\u4f8b<\/strong>\uff0c\u8bb0\u5f55\u4e86\u4efb\u52a1\u201c\u5f53\u524d\u72b6\u6001\u201d\u3002<\/li>\n\n\n\n<li>\u901a\u5e38\u60c5\u51b5\u4e0b<strong>\u4e0d\u9700\u8981\u76f4\u63a5\u64cd\u4f5c<\/strong> <code>ProcessDefinitionEntity<\/code> \u548c <code>TaskEntity<\/code>\uff0c\u4f7f\u7528 <code>ProcessDefinition<\/code> \u548c <code>Task<\/code> \u63a5\u53e3\u5373\u53ef\u3002<\/li>\n\n\n\n<li>\u6240\u6709 <code>Entity<\/code> \u540e\u7f00\u7684\u7c7b\uff08\u5982 <code>TaskEntity<\/code>\uff09\u90fd\u662f MyBatis \u6620\u5c04\u7684\u6301\u4e45\u5316\u5bf9\u8c61\uff0c\u76f4\u63a5\u64cd\u4f5c\u53ef\u80fd\u7ed5\u8fc7\u7f13\u5b58\/\u6821\u9a8c\uff0c\u4e0d\u63a8\u8350\u5728\u4e1a\u52a1\u4ee3\u7801\u4e2d\u4f7f\u7528\u3002<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e5d\u3001\u5b9e\u9645\u6d41\u7a0b\u4e3e\u4f8b\uff1a\u8bf7\u5047\u6d41\u7a0b\u5404\u9636\u6bb5\u4f7f\u7528\u7684\u5bf9\u8c61<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u6d41\u7a0b\u5b9a\u4e49\uff08BPMN\uff09<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;process id=\"leaveProcess\" name=\"\u8bf7\u5047\u6d41\u7a0b\"&gt;\n  &lt;startEvent id=\"start\" \/&gt;\n  &lt;userTask id=\"applyTask\" name=\"\u586b\u5199\u8bf7\u5047\u5355\" assignee=\"${applicant}\" \/&gt;\n  &lt;userTask id=\"approveTask\" name=\"\u90e8\u95e8\u7ecf\u7406\u5ba1\u6279\" assignee=\"manager\" \/&gt;\n  &lt;endEvent id=\"end\" \/&gt;\n&lt;\/process&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u90e8\u7f72\u540e\u7684\u6d41\u7a0b\u5b9a\u4e49ID\uff1a<code>leaveProcess:1:101<\/code><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u9636\u6bb5\u4e00\uff1a\u90e8\u7f72\u6d41\u7a0b\u5b9a\u4e49<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u64cd\u4f5c<\/th><th>\u4f7f\u7528\u7684API\/\u7c7b<\/th><th>\u6838\u5fc3\u5bf9\u8c61<\/th><th>\u6570\u636e\u5e93\u8868<\/th><\/tr><\/thead><tbody><tr><td>\u52a0\u8f7dBPMN\u6587\u4ef6\u5e76\u90e8\u7f72<\/td><td><code>RepositoryService.createDeployment().addClasspathResource().deploy()<\/code><\/td><td><code>Deployment<\/code>, <code>ProcessDefinition<\/code>, <code>ProcessDefinitionEntity<\/code>, <code>ActivityImpl<\/code><\/td><td><code>ACT_RE_DEPLOYMENT<\/code>, <code>ACT_RE_PROCDEF<\/code>, <code>ACT_GE_BYTEARRAY<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5185\u90e8\u8fc7\u7a0b<\/strong>\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u89e3\u6790BPMN\u6587\u4ef6\u751f\u6210 <code>BpmnModel<\/code><\/li>\n\n\n\n<li>\u521b\u5efa <code>ProcessDefinitionEntity<\/code>\uff08\u6d41\u7a0b\u5b9a\u4e49\u7684\u8fd0\u884c\u65f6\u84dd\u56fe\uff09<\/li>\n\n\n\n<li>\u4e3a\u6bcf\u4e2a\u8282\u70b9\uff08<code>startEvent<\/code>, <code>applyTask<\/code>, <code>approveTask<\/code>, <code>endEvent<\/code>\uff09\u521b\u5efa <code>ActivityImpl<\/code> \u5bf9\u8c61\uff0c\u5e76\u5b58\u50a8\u4e8e <code>ProcessDefinitionEntity<\/code> \u4e2d<\/li>\n\n\n\n<li>\u5176\u4e2d <code>applyTask<\/code> \u548c <code>approveTask<\/code> \u7684 <code>ActivityImpl<\/code> \u5185\u90e8\u5305\u542b <code>TaskDefinition<\/code>\uff08\u5b58\u50a8assignee\u7b49\u4efb\u52a1\u5c5e\u6027\uff09<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u9636\u6bb5\u4e8c\uff1a\u542f\u52a8\u6d41\u7a0b\u5b9e\u4f8b<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>runtimeService.startProcessInstanceByKey(\"leaveProcess\", \"LEAVE-001\");<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u4f7f\u7528\u7684API\/\u7c7b<\/th><th>\u6838\u5fc3\u5bf9\u8c61<\/th><th>\u6570\u636e\u5e93\u8868<\/th><\/tr><\/thead><tbody><tr><td><code>RuntimeService.startProcessInstanceByKey<\/code><\/td><td><code>ProcessInstance<\/code>, <code>Execution<\/code>, <code>ActivityImpl<\/code>\uff08\u8d77\u59cb\u8282\u70b9\uff09<\/td><td><code>ACT_RU_EXECUTION<\/code>, <code>ACT_RU_TASK<\/code>, <code>ACT_RU_VARIABLE<\/code>\uff08\u5982\u6709\uff09<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8be6\u7ec6\u6b65\u9aa4\u4e0e\u5bf9\u8c61<\/strong>\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u521b\u5efa\u6839\u6267\u884c\u5bf9\u8c61<\/strong>\uff1a\u5f15\u64ce\u751f\u6210\u4e00\u4e2a <code>Execution<\/code> \u5bf9\u8c61\uff08\u5b9e\u73b0\u7c7b <code>ExecutionImpl<\/code>\uff09\uff0c\u540c\u65f6\u5b83\u4e5f\u662f <code>ProcessInstance<\/code> \u63a5\u53e3\u7684\u5b9e\u73b0\u3002<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u63d2\u5165 <code>ACT_RU_EXECUTION<\/code>\uff0c<code>ID_ = 2001<\/code>\uff0c<code>PROC_INST_ID_ = 2001<\/code>\uff0c<code>IS_PROCESS_INSTANCE_ = 1<\/code><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u83b7\u53d6\u8d77\u59cb\u8282\u70b9\u7684 ActivityImpl<\/strong>\uff1a\u4ece <code>ProcessDefinitionEntity<\/code> \u4e2d\u6839\u636e <code>startEvent<\/code> \u7684id\u627e\u5230\u5bf9\u5e94\u7684 <code>ActivityImpl<\/code>\u3002<\/li>\n\n\n\n<li><strong>\u6267\u884c\u8d77\u59cb\u8282\u70b9\u884c\u4e3a<\/strong>\uff1a\u8c03\u7528 <code>startEvent<\/code> \u7684 <code>ActivityImpl<\/code> \u6240\u7ed1\u5b9a\u7684 <code>ActivityBehavior<\/code>\uff08<code>NoneStartEventActivityBehavior<\/code>\uff09\uff0c\u5c06\u6267\u884c\u6d41\u8f6c\u5230\u7b2c\u4e00\u4e2a\u7528\u6237\u4efb\u52a1 <code>applyTask<\/code>\u3002<\/li>\n\n\n\n<li><strong>\u521b\u5efa\u7b2c\u4e00\u4e2a\u7528\u6237\u4efb\u52a1<\/strong>\uff1a\u5f15\u64ce\u627e\u5230 <code>applyTask<\/code> \u5bf9\u5e94\u7684 <code>ActivityImpl<\/code>\uff0c\u5176\u5185\u90e8\u5305\u542b <code>TaskDefinition<\/code>\u3002\u6839\u636e <code>TaskDefinition<\/code> \u4e2d\u7684assignee\u8868\u8fbe\u5f0f\uff08<code>${applicant}<\/code>\uff09\u89e3\u6790\u51fa\u529e\u7406\u4eba\uff08\u5047\u8bbe\u6d41\u7a0b\u53d8\u91cf\u4e2d\u4f20\u5165\u4e86<code>applicant=\u5f20\u4e09<\/code>\uff09\uff0c\u521b\u5efa <code>TaskEntity<\/code> \u5bf9\u8c61\u3002<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u63d2\u5165 <code>ACT_RU_TASK<\/code>\uff0c<code>ID_ = 3001<\/code>\uff0c<code>TASK_DEF_KEY_ = 'applyTask'<\/code>\uff0c<code>ASSIGNEE_ = '\u5f20\u4e09'<\/code>\uff0c<code>EXECUTION_ID_ = 2001<\/code>\uff0c<code>PROC_INST_ID_ = 2001<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b64\u65f6\u4ea7\u751f\u7684\u5bf9\u8c61\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>ProcessInstance<\/code>\uff08\u6839 <code>ExecutionImpl<\/code>\uff0cID=2001\uff09<\/li>\n\n\n\n<li><code>TaskEntity<\/code>\uff08ID=3001\uff09<\/li>\n\n\n\n<li>\u4e24\u4e2a <code>ActivityImpl<\/code> \u88ab\u5f15\u7528\uff1a\u8d77\u59cb\u8282\u70b9\u548c <code>applyTask<\/code><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u9636\u6bb5\u4e09\uff1a\u529e\u7406\u7b2c\u4e00\u4e2a\u4efb\u52a1\uff08\u586b\u5199\u8bf7\u5047\u5355\uff09<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>taskService.complete(\"3001\");<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u4f7f\u7528\u7684API\/\u7c7b<\/th><th>\u6838\u5fc3\u5bf9\u8c61<\/th><th>\u6570\u636e\u5e93\u8868<\/th><\/tr><\/thead><tbody><tr><td><code>TaskService.complete<\/code><\/td><td><code>TaskEntity<\/code>\uff08\u88ab\u5b8c\u6210\u7684\u4efb\u52a1\uff09, <code>DelegateTask<\/code>, <code>ActivityImpl<\/code>\uff08\u5f53\u524d\u8282\u70b9\uff09, <code>Execution<\/code><\/td><td><code>ACT_RU_TASK<\/code>\uff08\u5220\u9664\u539f\u4efb\u52a1\uff09\uff0c\u53ef\u80fd\u4ea7\u751f <code>ACT_HI_TASKINST<\/code>, <code>ACT_HI_ACTINST<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8be6\u7ec6\u6b65\u9aa4<\/strong>\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u67e5\u8be2\u4efb\u52a1<\/strong>\uff1a<code>taskService.createTaskQuery().taskId(\"3001\")<\/code> \u8fd4\u56de <code>TaskEntity<\/code> \u5bf9\u8c61\uff08\u5b9e\u9645\u4e0a\u5305\u542b\u5bf9 <code>ActivityImpl<\/code> \u7684\u5f15\u7528\uff09\u3002<\/li>\n\n\n\n<li><strong>\u8c03\u7528\u5b8c\u6210\u4efb\u52a1<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5f15\u64ce\u5220\u9664 <code>ACT_RU_TASK<\/code> \u4e2d ID=3001 \u7684\u8bb0\u5f55<\/li>\n\n\n\n<li>\u5c06\u4efb\u52a1\u6570\u636e\u5f52\u6863\u5230 <code>ACT_HI_TASKINST<\/code> \u548c <code>ACT_HI_ACTINST<\/code><\/li>\n\n\n\n<li>\u83b7\u53d6\u5f53\u524d\u4efb\u52a1\u5bf9\u5e94\u7684 <code>ActivityImpl<\/code>\uff08\u5373 <code>applyTask<\/code>\uff09\uff0c\u8c03\u7528\u5176 <code>ActivityBehavior<\/code>\uff08<code>UserTaskActivityBehavior<\/code>\uff09\u7684 <code>leave<\/code> \u65b9\u6cd5<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6d41\u8f6c\u5230\u4e0b\u4e00\u4e2a\u8282\u70b9<\/strong>\uff1a\u6839\u636e <code>applyTask<\/code> \u7684\u51fa\u8fb9\uff08<code>transition<\/code>\uff09\uff0c\u627e\u5230\u4e0b\u4e00\u4e2a\u8282\u70b9 <code>approveTask<\/code> \u7684 <code>ActivityImpl<\/code>\uff0c\u6267\u884c\u5176\u884c\u4e3a\u3002<\/li>\n\n\n\n<li><strong>\u521b\u5efa\u7b2c\u4e8c\u4e2a\u4efb\u52a1<\/strong>\uff1a\u6839\u636e <code>approveTask<\/code> \u7684 <code>ActivityImpl<\/code> \u4e2d\u7684 <code>TaskDefinition<\/code>\uff08assignee\u56fa\u5b9a\u4e3a<code>manager<\/code>\uff09\uff0c\u521b\u5efa\u65b0\u7684 <code>TaskEntity<\/code>\u3002<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u63d2\u5165 <code>ACT_RU_TASK<\/code>\uff0c<code>ID_ = 3002<\/code>\uff0c<code>ASSIGNEE_ = 'manager'<\/code>\uff0c<code>EXECUTION_ID_ = 2001<\/code>\uff08\u540c\u4e00\u4e2a\u6267\u884c\u5bf9\u8c61\uff09<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b64\u65f6\u5bf9\u8c61\u53d8\u5316\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u65e7\u7684 <code>TaskEntity<\/code>\uff083001\uff09\u5df2\u88ab\u5220\u9664\uff08\u5386\u53f2\u8868\u4e2d\u4fdd\u7559\uff09<\/li>\n\n\n\n<li>\u65b0\u7684 <code>TaskEntity<\/code>\uff083002\uff09\u88ab\u521b\u5efa<\/li>\n\n\n\n<li><code>Execution<\/code>\uff08\u6839\u6267\u884c\u5bf9\u8c61\uff09\u7684\u5f53\u524d\u6d3b\u52a8\u8282\u70b9\u53d8\u4e3a <code>approveTask<\/code> \u5bf9\u5e94\u7684 <code>ActivityImpl<\/code><\/li>\n\n\n\n<li><code>ActivityImpl<\/code>\uff08<code>applyTask<\/code> \u548c <code>approveTask<\/code>\uff09\u59cb\u7ec8\u5b58\u5728\u4e8e <code>ProcessDefinitionEntity<\/code> \u4e2d\uff0c\u88ab\u5f15\u7528<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u9636\u6bb5\u56db\uff1a\u529e\u7406\u7b2c\u4e8c\u4e2a\u4efb\u52a1\uff08\u7ecf\u7406\u5ba1\u6279\uff09<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>taskService.complete(\"3002\");<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u4f7f\u7528\u7684API\/\u7c7b<\/th><th>\u6838\u5fc3\u5bf9\u8c61<\/th><th>\u6570\u636e\u5e93\u8868<\/th><\/tr><\/thead><tbody><tr><td><code>TaskService.complete<\/code><\/td><td><code>TaskEntity<\/code>, <code>DelegateTask<\/code>, <code>ActivityImpl<\/code>\uff08\u5f53\u524d\u8282\u70b9\uff09, <code>Execution<\/code><\/td><td><code>ACT_RU_TASK<\/code>\uff08\u5220\u9664\u6700\u540e\u4efb\u52a1\uff09\uff0c<code>ACT_RU_EXECUTION<\/code>\uff08\u5220\u9664\u6839\u6267\u884c\uff09\uff0c<code>ACT_HI_PROCINST<\/code>, <code>ACT_HI_TASKINST<\/code>, <code>ACT_HI_ACTINST<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8be6\u7ec6\u6b65\u9aa4<\/strong>\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5b8c\u6210 <code>approveTask<\/code>\uff0c\u5f15\u64ce\u5220\u9664 <code>ACT_RU_TASK<\/code> \u4e2d ID=3002 \u7684\u8bb0\u5f55\u3002<\/li>\n\n\n\n<li>\u83b7\u53d6 <code>approveTask<\/code> \u5bf9\u5e94\u7684 <code>ActivityImpl<\/code>\uff0c\u6267\u884c\u5176\u884c\u4e3a\uff0c\u6d41\u8f6c\u5230 <code>endEvent<\/code>\u3002<\/li>\n\n\n\n<li>\u6267\u884c <code>endEvent<\/code> \u7684 <code>ActivityImpl<\/code> \u884c\u4e3a\uff08<code>NoneEndEventActivityBehavior<\/code>\uff09\uff0c\u7ed3\u675f\u6d41\u7a0b\u5b9e\u4f8b\u3002<\/li>\n\n\n\n<li><strong>\u6e05\u7406\u8fd0\u884c\u65f6\u6570\u636e<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5220\u9664 <code>ACT_RU_EXECUTION<\/code> \u4e2d <code>PROC_INST_ID_ = 2001<\/code> \u7684\u6240\u6709\u8bb0\u5f55\uff08\u6839\u6267\u884c\u5bf9\u8c61\uff09<\/li>\n\n\n\n<li>\u5220\u9664 <code>ACT_RU_VARIABLE<\/code> \u4e2d\u8be5\u5b9e\u4f8b\u7684\u53d8\u91cf\uff08\u5982\u6709\uff09<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5199\u5165\u5386\u53f2\u6570\u636e<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>ACT_HI_PROCINST<\/code> \u63d2\u5165\u4e00\u6761\u8bb0\u5f55\uff0c\u8bb0\u5f55\u5f00\u59cb\u65f6\u95f4\u3001\u7ed3\u675f\u65f6\u95f4\u3001<code>businessKey=LEAVE-001<\/code> \u7b49<\/li>\n\n\n\n<li><code>ACT_HI_TASKINST<\/code> \u5df2\u6709\u4e24\u6761\u4efb\u52a1\u5386\u53f2\u8bb0\u5f55<\/li>\n\n\n\n<li><code>ACT_HI_ACTINST<\/code> \u8bb0\u5f55\u6bcf\u4e2a\u6d3b\u52a8\u7684\u6267\u884c\u8f68\u8ff9\uff08\u5305\u62ec startEvent, applyTask, approveTask, endEvent\uff09<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b64\u65f6\u8fd0\u884c\u65f6\u4e0d\u518d\u6709\u8be5\u6d41\u7a0b\u5b9e\u4f8b\u7684\u4efb\u4f55\u6570\u636e\u3002\u6240\u6709\u6d41\u7a0b\u5b9a\u4e49\u5bf9\u8c61\uff08<code>ProcessDefinitionEntity<\/code>, <code>ActivityImpl<\/code>, <code>TaskDefinition<\/code>\uff09\u4ecd\u7136\u4fdd\u7559\u5728\u7f13\u5b58\u4e2d\uff0c\u53ef\u4f9b\u65b0\u7684\u6d41\u7a0b\u5b9e\u4f8b\u4f7f\u7528\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u5bf9\u8c61\u751f\u547d\u5468\u671f\u603b\u7ed3\u8868<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u5bf9\u8c61<\/th><th>\u521b\u5efa\u65f6\u673a<\/th><th>\u9500\u6bc1\/\u6e05\u7406\u65f6\u673a<\/th><th>\u5b58\u50a8\u4f4d\u7f6e<\/th><\/tr><\/thead><tbody><tr><td><code>ProcessDefinitionEntity<\/code><\/td><td>\u90e8\u7f72\u6d41\u7a0b\u5b9a\u4e49<\/td><td>\u6d41\u7a0b\u5b9a\u4e49\u88ab\u5220\u9664\u6216\u5f15\u64ce\u91cd\u542f\uff08\u7f13\u5b58\u53ef\u91cd\u65b0\u52a0\u8f7d\uff09<\/td><td>\u5185\u5b58\u7f13\u5b58 + <code>ACT_RE_PROCDEF<\/code><\/td><\/tr><tr><td><code>ActivityImpl<\/code><\/td><td>\u90e8\u7f72\u6d41\u7a0b\u5b9a\u4e49\uff08\u89e3\u6790BPMN\u65f6\uff09<\/td><td>\u540c <code>ProcessDefinitionEntity<\/code><\/td><td>\u5185\u5b58\u7f13\u5b58\uff08\u4f5c\u4e3a<code>ProcessDefinitionEntity<\/code>\u7684\u4e00\u90e8\u5206\uff09<\/td><\/tr><tr><td><code>TaskDefinition<\/code><\/td><td>\u90e8\u7f72\u6d41\u7a0b\u5b9a\u4e49\uff08\u89e3\u6790\u7528\u6237\u4efb\u52a1\u65f6\uff09<\/td><td>\u540c <code>ProcessDefinitionEntity<\/code><\/td><td>\u5185\u5b58\u7f13\u5b58\uff08\u88ab<code>ActivityImpl<\/code>\u5f15\u7528\uff09<\/td><\/tr><tr><td><code>Deployment<\/code><\/td><td>\u90e8\u7f72\u6d41\u7a0b\u5b9a\u4e49<\/td><td>\u6d41\u7a0b\u5b9a\u4e49\u88ab\u5220\u9664<\/td><td><code>ACT_RE_DEPLOYMENT<\/code><\/td><\/tr><tr><td><code>Execution<\/code> \/ <code>ProcessInstance<\/code><\/td><td>\u542f\u52a8\u6d41\u7a0b\u5b9e\u4f8b<\/td><td>\u6d41\u7a0b\u5b9e\u4f8b\u7ed3\u675f<\/td><td><code>ACT_RU_EXECUTION<\/code>\uff08\u8fd0\u884c\u65f6\uff09<br><code>ACT_HI_PROCINST<\/code>\uff08\u5386\u53f2\uff09<\/td><\/tr><tr><td><code>TaskEntity<\/code><\/td><td>\u6d41\u7a0b\u6d41\u8f6c\u5230\u7528\u6237\u4efb\u52a1\u65f6<\/td><td>\u4efb\u52a1\u5b8c\u6210\u65f6<\/td><td><code>ACT_RU_TASK<\/code>\uff08\u8fd0\u884c\u65f6\uff09<br><code>ACT_HI_TASKINST<\/code>\uff08\u5386\u53f2\uff09<\/td><\/tr><tr><td><code>DelegateTask<\/code><\/td><td>\u4efb\u52a1\u76d1\u542c\u5668\u6216\u529e\u7406\u64cd\u4f5c\u4e2d<\/td><td>\u4e34\u65f6\u5bf9\u8c61\uff0c\u65b9\u6cd5\u7ed3\u675f\u540e\u53ef\u88abGC<\/td><td>\u65e0\u6301\u4e45\u5316<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e00\u53e5\u8bdd\u603b\u7ed3<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u9759\u6001\u84dd\u56fe<\/strong>\uff1a<code>ProcessDefinitionEntity<\/code> \u5305\u542b\u6240\u6709 <code>ActivityImpl<\/code>\uff08\u6bcf\u4e2a\u8282\u70b9\u4e00\u4e2a\uff09\uff0c\u7528\u6237\u4efb\u52a1\u7684 <code>ActivityImpl<\/code> \u5305\u542b <code>TaskDefinition<\/code>\u3002<\/li>\n\n\n\n<li><strong>\u8fd0\u884c\u65f6\u5b9e\u4f8b<\/strong>\uff1a<code>ProcessInstance<\/code>\uff08\u7531 <code>ExecutionImpl<\/code> \u5b9e\u73b0\uff09\u4ee3\u8868\u4e00\u6b21\u6d41\u7a0b\u6267\u884c\uff0c<code>TaskEntity<\/code> \u4ee3\u8868\u5f53\u524d\u5f85\u529e\u4efb\u52a1\uff0c\u5b83\u4eec\u90fd\u5f15\u7528\u4e86\u5bf9\u5e94\u7684 <code>ActivityImpl<\/code> \u6765\u83b7\u53d6\u8282\u70b9\u884c\u4e3a\u5b9a\u4e49\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00\u3001\u6838\u5fc3\u5f15\u64ce\u4e0e\u670d\u52a1 \u7c7b\/\u63a5\u53e3 \u8bf4\u660e \u83b7\u53d6\u65b9\u5f0f ProcessEngine \u6d41\u7a0b\u5f15\u64ce\u7684\u5165\u53e3\uff0c\u6240\u6709\u670d\u52a1\u90fd\u4ece\u5b83\u83b7\u53d6 &hellip;&nbsp;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-38","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.risun.wang\/index.php?rest_route=\/wp\/v2\/posts\/38","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.risun.wang\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.risun.wang\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.risun.wang\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.risun.wang\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=38"}],"version-history":[{"count":1,"href":"https:\/\/blog.risun.wang\/index.php?rest_route=\/wp\/v2\/posts\/38\/revisions"}],"predecessor-version":[{"id":39,"href":"https:\/\/blog.risun.wang\/index.php?rest_route=\/wp\/v2\/posts\/38\/revisions\/39"}],"wp:attachment":[{"href":"https:\/\/blog.risun.wang\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=38"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.risun.wang\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=38"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.risun.wang\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=38"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}