Hi,
I'm trying to update some customfields with values from my database in a post-function when the issue is created. I´m create the script reading this docs:
The script executes fine, and the debug shows the values. The problem is that the issue is not updated in the jira DB.
I tried to put the script function as the first step but I get the following error when I try to create an issue:
"Error creating issue: Error occurred while creating issue. This could be due to a plugin being incompatible with this version of JIRA. For more details please consult the logs, and see: http://confluence.atlassian.com/x/3McB"
I'm using JIRA 6.4.9. Many thanks!
import java.sql.Connection
MutableIssue issue = issue
def delegator = (DelegatorInterface) ComponentAccessor.getComponent(DelegatorInterface)
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def userUtil = ComponentAccessor.getUserUtil()
String helperName = delegator.getGroupHelperName("default")
//Obtengo el valor del usuario seleccionado
def userCf = customFieldManager.getCustomFieldObjectByName("Solicitante")
def userKey = issue.getCustomFieldValue(userCf).getKey()
def sqlStmt = """
select dp.id_empleado, rc.id_empleado_sap, dl.id_centro_costo, dl.position_class, trunc((sysdate-dp.fec_nacimiento)/365) edad, dp.cuil
from mss_usuarios us
, mss_relaciones_claves_empl rc
, mss_datos_personales dp
, mss_datos_laborales dl
where us.id_sociedad_empleado = rc.id_sociedad
and us.id_empleado = rc.id_empleado
and rc.id_sociedad_m4 = dp.id_sociedad
and rc.id_empleado_m4 = dp.id_empleado
and rc.id_sociedad_m4 = dl.id_sociedad
and rc.id_empleado_m4 = dl.id_empleado
and us.id_usuario_Ad = '""" + (userKey.toString()).toUpperCase() + """'"""
Connection conn = ConnectionFactory.getConnection(helperName)
Sql sql = new Sql(conn)
try {
StringBuffer sb = new StringBuffer()
def textCf
def textIDEmpl
sql.eachRow(sqlStmt) {
textCf = customFieldManager.getCustomFieldObjectByName("ID Empleado")
textIDEmpl = it.id_empleado
issue.setCustomFieldValue(textCf, textIDEmpl)
textCf = customFieldManager.getCustomFieldObjectByName("ID SAP")
issue.setCustomFieldValue(textCf, it.id_empleado_sap)
textCf = customFieldManager.getCustomFieldObjectByName("Centro de Costos")
issue.setCustomFieldValue(textCf, it.id_centro_costo)
textCf = customFieldManager.getCustomFieldObjectByName("CAT")
issue.setCustomFieldValue(textCf, it.position_class)
textCf = customFieldManager.getCustomFieldObjectByName("Edad")
issue.setCustomFieldValue(textCf, it.edad)
textCf = customFieldManager.getCustomFieldObjectByName("CUIL")
issue.setCustomFieldValue(textCf, it.cuil)
sb << "${issue.getKey()}\t${textIDEmpl}\t${it.id_empleado_sap}\t${it.id_centro_costo}\t${it.position_class}\t${it.edad}\t${it.cuil}\n"
}
log.debug sb.toString()
}
finally {
sql.close()
}
Hello @Federico Scheu
It seems you are using jira 6.X version and updateIssue method needs not ApplicationUser object, but crowduser.
Try this
import com.atlassian.jira.component.ComponentAccessor
import groovy.sql.Sql
import org.ofbiz.core.entity.ConnectionFactory
import org.ofbiz.core.entity.DelegatorInterface
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.event.type.EventDispatchOption;
import java.sql.Connection
MutableIssue issue = issue
def delegator = (DelegatorInterface) ComponentAccessor.getComponent(DelegatorInterface)
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def issueManager = ComponentAccessor.getIssueManager()
def userUtil = ComponentAccessor.getUserUtil()
String helperName = delegator.getGroupHelperName("default")
//Obtengo el valor del usuario seleccionado
def userCf = customFieldManager.getCustomFieldObjectByName("Solicitante")
def userKey = issue.getCustomFieldValue(userCf).getKey()
def sqlStmt = """
select dp.id_empleado, rc.id_empleado_sap, dl.id_centro_costo, dl.position_class, trunc((sysdate-dp.fec_nacimiento)/365) edad, dp.cuil
from mss_usuarios us
, mss_relaciones_claves_empl rc
, mss_datos_personales dp
, mss_datos_laborales dl
where us.id_sociedad_empleado = rc.id_sociedad
and us.id_empleado = rc.id_empleado
and rc.id_sociedad_m4 = dp.id_sociedad
and rc.id_empleado_m4 = dp.id_empleado
and rc.id_sociedad_m4 = dl.id_sociedad
and rc.id_empleado_m4 = dl.id_empleado
and us.id_usuario_Ad = '""" + (userKey.toString()).toUpperCase() + """'"""
Connection conn = ConnectionFactory.getConnection(helperName)
Sql sql = new Sql(conn)
try {
StringBuffer sb = new StringBuffer()
def textCf
def textIDEmpl
sql.eachRow(sqlStmt) {
textCf = customFieldManager.getCustomFieldObjectByName("ID Empleado")
textIDEmpl = it.id_empleado
issue.setCustomFieldValue(textCf, textIDEmpl)
textCf = customFieldManager.getCustomFieldObjectByName("ID SAP")
issue.setCustomFieldValue(textCf, it.id_empleado_sap)
textCf = customFieldManager.getCustomFieldObjectByName("Centro de Costos")
issue.setCustomFieldValue(textCf, it.id_centro_costo)
textCf = customFieldManager.getCustomFieldObjectByName("CAT")
issue.setCustomFieldValue(textCf, it.position_class)
textCf = customFieldManager.getCustomFieldObjectByName("Edad")
issue.setCustomFieldValue(textCf, it.edad)
textCf = customFieldManager.getCustomFieldObjectByName("CUIL")
issue.setCustomFieldValue(textCf, it.cuil)
sb << "${issue.getKey()}\t${textIDEmpl}\t${it.id_empleado_sap}\t${it.id_centro_costo}\t${it.position_class}\t${it.edad}\t${it.cuil}\n"
}
Issue issue2 = issueManager.updateIssue(ComponentAccessor.getJiraAuthenticationContext().getUser().getDirectoryUser(), issue,EventDispatchOption.ISSUE_UPDATED,true);
log.debug sb.toString()
}
finally {
sql.close()
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I try to modify the script to use the IssueManager and updateIssue method but now I get the next error:
2018-07-11 18:49:26,460 ERROR [workflow.ScriptWorkflowFunction]: ************************************************************************************* 2018-07-11 18:49:26,460 ERROR [workflow.ScriptWorkflowFunction]: Script function failed on issue: AUT-97, actionId: 1, file: <inline script> groovy.lang.MissingMethodException: No signature of method: com.atlassian.jira.issue.managers.DefaultIssueManager.updateIssue() is applicable for argument types: (com.atlassian.jira.user.DelegatingApplicationUser, com.atlassian.jira.issue.IssueImpl, com.atlassian.jira.event.type.EventDispatchOption$EventDispatchOptionImpl, java.lang.Boolean) values: [BAISCF(baiscf), AUT-97, com.atlassian.jira.event.type.EventDispatchOption$EventDispatchOptionImpl@b5c4e32, ...] Possible solutions: updateIssue(com.atlassian.crowd.embedded.api.User, com.atlassian.jira.issue.MutableIssue, com.atlassian.jira.event.type.EventDispatchOption, boolean), updateIssue(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.MutableIssue, com.atlassian.jira.issue.UpdateIssueRequest) at Script206.run(Script206.groovy:68)
This is the code now:
import com.atlassian.jira.component.ComponentAccessor
import groovy.sql.Sql
import org.ofbiz.core.entity.ConnectionFactory
import org.ofbiz.core.entity.DelegatorInterface
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.event.type.EventDispatchOption;
import java.sql.Connection
MutableIssue issue = issue
def delegator = (DelegatorInterface) ComponentAccessor.getComponent(DelegatorInterface)
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def issueManager = ComponentAccessor.getIssueManager()
def userUtil = ComponentAccessor.getUserUtil()
String helperName = delegator.getGroupHelperName("default")
//Obtengo el valor del usuario seleccionado
def userCf = customFieldManager.getCustomFieldObjectByName("Solicitante")
def userKey = issue.getCustomFieldValue(userCf).getKey()
def sqlStmt = """
select dp.id_empleado, rc.id_empleado_sap, dl.id_centro_costo, dl.position_class, trunc((sysdate-dp.fec_nacimiento)/365) edad, dp.cuil
from mss_usuarios us
, mss_relaciones_claves_empl rc
, mss_datos_personales dp
, mss_datos_laborales dl
where us.id_sociedad_empleado = rc.id_sociedad
and us.id_empleado = rc.id_empleado
and rc.id_sociedad_m4 = dp.id_sociedad
and rc.id_empleado_m4 = dp.id_empleado
and rc.id_sociedad_m4 = dl.id_sociedad
and rc.id_empleado_m4 = dl.id_empleado
and us.id_usuario_Ad = '""" + (userKey.toString()).toUpperCase() + """'"""
Connection conn = ConnectionFactory.getConnection(helperName)
Sql sql = new Sql(conn)
try {
StringBuffer sb = new StringBuffer()
def textCf
def textIDEmpl
sql.eachRow(sqlStmt) {
textCf = customFieldManager.getCustomFieldObjectByName("ID Empleado")
textIDEmpl = it.id_empleado
issue.setCustomFieldValue(textCf, textIDEmpl)
textCf = customFieldManager.getCustomFieldObjectByName("ID SAP")
issue.setCustomFieldValue(textCf, it.id_empleado_sap)
textCf = customFieldManager.getCustomFieldObjectByName("Centro de Costos")
issue.setCustomFieldValue(textCf, it.id_centro_costo)
textCf = customFieldManager.getCustomFieldObjectByName("CAT")
issue.setCustomFieldValue(textCf, it.position_class)
textCf = customFieldManager.getCustomFieldObjectByName("Edad")
issue.setCustomFieldValue(textCf, it.edad)
textCf = customFieldManager.getCustomFieldObjectByName("CUIL")
issue.setCustomFieldValue(textCf, it.cuil)
sb << "${issue.getKey()}\t${textIDEmpl}\t${it.id_empleado_sap}\t${it.id_centro_costo}\t${it.position_class}\t${it.edad}\t${it.cuil}\n"
}
Issue issue2 = issueManager.updateIssue(ComponentAccessor.getJiraAuthenticationContext().getUser(),issue,EventDispatchOption.ISSUE_UPDATED,true);
log.debug sb.toString()
}
finally {
sql.close()
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.