project-module-architecture
npx skills add https://github.com/tencentblueking/bk-ci --skill project-module-architecture
Agent 安装分布
Skill 文档
Project 项ç®ç®¡çæ¨¡åæ¶ææå
模åå®ä½: Project æ¯ BK-CI çåºç¡æ¨¡åï¼è´è´£é¡¹ç®çå建ã管çãæéãé ç½®çåè½ãææå ¶ä»å¾®æå¡é½ä¾èµ Project 模åï¼é¡¹ç®æ¯ BK-CI ä¸èµæºé离çæå°åä½ã
ä¸ãæ¨¡åæ´ä½ç»æ
1.1 忍¡ååå
src/backend/ci/core/project/
âââ api-project/ # API æ¥å£å®ä¹å±
â âââ src/main/kotlin/com/tencent/devops/project/
â âââ api/
â â âââ op/ # è¿ç»´æ¥å£ï¼7æä»¶ï¼
â â âââ open/ # 弿¾æ¥å£
â â âââ service/ # æå¡é´è°ç¨æ¥å£ï¼10æä»¶ï¼
â â âââ user/ # ç¨æ·æ¥å£ï¼6æä»¶ï¼
â âââ constant/ # 常éå®ä¹
â âââ pojo/ # æ°æ®å¯¹è±¡ï¼60+ æä»¶ï¼
â âââ code/ # æ¶æ¯ç
â âââ enums/ # æä¸¾å®ä¹
â
âââ biz-project/ # ä¸å¡é»è¾å±
â âââ src/main/kotlin/com/tencent/devops/project/
â âââ config/ # é
置类
â âââ dao/ # æ°æ®è®¿é®å±ï¼20+ æä»¶ï¼
â âââ dispatch/ # äºä»¶åå
â âââ jmx/ # JMX çæ§
â âââ listener/ # äºä»¶çå¬
â âââ pojo/ # å
鍿°æ®å¯¹è±¡
â âââ resources/ # API å®ç°ï¼25+ æä»¶ï¼
â âââ service/ # ä¸å¡æå¡
â â âââ impl/ # æå¡å®ç°ï¼15+ æä»¶ï¼
â â âââ permission/ # æéæå¡
â âââ util/ # å·¥å
·ç±»
â
âââ api-project-sample/ # ç¤ºä¾ APIï¼æ©å±ç¨ï¼
âââ biz-project-sample/ # 示ä¾ä¸å¡ï¼æ©å±ç¨ï¼
âââ boot-project/ # Spring Boot å¯å¨æ¨¡å
âââ model-project/ # æ°æ®æ¨¡åå±ï¼JOOQ çæï¼
1.2 模åèè´£ç©éµ
| 模å | èè´£ | æ ¸å¿ç±»æ°é |
|---|---|---|
| api-project | REST API æ¥å£å®ä¹ãPOJO | 100+ |
| biz-project | ä¸å¡é»è¾ãAPI å®ç° | 120+ |
| model-project | JOOQ æ°æ®æ¨¡å | èªå¨çæ |
äºãæ ¸å¿æ¦å¿µ
2.1 项ç®å®ä½æ¨¡å
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â BK-CI é¡¹ç®æ¨¡å â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â é¡¹ç® (Project) â â
â â âââââââââââââââ âââââââââââââââ âââââââââââââââââââââââââââ â â
â â â PROJECT_ID â â project_nameâ â english_name â â â
â â â (UUID,ä¸ç¨) â â (项ç®åç§°) â â (çæ£çprojectId!) â â â
â â âââââââââââââââ âââââââââââââââ âââââââââââââââââââââââââââ â â
â â â â
â â â ï¸ æ³¨æï¼å
¶ä»æ¨¡å说ç projectId å°±æ¯ english_name â â
â â â â
â â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â â
â â â ç»ç»æ¶æä¿¡æ¯ â â â
â â â bgId/bgName | deptId/deptName | centerId/centerName â â â
â â â businessLineId/businessLineName â â â
â â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â â
â â â â
â â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â â
â â â 项ç®å±æ§ (Properties) â â â
â â â pipelineDialectType | pipelineAsCodeSettings â â â
â â â pipelineLimit | subjectScopes â â â
â â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â å
³èèµæº â â
â â âââââââââââ âââââââââââ âââââââââââ âââââââââââ â â
â â âpipeline â â repo â â ticket â â env â ... â â
â â âââââââââââ âââââââââââ âââââââââââ âââââââââââ â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
2.2 é¡¹ç®æ ¸å¿å段
| åæ®µ | ç±»å | 说æ |
|---|---|---|
ID |
Long | æ°æ®åºèªå¢ä¸»é® |
PROJECT_ID |
String | 项ç®å¯ä¸æ è¯ï¼UUIDï¼ä» å é¨ä½¿ç¨ï¼å ¶ä»æ¨¡åä¸ä½¿ç¨æ¤åæ®µï¼ |
project_name |
String | 项ç®ä¸æåç§°ï¼å¯ä¸ï¼ |
english_name |
String | 项ç®è±ææ è¯ï¼å¯ä¸ï¼è¿ææ¯å ¶ä»æ¨¡åæè¯´ç projectIdï¼ |
creator |
String | å建è |
CHANNEL |
String | é¡¹ç®æ¸ éï¼BS/CODECC/AMçï¼ |
approval_status |
Int | 审æ¹ç¶æ |
enabled |
Boolean | æ¯å¦å¯ç¨ |
is_secrecy |
Boolean | æ¯å¦ä¿å¯é¡¹ç® |
properties |
JSON | é¡¹ç®æ©å±å±æ§ |
subject_scopes |
JSON | 坿æäººåèå´ |
â ï¸ éè¦è¯´æï¼projectId ççæ£å«ä¹
å¨
T_PROJECT表ä¸ï¼PROJECT_IDåæ®µæ¯ä¸ä¸ª UUIDï¼ä½è¿ä¸ªå段å 乿²¡æå®é ç¨éã对äºå ¶ä»ææå¾®æå¡ï¼processãauthãrepositoryãartifactory çï¼æ¥è¯´ï¼å®ä»¬æ¥å£ä¸ç
projectIdåæ°å®é ä¸æçæ¯T_PROJECT.english_nameåæ®µï¼ä¾å¦ï¼
ServiceProcessResource.list(projectId)â è¿éçprojectIdæ¯english_nameServiceAuthResource.validatePermission(projectId)â è¿éçprojectId乿¯english_name- URL è·¯å¾
/api/user/projects/{projectId}/pipelinesâ è¿éç{projectId}æ¯english_nameå½å约å®ï¼
- å¨ä»£ç ä¸ï¼
projectId/projectCode/englishName齿åä¸ä¸ªä¸è¥¿ï¼T_PROJECT.english_nameT_PROJECT.PROJECT_IDï¼UUIDï¼åºæ¬ä¸ä½¿ç¨ï¼å¯ä»¥å¿½ç¥
2.3 é¡¹ç®æ¸ éç±»å
enum class ProjectChannelCode(val code: String) {
BS("BS"), // èç¾å¹³å°
CODECC("CODECC"), // ä»£ç æ£æ¥
AM("AM"), // åºç¨å¸åº
GCLOUD("GCLOUD"), // 游æäº
GITCI("GITCI"), // GitCI
STREAM("STREAM"), // Stream
PAAS("PAAS"), // PaaS
}
2.4 项ç®å®¡æ¹ç¶æ
enum class ProjectApproveStatus(val status: Int) {
CREATE_PENDING(1), // å建审æ¹ä¸
CREATE_APPROVED(2), // å建已éè¿
CREATE_REJECTED(3), // å建已驳å
UPDATE_PENDING(4), // æ´æ°å®¡æ¹ä¸
UPDATE_APPROVED(5), // æ´æ°å·²éè¿
UPDATE_REJECTED(6), // æ´æ°å·²é©³å
}
ä¸ãå屿¶æå¾
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â 请æ±å
¥å£ â
â HTTP Request / æå¡é´è°ç¨ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â
â¼
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â API å± (api-project) â
â ââââââââââââââââ ââââââââââââââââ ââââââââââââââââ ââââââââââââââââ â
â âUserProject â âServiceProjectâ âOPProject â âOpenProject â â
â âResource â âResource â âResource â âResource â â
â â(ç¨æ·é¡¹ç®ç®¡ç) â â(æå¡é´è°ç¨) â â(è¿ç»´ç®¡ç) â â(弿¾æ¥å£) â â
â ââââââââââââââââ ââââââââââââââââ ââââââââââââââââ ââââââââââââââââ â
â ââââââââââââââââ ââââââââââââââââ ââââââââââââââââ â
â âServiceProjectâ âOPDataSource â âOPSharding â â
â âTagResource â âResource â âRoutingRule â â
â â(é¡¹ç®æ ç¾) â â(æ°æ®æºç®¡ç) â â(åçè·¯ç±) â â
â ââââââââââââââââ ââââââââââââââââ ââââââââââââââââ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â
â¼
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â ä¸å¡å± (biz-project) â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â ResourceImpl å®ç°å± â â
â â UserProjectResourceImpl | ServiceProjectResourceImpl | ... â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â Service å± â â
â â AbsProjectServiceImpl - é¡¹ç®æ ¸å¿æå¡ï¼77KBï¼æå¤§ï¼ â â
â â ProjectApprovalService - 项ç®å®¡æ¹æå¡ â â
â â ProjectTagService - é¡¹ç®æ ç¾æå¡ â â
â â ProjectPermissionService - é¡¹ç®æéæå¡ â â
â â ShardingRoutingRuleService - åçè·¯ç±æå¡ â â
â â UserLocaleService - ç¨æ·è¯è¨æå¡ â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â Permission å± â â
â â ProjectPermissionServiceImpl - é»è®¤æéå®ç° â â
â â RbacProjectPermissionService - RBAC æéå®ç° â â
â â StreamProjectPermissionServiceImpl - Stream æéå®ç° â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â
â¼
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â DAO å± (biz-project/dao) â
â ProjectDao (42KB) | ProjectApprovalDao | ShardingRoutingRuleDao â
â UserDao | ServiceDao | GrayTestDao | NoticeDao | ... â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â
â¼
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â æ°æ®å± (model-project + MySQL) â
â æ°æ®åºï¼devops_ci_projectï¼å
± 15+ å¼ è¡¨ï¼ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
åãæ ¸å¿æ°æ®åºè¡¨
4.1 é¡¹ç®æ ¸å¿è¡¨
| 表å | 说æ | æ ¸å¿å段 |
|---|---|---|
T_PROJECT |
项ç®ä¿¡æ¯è¡¨ | ID, PROJECT_ID, project_name, english_name, creator, CHANNEL, approval_status, enabled, properties |
T_PROJECT_APPROVAL |
项ç®å®¡æ¹è¡¨ | ID, PROJECT_ID, APPLICANT, APPROVAL_STATUS, APPROVER, TIPS_STATUS |
T_PROJECT_UPDATE_HISTORY |
é¡¹ç®æ´æ°åå² | ID, PROJECT_ID, BEFORE_INFO, AFTER_INFO, OPERATOR |
T_PROJECT_LABEL |
é¡¹ç®æ ç¾å®ä¹ | ID, LABEL_NAME, CREATE_USER |
T_PROJECT_LABEL_REL |
é¡¹ç®æ ç¾å ³è | ID, PROJECT_ID, LABEL_ID |
4.2 ç¨æ·ç¸å ³è¡¨
| 表å | 说æ | æ ¸å¿å段 |
|---|---|---|
T_USER |
ç¨æ·ä¿¡æ¯è¡¨ | USER_ID, NAME, BG_ID, DEPT_ID, CENTER_ID, USER_TYPE |
T_USER_DAILY_LOGIN |
ç¨æ·ç»å½è®°å½ | USER_ID, DATE, LOGIN_TIME, OS, IP |
T_USER_LOCALE |
ç¨æ·è¯è¨è®¾ç½® | USER_ID, LANGUAGE |
T_FAVORITE |
ç¨æ·æ¶è | service_id, username |
4.3 æå¡ä¸é 置表
| 表å | 说æ | æ ¸å¿å段 |
|---|---|---|
T_SERVICE |
æå¡ä¿¡æ¯è¡¨ | id, name, english_name, link, status |
T_SERVICE_TYPE |
æå¡ç±»å | id, title, english_title, weight |
T_ACTIVITY |
æ´»å¨ä¿¡æ¯ | ID, TYPE, NAME, LINK, STATUS |
T_NOTICE |
å ¬åä¿¡æ¯ | ID, NOTICE_TITLE, EFFECT_DATE, INVALID_DATE |
4.4 åçç¸å ³è¡¨
| 表å | 说æ | æ ¸å¿å段 |
|---|---|---|
T_SHARDING_ROUTING_RULE |
åçè·¯ç±è§å | ID, CLUSTER_NAME, MODULE_CODE, DATA_SOURCE_NAME, TABLE_NAME, ROUTING_NAME, ROUTING_RULE |
T_TABLE_SHARDING_CONFIG |
表åçé ç½® | ID, CLUSTER_NAME, MODULE_CODE, TABLE_NAME, SHARDING_NUM |
T_DATA_SOURCE |
æ°æ®æºé ç½® | ID, CLUSTER_NAME, MODULE_CODE, DATA_SOURCE_NAME, DS_URL |
äºãæ ¸å¿ç±»éæ¥
5.1 API æ¥å£å±
| ç±»å | è·¯å¾åç¼ | èè´£ |
|---|---|---|
UserProjectResource |
/user/projects |
ç¨æ·é¡¹ç®ç®¡çï¼å建/æ´æ°/æ¥è¯¢ï¼ |
ServiceProjectResource |
/service/projects |
æå¡é´é¡¹ç®æ¥è¯¢ |
OPProjectResource |
/op/projects |
è¿ç»´é¡¹ç®ç®¡ç |
OPProjectServiceResource |
/op/project/service |
è¿ç»´æå¡ç®¡ç |
OpenProjectResource |
/open/projects |
弿¾é¡¹ç®æ¥å£ |
ServiceProjectTagResource |
/service/project/tags |
é¡¹ç®æ ç¾æå¡ |
ServiceShardingRoutingRuleResource |
/service/sharding/routing/rules |
åçè·¯ç±è§å |
ServiceProjectApprovalResource |
/service/project/approval |
项ç®å®¡æ¹æå¡ |
UserLocaleResource |
/user/locale |
ç¨æ·è¯è¨è®¾ç½® |
5.2 Service å±
| ç±»å | æä»¶å¤§å° | èè´£ |
|---|---|---|
AbsProjectServiceImpl |
77KB | é¡¹ç®æ ¸å¿æå¡ï¼æå¤§ï¼æ½è±¡åºç±»ï¼ |
ProjectApprovalService |
18KB | 项ç®å®¡æ¹æµç¨ |
ProjectTagService |
16KB | é¡¹ç®æ ç¾ç®¡ç |
AbsShardingRoutingRuleServiceImpl |
16KB | åçè·¯ç±è§å |
AbsUserProjectServiceServiceImpl |
19KB | ç¨æ·é¡¹ç®æå¡ |
RbacProjectPermissionService |
10KB | RBAC é¡¹ç®æé |
I18nMessageServiceImpl |
11KB | å½é åæ¶æ¯ |
5.3 DAO å±
| ç±»å | æä»¶å¤§å° | èè´£ |
|---|---|---|
ProjectDao |
42KB | é¡¹ç®æ°æ®è®¿é®ï¼æå¤§ï¼ |
ProjectApprovalDao |
14KB | 项ç®å®¡æ¹æ°æ®è®¿é® |
ServiceDao |
10KB | æå¡æ°æ®è®¿é® |
ShardingRoutingRuleDao |
7KB | åçè·¯ç±æ°æ®è®¿é® |
TableShardingConfigDao |
6KB | 表åçé ç½®æ°æ®è®¿é® |
UserDao |
6KB | ç¨æ·æ°æ®è®¿é® |
å ãæ ¸å¿æµç¨
6.1 项ç®å建æµç¨
ç¨æ·è¯·æ±
â
â¼
UserProjectResource.create()
â
â¼
UserProjectResourceImpl.create()
â
â¼
AbsProjectServiceImpl.create()
â
âââº åæ°æ ¡éª
â âââº æ ¡éªé¡¹ç®åç§°é¿åº¦ï¼2-64å符ï¼
â âââº æ ¡éªè±æåæ ¼å¼ï¼å°å忝+æ°å+ä¸å线ï¼
â âââº æ ¡éªé¡¹ç®å/è±æåå¯ä¸æ§
â
ââ⺠æéæ ¡éª
â ââ⺠projectPermissionService.verifyUserProjectPermission()
â
ââ⺠å建项ç®
â âââº çæ projectId (UUID)
â ââ⺠projectDao.create()
â ââ⺠åé
åçè·¯ç±è§å
â
ââ⺠注åå°æéä¸å¿
â ââ⺠authPermissionApi.createResource()
â
ââ⺠åé项ç®å建äºä»¶
ââ⺠projectDispatcher.dispatch(ProjectCreateBroadCastEvent)
6.2 é¡¹ç®æ¥è¯¢æµç¨
ServiceProjectResource.list()
â
â¼
ServiceProjectResourceImpl.list()
â
â¼
AbsProjectServiceImpl.list()
â
ââ⺠è·åç¨æ·ææéç项ç®å表
â ââ⺠projectPermissionService.getUserProjects()
â
ââ⺠æ¥è¯¢é¡¹ç®è¯¦æ
â ââ⺠projectDao.listByEnglishName()
â
ââ⺠ç»è£
è¿åæ°æ®
ââ⺠ProjectVO
6.3 项ç®å®¡æ¹æµç¨
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â 项ç®å®¡æ¹æµç¨ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â 1. ç¨æ·æäº¤å建/æ´æ°è¯·æ± â
â UserProjectResource.create() / update() â
â â â
â â¼ â
â 2. æ£æ¥æ¯å¦éè¦å®¡æ¹ â
â ProjectApprovalService.checkApprovalRequired() â
â â â
â ââââââââââââââââ´âââââââââââââââ â
â â â â
â â¼ â¼ â
â éè¦å®¡æ¹ ä¸éè¦å®¡æ¹ â
â å建审æ¹å ç´æ¥çæ â
â status=PENDING status=APPROVED â
â â â
â â¼ â
â 3. 审æ¹äººå®¡æ¹ â
â OPProjectResource.approve() â
â â â
â ââââââââââââââââ´âââââââââââââââ â
â â â â
â â¼ â¼ â
â éè¿ é©³å â
â status=APPROVED status=REJECTED â
â 项ç®çæ éç¥ç¨æ· â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
ä¸ãä¸å ¶ä»æ¨¡åçå ³ç³»
7.1 被ä¾èµå ³ç³»
Project æ¨¡åæ¯åºç¡æ¨¡åï¼è¢«ææå ¶ä»å¾®æå¡ä¾èµï¼
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Project 模å被ä¾èµå
³ç³» â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â âââââââââââ âââââââââââ âââââââââââ âââââââââââ â
â â process â â auth â â store â â repo â â
â ââââââ¬âââââ ââââââ¬âââââ ââââââ¬âââââ ââââââ¬âââââ â
â â â â â â
â ââââââââââââââ´âââââââââââââ´âââââââââââââ â
â â â
â â¼ â
â âââââââââââââââââ â
â â project â â
â â (åºç¡æ¨¡å) â â
â âââââââââââââââââ â
â â
â å
¶ä»ä¾èµæ¨¡åï¼ â
â - artifactory, dispatch, environment, ticket â
â - quality, notify, log, openapi, metrics â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
7.2 æå¡é´è°ç¨ç¤ºä¾
// å
¶ä»æå¡è°ç¨ Project æå¡è·å项ç®ä¿¡æ¯
// 注æï¼è¿éç projectId åæ°å®é
æ¯ T_PROJECT.english_name
client.get(ServiceProjectResource::class).get(
userId = userId,
projectId = projectId, // â ï¸ è¿æ¯ english_nameï¼ä¸æ¯ T_PROJECT.PROJECT_ID
accessToken = null
)
// è·åç¨æ·ææéç项ç®å表
client.get(ServiceProjectResource::class).list(
userId = userId,
productIds = null,
channelCodes = null,
sort = null,
page = null,
pageSize = null
)
// å
¸åç URL è·¯å¾ç¤ºä¾ï¼
// GET /api/user/projects/{projectId}/pipelines
// è¿éç {projectId} å°±æ¯ english_nameï¼ä¾å¦ "my-project-001"
å «ã项ç®å±æ§æ©å±
8.1 ProjectProperties ç»æ
data class ProjectProperties(
val pipelineDialectType: PipelineDialectType?, // æµæ°´çº¿æ¹è¨ç±»å
val pipelineAsCodeSettings: PipelineAsCodeSettings?, // PAC 设置
val pipelineLimit: Int?, // æµæ°´çº¿æ°ééå¶
val pluginDetailsDisplayOrder: PluginDetailsDisplayOrder?, // æä»¶è¯¦æ
æ¾ç¤ºé¡ºåº
val pipelineNameFormat: String?, // æµæ°´çº¿å½åæ ¼å¼
val concurrencyQuota: Int? // å¹¶åé
é¢
)
8.2 SubjectScopesï¼å¯ææèå´ï¼
data class SubjectScopeInfo(
val type: SubjectScopeType, // ALL_MEMBER / DEPARTMENT / USER / GROUP
val id: String, // é¨é¨ID / ç¨æ·ID / ç»ID
val name: String // åç§°
)
ä¹ãåçè·¯ç±æºå¶
9.1 åççç¥
Project æ¨¡åæ¯ææ°æ®åºåçï¼ç¨äºå¤§è§æ¨¡é¨ç½²ï¼
// åçè·¯ç±è§ååé
shardingRoutingRuleAssignService.assignShardingRoutingRule(
projectId = projectId,
moduleCodes = listOf(
SystemModuleEnum.PROCESS,
SystemModuleEnum.REPOSITORY,
SystemModuleEnum.DISPATCH
)
)
9.2 è·¯ç±è§åæ¥è¯¢
// è·å项ç®çåçè·¯ç±è§å
client.get(ServiceShardingRoutingRuleResource::class).getShardingRoutingRuleByName(
routingName = projectId,
moduleCode = SystemModuleEnum.PROCESS
)
åãå¼åè§è
10.1 æ°å¢é¡¹ç®å±æ§
- å¨
ProjectProperties䏿·»å åæ®µ - å¨
ProjectVOåProjectCreateInfo䏿·»å 对åºå段 - æ´æ°
ProjectDaoçæ¥è¯¢åæ´æ°æ¹æ³ - å¦é审æ¹ï¼æ´æ°
ProjectApprovalService
10.2 æ°å¢é¡¹ç®æ¸ é
- å¨
ProjectChannelCodeæä¸¾ä¸æ·»å æ¸ é - å¨
T_PROJECT表çCHANNELåæ®µæ¯ææ°å¼ - æ ¹æ®éè¦è°æ´æéæ ¡éªé»è¾
10.3 é¡¹ç®æ¥è¯¢ç¤ºä¾
// æ ¹æ®è±æåæ¥è¯¢é¡¹ç®ï¼englishName å°±æ¯å
¶ä»æ¨¡åæè¯´ç projectIdï¼
val project = projectDao.getByEnglishName(
dslContext = dslContext,
englishName = projectCode // projectCode = projectId = englishName
)
// æ¥è¯¢ç¨æ·ææéç项ç®
val projects = projectPermissionService.getUserProjects(userId)
// å页æ¥è¯¢é¡¹ç®å表
val page = projectDao.list(
dslContext = dslContext,
projectName = searchName,
englishName = null,
enabled = true,
offset = offset,
limit = limit
)
// â ï¸ éè¦ï¼å½å
¶ä»æ¨¡åä¼ å
¥ projectId æ¶ï¼åºè¯¥ç¨ getByEnglishName æ¥è¯¢
// ä¾å¦ process 模åè°ç¨ï¼
// val projectInfo = client.get(ServiceProjectResource::class).get(projectId = "my-project")
// è¿éç "my-project" æ¯ english_name
åä¸ã常è§é®é¢
Q: projectId å englishName çåºå«ï¼ A: â ï¸ è¿æ¯ä¸ä¸ªå¸¸è§ç误解ï¼
T_PROJECT.PROJECT_IDæ¯ä¸ä¸ª UUIDï¼ä½å 乿²¡æå®é ç¨éT_PROJECT.english_nameææ¯çæ£çé¡¹ç®æ è¯- å
¶ä»æææ¨¡åæ¥å£ä¸ç
projectIdåæ°ï¼å®é ä¸é½æ¯english_name - ç®åè®°å¿ï¼
projectId=projectCode=englishName=T_PROJECT.english_name
Q: å¦ä½å¤æé¡¹ç®æ¯å¦å¯ç¨ï¼
A: æ£æ¥ T_PROJECT.enabled åæ®µï¼true 表示å¯ç¨ã
Q: 项ç®å建åå¦ä½éç¥å
¶ä»æå¡ï¼
A: éè¿ ProjectCreateBroadCastEvent äºä»¶å¹¿æï¼å
¶ä»æå¡çå¬è¯¥äºä»¶è¿è¡åå§åã
Q: å¦ä½æ©å±é¡¹ç®å±æ§ï¼
A: å¨ ProjectProperties 䏿·»å åæ®µï¼åå¨å¨ T_PROJECT.properties JSON åæ®µä¸ã
Q: ä¿å¯é¡¹ç®åæ®é项ç®çåºå«ï¼
A: ä¿å¯é¡¹ç®ï¼authSecrecy=trueï¼ææ´ä¸¥æ ¼çæéæ§å¶ï¼åªææç¡®ææçç¨æ·æè½è®¿é®ã
çæ¬: 1.1.0 | æ´æ°æ¥æ: 2025-12-11
æ´æ°è¯´æ:
- v1.1.0: ä¿®æ£ projectId ççæ£å«ä¹è¯´æï¼æç¡®
T_PROJECT.english_nameææ¯å ¶ä»æ¨¡åæè¯´ç projectId