Ich würde ich gerne wissen,
ob die Callouts in metasfresh genau so funktionieren wie in adempiere?.
Wenn nein, wie und wo sind die Unterschiede? Wo gibt es eine Doku?
Hintergrund, der adempiere-Kunde nutzt derzeit groovy Callouts,
um aus einem Auftrag Informationen für COM-Komponenten (excel,outlook) zu übertragen.
Beispiel für ein Callout auf mierp:
Schnittstelle AD-excel (wg Datenblatt (excel) mit Endkundendaten), wurde in AD implementiert.
Testweise habe ich den Callout in metasfresh definiert:
- an Spalte
POReference
, TabelleC_Order
- Calssname =
@script:groovy:CalloutSmartEndCustomerDataExcel
- und in Rule das skript
- eventtype ist
C
(Callout)
Für den Test habe ich das skript als “HalloWorld” implementiert, das das original mit der excel-Schnittstelle sicher schief gehen würde.
Das Ergebnis im Log deutet darauf hin, dass die groovy engine im metasfresg nicht aktiv ist:
ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider com.sun.script.groovy.GroovyScriptEngineFactory not found
ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider com.sun.script.jython.JythonScriptEngineFactory not found
2016-11-24 12:41:31.592 WARN 12176 --- [pool-3-thread-1] org.compiere.model.GridTab : java.lang.NullPointerException
org.adempiere.ad.callout.exceptions.CalloutExecutionException: java.lang.NullPointerException
at org.adempiere.ad.callout.exceptions.CalloutExecutionException.of(CalloutExecutionException.java:28)
at org.adempiere.ad.callout.api.impl.CalloutExecutor.execute(CalloutExecutor.java:296)
at org.adempiere.ad.callout.api.impl.CalloutExecutor.execute(CalloutExecutor.java:118)
at org.compiere.model.GridTab.processCallout(GridTab.java:3347)
at org.compiere.model.GridTab.dataNew(GridTab.java:1529)
at org.compiere.apps.APanel.stateChanged0(APanel.java:1773)
at org.compiere.apps.APanel.stateChanged(APanel.java:1585)
at javax.swing.JTabbedPane.fireStateChanged(JTabbedPane.java:416)
at javax.swing.JTabbedPane$ModelListener.stateChanged(JTabbedPane.java:270)
at javax.swing.DefaultSingleSelectionModel.fireStateChanged(DefaultSingleSelectionModel.java:132)
at javax.swing.DefaultSingleSelectionModel.setSelectedIndex(DefaultSingleSelectionModel.java:67)
at javax.swing.JTabbedPane.setSelectedIndexImpl(JTabbedPane.java:616)
at javax.swing.JTabbedPane.setSelectedIndex(JTabbedPane.java:591)
at org.compiere.grid.VTabbedPane.setSelectedIndex(VTabbedPane.java:338)
at javax.swing.JTabbedPane.insertTab(JTabbedPane.java:731)
at org.compiere.swing.CTabbedPane.insertTab(CTabbedPane.java:200)
at javax.swing.JTabbedPane.addTab(JTabbedPane.java:767)
at org.compiere.grid.VTabbedPane.addTab(VTabbedPane.java:103)
at org.compiere.apps.APanel.initPanel(APanel.java:1032)
at org.compiere.apps.AWindow.initWindow(AWindow.java:98)
at org.adempiere.ui.api.impl.WindowBL.openWindow(WindowBL.java:79)
at org.compiere.apps.AMenuStartItem.startWindow(AMenuStartItem.java:314)
at org.compiere.apps.AMenuStartItem.doInBackground(AMenuStartItem.java:191)
at org.compiere.apps.AMenuStartItem.doInBackground(AMenuStartItem.java:1)
at javax.swing.SwingWorker$1.call(SwingWorker.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at javax.swing.SwingWorker.run(SwingWorker.java:334)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException: null
at org.compiere.model.MRule.setContext(MRule.java:260)
at org.adempiere.ad.callout.api.impl.RuleCalloutInstance.execute(RuleCalloutInstance.java:150)
at org.adempiere.ad.callout.api.impl.CalloutExecutor.execute(CalloutExecutor.java:261)
... 28 common frames omitted