返回 Skill 列表
extension
分类: 开发与工程无需 API Key

"idempiere-2pack"

分析、设计和操作iDempiere中的2Pack包(打包/解包):AD_Package_Exp_Detail类型,OSGi处理器,延迟导入,自动激活器(Adempiere/Version2Pack/Incremental),从文件夹进行打包,故障排除以及安全风险。在涉及字典/数据传输或通过插件自动安装时使用。

person作者: jakexiaohubgithub

iDempiere 2Pack (Pack In/Out)

Objetivo

Resolver cambios basados en 2Pack de forma repetible y segura:

  • exportar (Pack Out) diccionario/datos,
  • importar (Pack In) manual o automatico,
  • diagnosticar fallas de handlers, SQL, referencias UUID/ID y orden de instalacion,
  • reducir riesgos operativos (scripts ejecutables, DDL, locks, reintentos),
  • desarrollar paquetes con fuentes versionadas y scripts de consolidacion.

Cuando usar esta skill

  • Requerimientos de migracion funcional por 2Pack.
  • Plugins que instalan 2Pack.zip o 2Pack_*.zip al arrancar.
  • Ajustes de AD_Package_Exp / AD_Package_Exp_Detail.
  • Errores en AD_Package_Imp*, elementos unresolved/deferred o conflictos de tenant.
  • Automatizacion de packin desde carpetas (server startup o proceso).
  • Desarrollo de nuevas versiones de 2Pack con el workflow COMIT SRL.

Limites y coordinacion

  • Si el trabajo es mayormente DDL/diccionario SQL, coordinar con $idempiere-db.
  • Si el trabajo es bundle OSGi/feature/update-site, coordinar con $idempiere-plugin-development.
  • Esta skill cubre la capa funcional/runtime de 2Pack (flujo, handlers, activators, operacion).

Flujo recomendado

  1. Clasificar escenario: manual packin, embedded plugin packin, o external folder packin.
  2. Definir tipo(s) de detalle (Data, DataSingle, SQL, SQM, SH, SCJ, etc.) y orden.
  3. Verificar handler real y prerequisitos (tabla, referencias, tenant, UUID).
  4. Ejecutar/importar y validar estado (Completed successfully, Completed - unresolved, Import Failed).
  5. Revisar trazas en AD_Package_Imp_Detail + notificador y ajustar idempotencia/versionado.
  6. Para automaticos: validar naming/version locks/retries y no-reproceso.

Workflow de desarrollo COMIT SRL

El equipo COMIT SRL mantiene un flujo estandarizado para desarrollar 2Pack en plugins.

Estructura de fuentes versionadas

<plugin>/
  packages/
    system-<version>/
      dict/PackOut.xml       # fuente versionada principal
      doc/*Doc.xml           # documentacion del paquete
      sql/db_structure.sql   # DDL consolidado instalable
      incoming/              # bandeja de entrada (dev)
        functional/          # exports intermedios
        migration-scripts/   # scripts de migracion
        translations/        # traducciones
      .local/processed/      # historial local (no versionado)
  META-INF/
    2Pack_<version>.zip      # artefacto runtime (derivado, no versionado)
  utils_dev/
    2pack/                   # scripts de desarrollo

Scripts de desarrollo (utils_dev/2pack/)

| Script | Proposito | |--------|-----------| | init_2pack_version.sh | Crear estructura para nueva version | | sync_sqlmandatory_from_sql.sh | Inyectar DDL al PackOut.xml | | sync_2pack_from_packages.sh | Regenerar zips en META-INF/ | | consolidate_incoming_packouts.sh | Absorber exports de incoming/functional/ o translations/ | | consolidate_incoming_migration_scripts.sh | Absorber scripts de incoming/migration-scripts/ |

Para repos con multiples plugins (ej: comit-idempiere-lar), los scripts reciben el plugin como primer argumento (core, withholdings).

Criterio de transporte segun tipo de cambio

| Tipo de cambio | Artefacto principal | Justificacion | |----------------|---------------------|---------------| | Tabla/dominio nuevo del plugin | 2Pack funcional | Objetos nacen con el plugin, bajo riesgo de colision | | Cambio puntual sobre objeto existente | Migration script | Mayor granularidad, evita arrastrar metadata colateral | | SQL estructural (DDL) | sql/db_structure.sql + SQLMandatory | Trazabilidad clara del DDL + instalacion desde cero | | Traducciones | 2Pack de traducciones consolidado | iDempiere no incorpora *_Trl suficientemente en migration scripts |

Secuencia de consolidacion recomendada

  1. sync_sqlmandatory_from_sql.sh - inyectar DDL
  2. consolidate_incoming_packouts.sh ... functional - metadata funcional
  3. consolidate_incoming_migration_scripts.sh - scripts como SQLStatement
  4. consolidate_incoming_packouts.sh ... translations - traducciones
  5. Revisar PackOut.xml manualmente
  6. sync_2pack_from_packages.sh - regenerar zips runtime

Politica de SQLMandatory

  • SQLMandatory se reserva para DDL indispensable de instalacion.
  • La fuente primaria del DDL es sql/db_structure.sql, no el PackOut.xml.
  • Cualquier alta o modificacion de SQLMandatory requiere revision explicita.
  • Para diccionario (tablas, columnas, ventanas), preferir elementos nativos de PIPO.

Referencias

  • Mapa tecnico completo: references/core-map.md.
  • Playbook operativo y troubleshooting: references/operating-playbook.md.
  • Diferencias wiki vs core y caveats: references/wiki-vs-core.md.
  • Workflow de desarrollo detallado: references/2pack-dev-workflow.md.
  • Lecciones industriales (deadlocks, REST Views, elementos): references/industrial-2pack-guide.md.